## 9.3.4 [elastic-agent-release-notes-9.3.4]



### Features and enhancements [elastic-agent-9.3.4-features-enhancements]


* Update OTel Collector components to v0.149.0. [#13601](https://github.com/elastic/elastic-agent/pull/13601) 


### Fixes [elastic-agent-9.3.4-fixes]


* Strip Unit.Config from components diagnostic files to prevent secret leakage. [#13338](https://github.com/elastic/elastic-agent/pull/13338) 

  The components-expected and components-actual diagnostic files were leaking
  secrets (API keys, tokens) because Unit.Config contains structpb.Struct fields
  whose protobuf-style YAML nesting (kind/stringvalue/structvalue) prevented the
  standard key-based redaction from finding and redacting secret values. The fix
  strips Unit.Config from the components before serializing to YAML, removing
  the source of the leak while preserving useful debugging metadata like
  component IDs, unit IDs, types and log levels.
  
* Updated k8s example manifests. Added HOSTFS_PROC_PATH environment variable due-to procfs fix in cloud-defend
and mount points required for cloud-defend.
. [#12989](https://github.com/elastic/elastic-agent/pull/12989) 
* Prevent zombie processes when component fails to shutdown. [#13188](https://github.com/elastic/elastic-agent/pull/13188) [#13272](https://github.com/elastic/elastic-agent/issues/13272)
* Persist logging level after agent restart. [#13289](https://github.com/elastic/elastic-agent/pull/13289) 

  Persist logging level on policy change, so it is persisted on agent restarts,
  instead of going back to the default, info level.
* Fix agent stuck in upgrading state after manual rollback. [#13329](https://github.com/elastic/elastic-agent/pull/13329) [#12910](https://github.com/elastic/elastic-agent/issues/12910)
* Fix clean stopping of beats on windows. [#13581](https://github.com/elastic/elastic-agent/pull/13581) 
* Fix OTel runtime monitoring underreporting failed docs on retryable errors. [#13625](https://github.com/elastic/elastic-agent/pull/13625) [#12522](https://github.com/elastic/elastic-agent/issues/12522)

  The OTel runtime monitoring now correctly counts all documents from a failed bulk request towards the `beat.stats.libbeat.output.events.failed` metric. Previously, the document count from bulk requests that failed with a retryable error (such as HTTP 429) was not included in the metric.
  
* Embedded otel extensions no longer overrides ones generated by inputs. [#13639](https://github.com/elastic/elastic-agent/pull/13639) 

