Estimated end-of-life date, accurate to within three months: 05-2027
See the support level definitions for more information.
New Features
-
AI Guard:
- Adds a redaction feature that can be enabled in the UI. For more information, see the AI Guard SDK setup documentation.
-
CI Visibility:
- Adds a new
ci.pipeline.display_nametag for the Buildkite provider, populated from theBUILDKITE_PIPELINE_NAMEenvironment variable.
- Adds a new
-
Data Streams Monitoring:
- Adds an optional
tagsargument toddtrace.data_streams.set_produce_checkpointandddtrace.data_streams.set_consume_checkpoint. Pass a list of"key:value"strings to attach additional edge tags to a manual checkpoint alongside the automatically settype,topic, anddirectiontags. For example:set_produce_checkpoint("eventbridge", detail_type, carrier_set, tags=["exchange:my-bus"]). Existing calls that do not passtagsare unaffected.
- Adds an optional
-
LLM Observability:
- Adds
LLMObs.list_experiments()to query experiments by logical name and metadata containment, such as{"tags": ["git.commit.sha:abc123"]}. It returns run status and aggregate data—including evaluations, token costs, and error rates—so CI/CD workflows can compare a run against a baseline commit and gate on the result. - Adds support for manually versioning agents. Pass
versionwhen starting an agent span, either withLLMObs.agent(name="my-agent", version="v3")or with the@agent(version="v3")decorator. For agents created by an auto-instrumented framework, useLLMObs.annotation_context(agent={"version": "v3"}). This sets theagent_versiontag on agent spans. Theagentargument accepts a plain dictionary or the newddtrace.llmobs.AgentTypedDictclass. - Adds
LLMObs.submit_feedback()for submitting end-user feedback associated with a span, trace, session, or customer-defined feedback join key.
- Adds
-
OpenFeature:
- Adds agentless delivery for the Feature Flagging and Experimentation (FFE) OpenFeature provider, loading Universal Flag Configuration directly from Datadog over HTTPS without requiring a Datadog Agent. Agentless delivery is now the default and requires
DD_API_KEY. SetDD_FEATURE_FLAGS_CONFIGURATION_SOURCE=remote_configto continue loading configuration through the Datadog Agent's Remote Configuration.
- Adds agentless delivery for the Feature Flagging and Experimentation (FFE) OpenFeature provider, loading Universal Flag Configuration directly from Datadog over HTTPS without requiring a Datadog Agent. Agentless delivery is now the default and requires
-
OpenTelemetry:
- OTLP trace export now supports the
http/protobufprotocol—the default—andhttp/json, selected through theOTEL_EXPORTER_OTLP_TRACES_PROTOCOLenvironment variable.
- OTLP trace export now supports the
-
Tracing:
- Adds
Span.remove_tag(key)andSpan.remove_metric(key)for removing a previously set tag or metric from a span. Both methods are no-ops if the key is not set.
- Adds
Bug Fixes
-
AAP:
- Fixes incorrect request fingerprints when a web application is wrapped by same-service tracing middleware.
-
Botocore:
- Fixes an issue where LLM Observability spans for Bedrock
invoke_model_with_response_streamcalls reported all token usage metrics as0. Token counts are now extracted from the streamed response and set on the span.
- Fixes an issue where LLM Observability spans for Bedrock
-
CI Visibility:
- Fixes an issue where code coverage collected for Intelligent Test Runner included files from
site-packagesordist-packagesdirectories. - Fixes an issue where the session status was reported as
passinstead offailwhen pytest exited with a non-OK, non-NO_TESTS_COLLECTEDexit code, such as for collection errors, interruptions, or internal errors.
- Fixes an issue where code coverage collected for Intelligent Test Runner included files from
-
Code Origin for Spans:
- Prevents views or traced functions from raising an exception when a large number of them are present.
-
Code Security:
- Fixes an issue where applications could crash when asynchronous tasks accessed request data after the originating request completed.
-
Django:
- Fixes an issue where Django processes that never serve HTTP requests, such as Celery and Dramatiq workers, used substantially more memory and took longer to start. API endpoint discovery now runs when the WSGI or ASGI application is built rather than during
django.setup().
- Fixes an issue where Django processes that never serve HTTP requests, such as Celery and Dramatiq workers, used substantially more memory and took longer to start. API endpoint discovery now runs when the WSGI or ASGI application is built rather than during
-
Gevent:
- Fixes an issue where running an application with
ddtrace-runor single-step instrumentation could raise aPydanticSchemaGenerationErrorat import time for models that use forward references whengeventis installed and the application runs on CPython 3.14 or later. Theannotationlibmodule, which now owns theForwardRefclass on CPython 3.14, is preserved during module cloning so that Pydantic resolves forward references correctly.
- Fixes an issue where running an application with
-
Kombu:
- Fixes an issue where messages published to the RabbitMQ default unnamed exchange were not linked to their consumers in the Data Streams Monitoring map.
-
OpenTelemetry Logs:
- Fixes an issue where enabling OpenTelemetry logs collection with
DD_LOGS_OTEL_ENABLED=truecould cause the tracer to export its own internal log records, producing a growing volume of exported logs. The tracer's own log records and the OpenTelemetry exporter's log records are now excluded, while application logs continue to be collected and exported.
- Fixes an issue where enabling OpenTelemetry logs collection with
-
Profiling:
- Fixes a rare crash when using gevent.
- Fixes an issue where applications using uWSGI with
--lazy-appsand--skip-atexitcould crash while workers shut down on Python 3.12 or later. - Fixes an issue where child spans created from propagated tracing contexts could lose local-root and endpoint attribution when greenlets shared a thread.
-
PyTorch:
- Fixes an issue where the
pytorch.rankspan could end too soon.
- Fixes an issue where the
-
Requests:
- Fixes an issue where distributed tracing context propagated on outbound
requestscalls pointed to the wrong span when theurllib3integration was also enabled—for example, throughDD_TRACE_URLLIB3_ENABLED=true—causing those requests to be missing or to show incorrect latency in downstream traces.
- Fixes an issue where distributed tracing context propagated on outbound
-
Snowflake:
- Fixes an issue where traced cursor calls failed when
commandwas passed as a keyword argument toexecuteorexecutemany.
- Fixes an issue where traced cursor calls failed when
-
Tracing:
- Fixes an issue where the sampling decision of an incoming distributed trace was discarded, reported as a propagation error on the local root span, and logged as a warning when the trace was sampled by a mechanism unknown to this version of the library. Well-formed sampling decisions are now propagated unchanged.
- Fixes an issue where OpenTelemetry thread-context record publication could not be disabled on Linux. Publication can now be disabled by setting the experimental
DD_TRACE_OTEL_CTX_ENABLEDenvironment variable tofalse. - Fixes an issue where OTLP trace export failures reported the Datadog Agent intake URL instead of the configured OTLP endpoint.
- Fixes an issue where
_dd.svc_srcwas incorrectly set to eithermor the service name.
Other Changes
-
Botocore:
- Payload-tagging redaction now uses
python-jsonpathinstead of the vendoredjsonpath-ngandply. As a result,ddtraceno longer shipsply, which is unmaintained and reported by dependency scanners asCVE-2025-56005. Existing redaction paths continue to work.
- Payload-tagging redaction now uses