NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
NuGet · #1208 most downloaded on NuGet
Elastic APM for the Elasticsearch .NET clients. See: https://github.com/elastic/apm-agent-dotnet/tree/main/docs
Last release 22 days ago
15 Sep 2026
Ships unpredictably
gaps range from 1 weeks to 9 months
Nearly every release is documented
notes for 54 of 55 stable releases
Nothing withdrawn
no release was ever pulled
6 years old
57 releases · first in 2020
Important The OpenTelemetry Bridge no longer subscribes to activity sources whose names begin with Experimental.. On .NET 9 and later the runtime uses
Important
The OpenTelemetry Bridge no longer subscribes to activity sources whose names begin with Experimental.. On .NET 9 and later the runtime uses that prefix for sources describing connection level work (DNS resolution, socket connect, TLS handshake, HTTP connection setup), and they only emit while a listener is subscribed to them. On .NET 9 and later, transactions which open a new HTTP connection no longer contain DNS lookup, socket connect, TLS client handshake, HTTP connection_setup and HTTP wait_for_connection spans. Applications running on .NET 8 and earlier are unaffected. To restore the previous behavior, set OpenTelemetryBridgeExperimentalSourcesEnabled to true.
The minimum supported MongoDB.Driver version has been raised to 3.9.0. Consumers referencing an earlier version receive a NU1605 build error when upgrading Elastic.Apm.MongoDb to this release. Update your MongoDB.Driver package reference to 3.9.0 or later before upgrading. For more information, check #2804.
The Elastic.Apm package now references System.Diagnostics.DiagnosticSource 8.0.1 on .NET Framework targets (net462 and net472). Classic ASP.NET applications that have hand-edited binding redirects for System.Diagnostics.DiagnosticSource in web.config may need to update those redirects. Visual Studio and the MSBuild GenerateBindingRedirects target can regenerate them automatically.
Full Changelog: v1.34.7...v1.35.0
One column per quarter.
Perf: Replace inefficient LINQ usage in WildcardMatcher by @nkindberg in #2791
Full Changelog: v1.34.6...v1.34.7
Update System.Diagnostics.PerformanceCounter to remove System.Drawing.Common transitive dependency by @stevejgordon in #2783
Full Changelog: v1.34.5...v1.34.6
Diagnostic logs for loaded assemblies and remove dotnet process startup hook file noise by @stevejgordon in #2774
dotnet process startup hook file noise by @stevejgordon in #2774Full Changelog: v1.34.4...v1.34.5
fix: reuse serialization buffer in PayloadSenderV2 to eliminate LOH fragmentation by @nimanikoo in #2770
Full Changelog: v1.34.3...v1.34.4
Improve OTel bridge mapping of newer semcon for databases by @stevejgordon in #2768
Full Changelog: v1.34.2...v1.34.3
Support for auto-instrumentation of Confluent Kafka .NET Client 2.x by @JeremyBessonElastic in #2677
netstandard2.1 target and update DiagnosticSource dependency by @stevejgordon in #2679net8.0 by @stevejgordon in #2745net472 in the profiler zip by @stevejgordon in #2752Full Changelog: v1.34.1...v1.34.2
Remove redundant println from profiler by @stevejgordon in #2662
Full Changelog: v1.34.0...v1.34.1
Update and fix release notes + breaking changes by @stevejgordon in #2645
Full Changelog: v1.33.0...v1.34.0
3.0+. In 3.0, types were moved from MongoDb.Driver.Core into MongoDb.Driver and deprecated types were removed. To avoid type conflicts, consumers usin…
Important
This release bumps the minimum MongoDb.Driver package to 3.0.0 to unblock consumers who wish to use the latest MongoDb versions. 3.0+. In 3.0, types were moved from MongoDb.Driver.Core into MongoDb.Driver and deprecated types were removed. To avoid type conflicts, consumers using verions of MongoDb < 3.0.0 will need to first update MongoDb, before updating to this release of Elastic APM agent.
NullReferenceException by @JTeeuwissen in #2560NullReferenceException on 401 Unauthorized by @monty241 in #2561Full Changelog: v1.32.2...v1.33.0
Nothing published for this version
Remove net 6.0 targets by @stevejgordon in #2498
Full Changelog: v1.30.1...v1.31.0
[float] ===== Breaking changes
{pull}2498[#2498] Remove net 6.0 targets
We no longer ship net6.0 targets as .NET 6 is now out of support. Applications
targetting net6.0 will continue to work, but fall down to the netstandard2.0
target which may not be as optimised. We therefore recommend updating your application
to net8.0 or net9.0 prior to installing 1.31.0 of the Elastic.Apm.* packages.
===== Bug fixes
{pull}2505[#2505] Fixes and enhancements for Azure Functions {pull}2508[#2508] Azure Function service name logic
[float] ===== Features
{pull}2503[#2503] Phase one logger optimisations
[[release-notes-1.30.1]]
Bump the github-actions group with 2 updates by @dependabot in #2459
dotnet format by @stevejgordon in #2483Full Changelog: v1.30.0...v1.30.1
===== Bug fixes {pull}2471[#2471] Remove netcoreapp2.0 from Elastic.Apm.Profiler.Managed.Loader {pull}2474[#2474] Fix span linking for Azure ServiceBus {pull}2482[#2482] Support K8S_ATTACH environment variable for activation
[[release-notes-1.30.0]]
{pull}2455[#2455] Improve OTel bridge compatibility with existing Azure instrumentation {pull}2457[#2457] Revert skipping of System.Web to fix profile
===== Bug fixes
{pull}2455[#2455] Improve OTel bridge compatibility with existing Azure instrumentation {pull}2457[#2457] Revert skipping of System.Web to fix profiler-based installation {pull}2461[#2461] Limit attribute count and truncate values in ElasticActivityListener {pull}2460[#2460] Add IntakeResponse deserialization for detailed error logging
[[release-notes-1.29.0]]
This release includes a breaking change in how we parse and send transaction cookies. In 1.26.0, we introduced improved cookie redaction based on the…
This release includes a breaking change in how we parse and send transaction cookies. In 1.26.0, we
introduced improved cookie redaction based on the SanitizeFieldNames configuration. To implement this,
we extracted each cookie from the Cookie header, storing them in a cookie dictionary on the transaction request data.
We have identified a problem with the storage of cookies that include period characters due to the mapping of such data
when stored in the APM data stream. This behaviour can lead to lost transactions on requests which include such cookies.
This is common in ASP.NET Core due to the default cookie names used for sessions, authentication, etc.
In this release, we no longer parse out individual cookies, and the cookie Dictionary has been removed from the
data model. This means that cookies will no longer be indexed individually. However, we have ensured that we
retain the primary reason for the earlier change, which was to redact the values of sensitive cookies. Any cookies with
a name matching the SanitizeFieldNames patterns will be redacted in the value of the Cookie header
we store.
For most consumers, we expect the impact to be minimal. However, if you were relying on the parsed cookie
fields, adjustments will be necessary to work with the Cookie header value instead.
===== Breaking changes
{pull}2444[#2444] No longer parse request cookies, but ensure they are still redacted in the Cookie header string
[[release-notes-1.28.6]]
{pull}2431[#2431] Hard exclude several system processes from being auto instrumented. {pull}2436[#2436] Disabling the agent should not try to enqueue
===== Bug fixes
{pull}2431[#2431] Hard exclude several system processes from being auto instrumented. {pull}2436[#2436] Disabling the agent should not try to enqueue events, now a NOOP.
[[release-notes-1.28.5]]
{pull}2430[#2430] Relax ECS container ID regex.
===== Bug fixes
{pull}2430[#2430] Relax ECS container ID regex.
[[release-notes-1.28.4]]
{pull}2427[#2427] Ensure we capture baggage when capturing Errors during unsampled transactions {pull}2425[#2425] Ensure safer access to System.Web.Se
===== Bug fixes
{pull}2427[#2427] Ensure we capture baggage when capturing Errors during unsampled transactions {pull}2425[#2425] Ensure safer access to System.Web.Security.Roles {pull}2426[#2426] Fix a bug that prevented the addition of filters to payloadsenders {pull}2423[#2423] SetAgentActivationMethod throws CultureNotFoundException in global-invariant mode
[[release-notes-1.28.3]]
{pull}2419[#2419] Update to latest MongoDB.Driver.Core to address a breaking change. {pull}2418[#2418] Adding filters should not force initialization…
===== Bug fixes
{pull}2419[#2419] Update to latest MongoDB.Driver.Core to address a breaking change.
{pull}2418[#2418] Adding filters should not force initialization of Agent.
[[release-notes-1.28.2]]
{pull}2415[#2415] Fixed check for SqlRoleProvider under AspNet Identity 2.
===== Bug fixes
{pull}2415[#2415] Fixed check for SqlRoleProvider under AspNet Identity 2.
[[release-notes-1.28.1]]
{pull}2411[#2389] Skip instrumentation of System.Web to prevent rare double configuration initialization issue
===== Bug fixes
{pull}2411[#2389] Skip instrumentation of System.Web to prevent rare double configuration initialization issue
===== Features
{pull}2371[#2371] Global file logging, making it easier to diagnose the agent no matter the deployment type.
[[release-notes-1.28.0]]
{pull}2389[#2389] Fix Linux build dependency of glibc
===== Bug fixes
{pull}2389[#2389] Fix Linux build dependency of glibc
[[release-notes-1.27.3]]
{pull}2380[#2380] Release Automation fix
===== Bug fixes
{pull}2380[#2380] Release Automation fix
[[release-notes-1.27.2]]
{pull}2308[#2308] Clean up dependency graph for .NET core installations {pull}2356[#2356] Open Telemetry Bridge should only log when enabled {pull}216
===== Bug fixes
{pull}2308[#2308] Clean up dependency graph for .NET core installations {pull}2356[#2356] Open Telemetry Bridge should only log when enabled {pull}2166[#2166] Bump Microsoft.AspNetCore.Http dep to 2.1.22 {pull}2350[#2350] Fix message format for logging in managed profiler {pull}2225[#2225] Only mark bodies as redacted if explicitly configured to do so. {pull}2377[#2377] Do not read claims from SqlRoleProvider under classic ASP.NET
[[release-notes-1.27.1]]
{pull}2349[#2349] Remove invalid profiler method integrations
===== Bug fixes
{pull}2349[#2349] Remove invalid profiler method integrations
[[release-notes-1.27.0]]
{pull}2326[#2326] Add IServiceCollection extension methods to register ApmAgent {pull}2331[#2331] Add support for transaction_name_groups and use_path
===== Features
{pull}2326[#2326] Add IServiceCollection extension methods to register ApmAgent
{pull}2331[#2331] Add support for transaction_name_groups and use_path_as_transaction_name
===== Bug fixes
{pull}2298[#2298] Refine agent initialization within ElasticApmModule {pull}2303[#2303] Fix race condition on Add in redis profiler {pull}2299[#2299] Further logging refinements in ElasticApmModule {pull}2304[#2304] Update to .NET 8 SDK {pull}2302[#2302] Update troubleshooting section of docs {pull}2310[#2310] Fix bug when handling of multiple cookie entries with the same name {pull}2314[#2314] Clarify logging behaviour in troubleshooting doc {pull}2336[#2336] Fix agent-zip for 5.0.0
[[release-notes-1.26.0]]
This release introduces more thorough sanitization of request/response cookies to align with the APM spec. The incoming Cookie is now redacted by defa
This release introduces more thorough sanitization of request/response cookies to align with the APM spec.
The incoming Cookie is now redacted by default. The cookies it contains are extracted and sanitized according
to the SanitizeFieldNames configuration. Response headers are now correctly sanitized, including the
Set-Cookie header. This is a behaviour change!
===== Features
{pull}2290[#2290] Fully implement the sanitization spec for request/response headers {pull}2272[#2272] Include process information in metadata stanza when emitting events to apm-server {pull}2264[#2264] Switch to Licence expression rather than file
===== Bug fixes
{pull}2267[#2267] Cleanup of packages thanks to Framework reference {pull}2274[#2274] Limit memory usage when capturing SOAP request bodies {pull}2276[#2276] Address a few synchronization issues in the codebase {pull}2277[#2277] Truncate unknown keys logging from central config parser {pull}2278[#2278] Ensure exposed default constants are readonly {pull}2283[#2283] Fix duplicate key errors on dropped span stats update {pull}2279[#2279] Remove RegexConverter, not used in serialization from and to apm-server {pull}2280[#2280] Cleanup some dead code and one instance of null propagation in tooling NOT userfacing code
[[release-notes-1.25.3]]
{pull}2241[#2241] TagObjects not guaranteed to be unique {pull}2242[#2242] Move logging caching over to ConditionalWeaktable {pull}2247[#2247] Add add
===== Bug fixes
{pull}2241[#2241] TagObjects not guaranteed to be unique {pull}2242[#2242] Move logging caching over to ConditionalWeaktable {pull}2247[#2247] Add additional logging to outgoing http call propagation {pull}2249[#2249] address multiple structured logging violations {pull}2245[#2245] Update MongoDB drivers to 2.19.0
[[release-notes-1.25.2]]
This release fixes a bug in Elastic.Apm.AspNetCore when using UseElasticApm() not correctly setting status codes. The bug was not present in the more
This release fixes a bug in Elastic.Apm.AspNetCore when using UseElasticApm() not correctly setting status codes.
The bug was not present in the more commonly used Elastic.Apm.NetCoreAll since it uses a DiagnosticListener approach.
With this release we ensure both packages use the exact same DiagnosticListener mechanism to instrument ASP.NET Core.
===== Bug fixes
{pull}2213[#2213] Remove ApmMiddleWare, only use DiagnosticSource listener for ASP.NET Core.
{pull}2239[#2239] Move StartupHooks over to netstandard2.0.
[[release-notes-1.25.1]]
{pull}2213[#2213] Prevent server certificate callback runtime exception {pull}2219[#2219] Fix duration.sum.us value in JSON {pull}2214[#2214] Return t
===== Bug fixes
{pull}2213[#2213] Prevent server certificate callback runtime exception {pull}2219[#2219] Fix duration.sum.us value in JSON {pull}2214[#2214] Return total memory when limit is max value. {pull}2220[#2220] Ensure baggage gets copied with baggage prefix by
[[release-notes-1.25.0]]
{pull}2196[#2196] Support OnExecuteRequestStep available in new .NET versions for IIS modules.
===== Features {pull}2196[#2196] Support OnExecuteRequestStep available in new .NET versions for IIS modules.
[[release-notes-1.24.0]]
{pull}2140[#2140] Enable OpenTelemetryBridge by default {pull}2157[#2157] Update and optimise OTel bridge {pull}2147[#2147] Add Baggage support {pull}
===== Features {pull}2140[#2140] Enable OpenTelemetryBridge by default {pull}2157[#2157] Update and optimise OTel bridge {pull}2147[#2147] Add Baggage support {pull}2160[#2160] Trace in-process Azure Functions {pull}2165[#2165] Internalize SqlClient Instrumentation
===== Bug fixes {pull}2170[#2170] Ensure OpenTelemetryBridge respects Agents sampling decisions {pull}2178[#2178] DroppedSpanStats: do not flatten duration {pull}2180[#2180] Change 'cloud.project.id' for GCP metadata to be the 'project-id' {pull}2182[#2182] Handle SqlExceptions when accessing user claims
[[release-notes-1.23.0]]
{pull}2069[#2069] .NET Full Framework now always loads configuration from web or app.config {pull}2103[#2103] Add Npgsql 7.x support to profiler {pull
===== Features {pull}2069[#2069] .NET Full Framework now always loads configuration from web or app.config {pull}2103[#2103] Add Npgsql 7.x support to profiler {pull}2104[#2104] Backend dependencies granularity for NoSQL and Messaging {pull}2067[#2067] Send domain name when detected {pull}2136[#2136] Log when we detect LegacyAspNetSynchronizationContext
===== Bug fixes {pull}2126[#2126] Fix to not send start stack trace when below configured duration {pull}2109[#2109] Agent.Configuration now always points to ConfigurationStore's configuration {pull}2142[#2142] Reduce logging noise for stack frame capturing. {pull}2148[#2148] Move Redis Profiler registration to ConditionalWeakTable
[[release-notes-1.22.0]]
{pull}2050[#2050] Enable listening to Microsoft.Data.SqlClient.EventSource on .NET full framework.
===== Features
Microsoft.Data.SqlClient.EventSource on .NET full framework.===== Bug fixes
[[release-notes-1.21.0]]
This release includes two breaking changes that have minimal impact.
This release includes two breaking changes that have minimal impact.
netstandard2.0 and netstandard2.1 where applicable.===== Breaking changes
===== Bug fixes
[[release-notes-1.20.0]]
{pull}1981[#1981] Support for Azure Functions through new Elastic.Apm.Azure.Functions nuget package!
===== Features
Elastic.Apm.Azure.Functions nuget package!Elastic.Clients.Elasticsearch===== Bug fixes
OpenTelemetryBridgeEnabled[[release-notes-1.19.0]]
{pull}1867[#1867] Improve handling of multiple agent initialization.
===== Features
===== Bug fixes
[[release-notes-1.18.0]]
{pull}1806[#1806] Capture request body in ASP.NET Full Framework (issue: {issue}379[#379]).
===== Features
UseWindowsCredentials: new configuration to force the agent to use the credentials of the authenticated Windows user when events are sent to the APM Server (issue: {issue}1825[#1825]).===== Bug fixes
[[release-notes-1.17.0]]
{pull}1739[#1739] Introduce the TraceContinuationStrategy config (issue: {issue}1637[#1637]).
===== Features
TraceContinuationStrategy config (issue: {issue}1637[#1637]).span_stack_trace_min_duration (issue: {issue}1529[#1529]).===== Bug fixes
ApplicationNamespaces config.[[release-notes-1.16.1]]
{pull}1732[#1732] Improved logging around fetching central configuration (issue: {issue}1626[#1626]).
===== Features
===== Bug fixes
null in legacy ASP.NET Core 2.2 apps (issue: {issue}1729[#1729]).[[release-notes-1.16.0]]
{pull}1726[#1726] Automatic capturing of incoming HTTP Requests on ASP.NET Core with the Profiler based agent (issue: {issue}1610[#1610]).
[float] ===== Features
===== Bug fixes
system.cpu.total.norm.pct, the agent won't create any instance of the PerformanceCounter type (workaround for issue: {issue}1724[#1724])unknown route (issue: {issue}1715[#1715]).[[release-notes-1.15.0]]
{pull}1657[#1657] Improved database span names based on parsed SQL statements (issue: {issue}242[#242])
[float] ===== Features
[float] ===== Bug fixes
AspNetCoreDiagnosticListenerarea:null when creating transaction name based on routing.Stop events in AspNetCoreDiagnosticListener (issue: {issue}1676[#1676])[[release-notes-1.14.1]]
{pull}1634[#1634] Make sure events are sent after APM Server timeout (bug report: {pull}1630[#1630])
[float] ===== Bug fixes
[[release-notes-1.14.0]]
{pull}1620[#1620] Span compression and dropping fast exit spans. New settings: ExitSpanMinDuration, SpanCompressionEnabled, SpanCompressionExactMatchM
[float] ===== Features
ExitSpanMinDuration, SpanCompressionEnabled, SpanCompressionExactMatchMaxDuration, SpanCompressionSameKindMaxDuration (issues: {issue}1329[#1329] and {issue}1475[#1475])[float] ===== Bug fixes
[float] ===== Breaking changes
unknown-dotnet-service. In prior versions this was just unknown. (issue: {issue}1585[#1585])[[release-notes-1.13.0]]
{pull}1498[#1498] OpenTelemetry Bridge - integration with System.Diagnostics.Activity - Beta (issue: {issue}1521[#1521])
[float] ===== Features
System.Diagnostics.Activity - Beta (issue: {issue}1521[#1521])[[release-notes-1.12.1]]
{pull}1564[#1564] Failed sending event error with missing span.context.destination.service.name required field on older APM Servers (issue: {issue}156
[float] ===== Bug fixes
[[release-notes-1.12.0]]
{pull}1520[#1520] Auto-infer destination.service.resource and adapt public API (issues: {issue}1330[#1330]) + boolean isExitSpan parameter introduced
[float] ===== Breaking changes
boolean isExitSpan parameter introduced to Start* and Capture* public APIs to denote when a span
is an exit span.
[float] ===== Features
[float] ===== Bug fixes
[[release-notes-1.11.1]]
{pull}1354[#1354] Serialize to writer directly
[float] ===== Features
[float] ===== Bug fixes
[[release-notes-1.11.0]]
{pull}1342[#1342] CosmosDb support (issue: {issue}1154[#1154])
[float] ===== Features
[[release-notes-1.10.0]]
{pull}1225[#1225] Add instrumentation for Azure Service Bus (issue: {issue}1157[#1157])
[float] ===== Features
Newtonsoft.Json - no more dependency on Newtonsoft.JsonBen.Demystifier - no more dependency on Ben.Demystifier (issue: {issue}1232[#1232])[float] ===== Bug fixes
Recording to false (issue: {issue}1250[#1250])NullReferenceException in Elastic.Apm.Extensions.Logging(issue: {issue}1309[#1309])[float] ===== Breaking changes
[[release-notes-1.9.0]]
{pull}925[#925] Add GC time (issue: {issue}922[#922])
[float] ===== Features
tracestate (issue: {issue}1021[#1021])[float] ===== Bug fixes
[float] ===== Breaking changes
InstanceAlreadyCreatedException, it will print an error log.[[release-notes-1.8.1]]
{pull}1196[#1196] Add GC Heap Stats capturing for .NET 5.0 (issue: {issue}1195[#1195])
[float] ===== Features
[float] ===== Bug fixes
[[release-notes-1.8.0]]
{pull}1063[#1063] Add support for capturing redis commands from StackExchange.Redis (< >) (issue: {issue}874[#874])
[float] ===== Features
ServerUrl config - (ServerUrls is still working but will be removed in the future) (issue: {issue}1035[#1035])SanitizeFieldNames config became changeable though Kibana central configurationMicrosoft.Extensions.Logging automatically and extend the Public API to capture custom logs as APM errors (issue: {issue}894[#894])"off" level (issue: {issue}970[#970])[float] ===== Bug fixes
NullReferenceException with disabled agent on Transaction.Custom (issue: {issue}1080[#1080])appsettings.json does not disable public Agent API (issue: {issue}1077[#1077])System.IO.IOException on ASP.NET Classic (issue: {issue}1113[#1113])NullReferenceException with custom IConfigurationReader implementation in MetricsCollectorDOTNET_STARTUP_HOOKSRequest.InputStream only when SOAP header present (issue: {issue}1113[#1113])[[release-notes-1.7.1]]
{pull}1057[#1057] Introduce GetLabel method on IExecutionSegment (issue: {issue}1033[#1033])
[float] ===== Features
GetLabel<T> method on IExecutionSegment (issue: {issue}1033[#1033])[float] ===== Bug fixes
Synchronous operations are disallowed on ASP.NET Core during request body capturing (issue: {issue}1044[#1044])UseAllElasticApm with IHostBuilder missing auto instrumentation (issue: {issue}1059[#1059])[[release-notes-1.7.0]]
{pull}828[#828] Agent loading with zero code change on .NET Core (issue: {issue}71[#71])
[float] ===== Features
FullFrameworkConfigurationReaderType config to load custom configuration reader on ASP.NETITransaction.SetService API to support multiple services in a single process (issue: {issue}1001[#1001])[float] ===== Bug fixes
CurrentTransaction is null in some cases (issues: {issue}934[#934], {issue}972[#972])HostBuilderExtensions[float] ===== Breaking changes
IExecutionSegment.CaptureException and IExecutionSegment.CaptureError with libraries depending on previous version. If this happens you need to update Elastic.Apm to 1.7.0 in your projects (Issue: ({issue}1067)[#1067])[[release-notes-1.6.1]]
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →