Estimated end-of-life date, accurate to within three months: 08-2026 See the support level definitions for more information.
CI Visibility: This fix addresses a performance issue where repository tags were fetched during the unshallow process to extract commit metadata, causing slowdowns in repositories with many tags.
LLM Observability: Resolves an issue in the bedrock integration where invoking cohere rerank models would result in missing spans due to output formatting index errors.
opentelemetry:
ray: This fix resolves an issue where the tracer raised an error when submitting Ray tasks without explicitly calling ray.init().
tracer: This fix resolves an issue where an application instrumented by ddtrace could crash at start. Fix compatibility with zope.event==6.0
Estimated end-of-life date, accurate to within three months: 08-2026 See the support level definitions for more information.
tiktoken library, and insteadstream_options={"include_usage": True} in the OpenAI request.Span.set_struct_tag is deprecated and will be removed in v4.0.0 with no direct replacement.Span.get_struct_tag is deprecated and will be removed in v4.0.0 with no direct replacement.Span.set_tag_str is deprecated and will be removed in version 4.0.0.
As an alternative to Span.set_tag_str, you can use Span.set_tag instead.DD_PROFILING_STACK_V2_ENABLED=false will no longer have an effect starting in 4.0.urllib3 and requests. It does not require enabling APM instrumentation for urllib3 anymore.threading.RLock (reentrant lock) profiling. The Lock profiler now tracks both threading.Lock and threading.RLock usage, providing comprehensive lock contention visibility for Python applications.version argument to LLMObs.pull_datasetversion and latest_version to provide information on the version of the dataset that is being worked with and the latest global version of the dataset, respectivelyversion field. The version field is now omitted unless explicitly set by the user.IndexError.assessment argument in submit_evaluation().
assessment now refers to whether the evaluation itself passes or fails according to your application, rather than the validity of the evaluation result.langchain integration would incorrectly mark Azure OpenAI calls as duplicate llm operations even if the openai integration was enabled.
The langchain integration will trace Azure OpenAI spans as workflow spans if there is an equivalent llm span from the openai integration.async for model in client.models.list()) caused a TypeError: 'async for' requires an object with __aiter__ method, got coroutine. See issue #14574.KeyError exceptions in test runs when gevent is detected within the environment.ray.init().ray.data._internal to the module denylist._acquire method of the Lock profiler (note: this only occurs when assertions are enabled.)DD_PROFILING_API_TIMEOUT doesn't have any effect, and is marked to be removed in upcoming 4.0 release. New environment variable DD_PROFILING_API_TIMEOUT_MS is introduced to configure timeout for uploading profiles to the backend. The default value is 10000 ms (10 seconds)ValueError: Formatting field not found in record: 'dd.service'.Estimated end-of-life date, accurate to within three months: 08-2026 See the support level definitions for more information.
Span.set_struct_tag is deprecated and will be removed in v4.0.0 with no direct replacement.Span.get_struct_tag is deprecated and will be removed in v4.0.0 with no direct replacement.Span.set_tag_str is deprecated and will be removed in version 4.0.0.
As an alternative to Span.set_tag_str, you can use Span.set_tag instead.DD_PROFILING_STACK_V2_ENABLED=false will no longer have an effect starting in 4.0.urllib3 and requests. It does not require enabling APM instrumentation for urllib3 anymore.threading.RLock (reentrant lock) profiling. The Lock profiler now tracks both threading.Lock and threading.RLock usage, providing comprehensive lock contention visibility for Python applications.version argument to LLMObs.pull_datasetversion and latest_version to provide information on the version of the dataset that is being worked with and the latest global version of the dataset, respectivelyversion field. The version field is now omitted unless explicitly set by the user.IndexError.assessment argument in submit_evaluation().
assessment now refers to whether the evaluation itself passes or fails according to your application, rather than the validity of the evaluation result.langchain integration would incorrectly mark Azure OpenAI calls as duplicate llm operations even if the openai integration was enabled.
The langchain integration will trace Azure OpenAI spans as workflow spans if there is an equivalent llm span from the openai integration.async for model in client.models.list()) caused a TypeError: 'async for' requires an object with __aiter__ method, got coroutine. See issue #14574.KeyError exceptions in test runs when gevent is detected within the environment.ray.init().ray.data._internal to the module denylist.DD_PROFILING_API_TIMEOUT doesn't have any effect, and is marked to be removed in upcoming 4.0 release. New environment variable DD_PROFILING_API_TIMEOUT_MS is introduced to configure timeout for uploading profiles to the backend. The default value is 10000 ms (10 seconds)ValueError: Formatting field not found in record: 'dd.service'.Estimated end-of-life date, accurate to within three months: 08-2026 See the support level definitions for more information.
version field. The version field is now omitted unless explicitly set by the user.ValueError: Formatting field not found in record: 'dd.service'.Estimated end-of-life date, accurate to within three months: 08-2026 See the support level definitions for more information.
version field. The version field is now omitted unless explicitly set by the user.async for model in client.models.list()) caused a TypeError: 'async for' requires an object with __aiter__ method, got coroutine. See issue #14574.IndexError.ValueError: Formatting field not found in record: 'dd.service'.Estimated end-of-life date, accurate to within three months: 08-2026 See the support level definitions for more information.
langchain integration would incorrectly mark Azure OpenAI calls as duplicate llm operations even if the openai integration was enabled. The langchain integration will trace Azure OpenAI spans as workflow spans if there is an equivalent llm span from the openai integration.Estimated end-of-life date, accurate to within three months: 08-2026 See the support level definitions for more information.
CI Visibility: This fix resolves performance issue affecting coverage collection for Python 3.12+
LLM Observability
assessment argument in submit_evaluation().
assessment now refers to whether the evaluation itself passes or fails according to your application, rather than the validity of the evaluation result.langchain integration would incorrectly mark Azure OpenAI calls as duplicate llm operations even if the openai integration was enabled. The langchain integration will trace Azure OpenAI spans as workflow spans if there is an equivalent llm span from the openai integration.Estimated end-of-life date, accurate to within three months: 11-2025 See the support level definitions for more information.
wrapt<2 until we can ensure full compatibility with the breaking changes.Estimated end-of-life date, accurate to within three months: 08-2026 See the support level definitions for more information.
LLMObs.enableLLMObs.submit_evaluation_for() has been deprecated and will be removed in a future version. It will be replaced with LLMObs.submit_evaluation() which will take the signature of the original LLMObs.submit_evaluation_for() method in ddtrace version 4.0. Please use LLMObs.submit_evaluation() for submitting evaluations moving forward.
To migrate:
LLMObs.submit_evaluation_for(...) users: rename to LLMObs.submit_evaluation(...)LLMObs.submit_evaluation_for(...) users: rename the span_context argument to span, i.e. LLMObs.submit_evaluation(span_context={"span_id": ..., "trace_id": ...}, ...) to LLMObs.submit_evaluation(span={"span_id": ..., "trace_id": ...}, ...)Tracer.on_start_span and Tracer.deregister_on_start_span are deprecated and will be removed in v4.0.0 with no planned replacement.asyncio.create_task().asyncio and futures integrations are now enabled by default on LLMObs.enable(), which enables asynchronous context propagation for those libraries.LLMObs.submit_evaluation() and LLMObs.submit_evaluation_for() methods now accept a reasoning argument to denote an explanation of the evaluation results.parse() methods used for structured outputs.LLMObs.submit_evaluation_for() method now accepts a assessment argument to denote
whether or not the evaluation is valid or correct. Accepted values are either "pass" or "fail".parse() methods for structured outputs on chat.completions and responses endpoints (available in OpenAI SDK >= 1.92.0).track_user_id in the ATO SDK, which is equivalent to track_user but does not require the login, only the user id.requests with urllib3\<2.wrapt<2 until we can ensure full compatibility with the breaking changes.sumy package installs files under tests/* in site-packages, and this would cause any modules under tests.* to be considered third-party.AttributeError crash in certain configurations./v1/logs path is correctly added to prevent log payloads from being dropped by the Agent when using OTEL_EXPORTER_OTLP_ENDPOINT configuration. Metrics and traces are unaffected.Estimated end-of-life date, accurate to within three months: 08-2026 See the support level definitions for more information.
LLMObs.enableLLMObs.submit_evaluation_for() has been deprecated and will be removed in a future version. It will be replaced with LLMObs.submit_evaluation() which will take the signature of the original LLMObs.submit_evaluation_for() method in ddtrace version 4.0. Please use LLMObs.submit_evaluation() for submitting evaluations moving forward.
To migrate:
LLMObs.submit_evaluation_for(...) users: rename to LLMObs.submit_evaluation(...)LLMObs.submit_evaluation_for(...) users: rename the span_context argument to span, i.e. LLMObs.submit_evaluation(span_context={"span_id": ..., "trace_id": ...}, ...) to LLMObs.submit_evaluation(span={"span_id": ..., "trace_id": ...}, ...)Tracer.on_start_span and Tracer.deregister_on_start_span are deprecated and will be removed in v4.0.0 with no planned replacement.asyncio.create_task().asyncio and futures integrations are now enabled by default on LLMObs.enable(), which enables asynchronous context propagation for those libraries.LLMObs.submit_evaluation() and LLMObs.submit_evaluation_for() methods now accept a reasoning argument to denote an explanation of the evaluation results.parse() methods used for structured outputs.LLMObs.submit_evaluation_for() method now accepts a assessment argument to denote
whether or not the evaluation is valid or correct. Accepted values are either "pass" or "fail".parse() methods for structured outputs on chat.completions and responses endpoints (available in OpenAI SDK >= 1.92.0).track_user_id in the ATO SDK, which is equivalent to track_user but does not require the login, only the user id.requests with urllib3\<2.wrapt<2 until we can ensure full compatibility with the breaking changes.sumy package installs files under tests/* in site-packages, and this would cause any modules under tests.* to be considered third-party.AttributeError crash in certain configurations./v1/logs path is correctly added to prevent log payloads from being dropped by the Agent when using OTEL_EXPORTER_OTLP_ENDPOINT configuration. Metrics and traces are unaffected.Pin to wrapt<2 until we can ensure full compatibility with the breaking changes.
CI Visibility: This fix resolves an issue where tests would be incorrectly detected as third-party code if a third-party package containing a folder with the same name as the tests folder was installed. For instance, the sumy package installs files under tests/* in site-packages, and this would cause any modules under tests.* to be considered third-party.
langchain: Resolves an issue where langchain patching would throw an ImportError for when using langchain_core>=0.3.76.
wrapt<2 until we can ensure full compatibility with the breaking changesEstimated end-of-life date, accurate to within three months: 08-2026 See the support level definitions for more information.
sumy package installs files under tests/* in site-packages, and this would cause any modules under tests.* to be considered third-party.AttributeError crash in certain configurations.Estimated end-of-life date, accurate to within three months: 08-2026 See the support level definitions for more information.
opentelemetry: Adds default configurations for the OpenTelemetry Metrics API implementation to improve the Datadog user experience. This includes the following configurations:
OTEL_EXPORTER_OTLP_METRICS_ENDPOINT is set to the default Datadog Agent endpoint, or localhost if not foundOTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE is set to deltaOTEL_METRIC_EXPORT_INTERVAL is set to 10000OTEL_METRIC_EXPORT_TIMEOUT is set to 7500LLM Observability: MCP integration also traces ClientSession contexts, ClientSession.initialize, and ClientSession.list_tools.
ray: This introduces a Ray core integration that traces Ray jobs, remote tasks, and actor method calls. Supported for Ray >= 2.46.0.
To enable tracing, start the Ray head with --tracing-startup-hook=ddtrace.contrib.ray:setup_tracing then submit jobs as usual.
AttributeError that could occur when tracing Google ADK agent runs, due to the agent model attribute not being defined for SequentialAgent class.ImportError for when using langchain_core>=0.3.76.DD_APM_TRACING_ENABLED=0 when using LLM Observability.Estimated end-of-life date, accurate to within three months: 08-2026 See the support level definitions for more information.
opentelemetry: Adds default configurations for the OpenTelemetry Metrics API implementation to improve the Datadog user experience. This includes the following configurations:
OTEL_EXPORTER_OTLP_METRICS_ENDPOINT is set to the default Datadog Agent endpoint, or localhost if not foundOTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE is set to deltaOTEL_METRIC_EXPORT_INTERVAL is set to 10000OTEL_METRIC_EXPORT_TIMEOUT is set to 7500LLM Observability: MCP integration also traces ClientSession contexts, ClientSession.initialize, and ClientSession.list_tools.
ray: This introduces a Ray core integration that traces Ray jobs, remote tasks, and actor method calls. Supported for Ray >= 2.46.0.
To enable tracing, start the Ray head with --tracing-startup-hook=ddtrace.contrib.ray:setup_tracing then submit jobs as usual.
AttributeError that could occur when tracing Google ADK agent runs, due to the agent model attribute not being defined for SequentialAgent class.ImportError for when using langchain_core>=0.3.76.Estimated end-of-life date, accurate to within three months: 08-2026 See the support level definitions for more information.
opentelemetry: Adds default configurations for the OpenTelemetry Metrics API implementation to improve the Datadog user experience. This includes the following configurations:
OTEL_EXPORTER_OTLP_METRICS_ENDPOINT is set to the default Datadog Agent endpoint, or localhost if not foundOTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE is set to deltaOTEL_METRIC_EXPORT_INTERVAL is set to 10000OTEL_METRIC_EXPORT_TIMEOUT is set to 7500LLM Observability: MCP integration also traces ClientSession contexts, ClientSession.initialize, and ClientSession.list_tools.
ray: This introduces a Ray core integration that traces Ray jobs, remote tasks, and actor method calls. Supported for Ray >= 2.46.0.
To enable tracing, start the Ray head with --tracing-startup-hook=ddtrace.contrib.ray:setup_tracing then submit jobs as usual.
AttributeError that could occur when tracing Google ADK agent runs, due to the agent model attribute not being defined for SequentialAgent class.ImportError for when using langchain_core>=0.3.76.Estimated end-of-life date, accurate to within three months: 08-2026 See the support level definitions for more information.
DD_DJANGO_TRACING_MINIMAL environment variable for performance-sensitive applications. When enabled, this disables Django ORM, cache, and template instrumentation while keeping middleware instrumentation enabled. This significantly reduces overhead by removing Django-specific spans while preserving visibility into the underlying database drivers, cache clients, and other integrations. For example, with this enabled, Django ORM query spans are disabled but database driver spans (e.g., psycopg, MySQLdb) will still be created. To enable minimal tracing, set DD_DJANGO_TRACING_MINIMAL=true.aws.partition tag onto AWS traces based on the region for the boto, botocore, and aiobotocore integrations.DD_CIVISIBILITY_ENABLED (with default value True) so it can be disabled to avoid sending traces to the Test Visibility product from the test runners.DD_TRACE_RESOURCE_RENAMING_ENABLED="true"usedforsecurity=False.tags and chat_template, and a new Prompt TypedDict class that would be used in annotation and annotation_context.DatadogSampler from getting recreated whenever the SpanAggregator is reset, and instead updates the rate limiter that the sampler uses.PyErr_Format.-m entries in the denylist.asyncio.Tasks.PyObject_Realloc call, which can lead to accessing freed memory.--skip-atexit is not set when --lazy or --lazy-apps is set on uWSGI<2.0.30. This is to prevent crashes from profiling native extension modules. See https://github.com/unbit/uwsgi/pull/2726 for details.c_char type raised a TypeError, this now uses the 'c' typecode for better compatibility across versions.DD_GIT_COMMIT_SHA and DD_GIT_REPOSITORY_URL are defined before using the git command.Estimated end-of-life date, accurate to within three months: 08-2026 See the support level definitions for more information.
AAP:
CI Visibility: This fix solves an issue where the ITR skip count metric was aggregating skipped tests even when skipping level was set to suite. It will now count appropriately (skipped suites or skipped tests) depending on ITR skip level.
Estimated end-of-life date, accurate to within three months: 08-2026 See the support level definitions for more information.
DD_DJANGO_TRACING_MINIMAL environment variable for performance-sensitive applications. When enabled, this disables Django ORM, cache, and template instrumentation while keeping middleware instrumentation enabled. This significantly reduces overhead by removing Django-specific spans while preserving visibility into the underlying database drivers, cache clients, and other integrations. For example, with this enabled, Django ORM query spans are disabled but database driver spans (e.g., psycopg, MySQLdb) will still be created. To enable minimal tracing, set DD_DJANGO_TRACING_MINIMAL=true.aws.partition tag onto AWS traces based on the region for the boto, botocore, and aiobotocore integrations.DD_CIVISIBILITY_ENABLED (with default value True) so it can be disabled to avoid sending traces to the Test Visibility product from the test runners.DD_TRACE_RESOURCE_RENAMING_ENABLED="true"usedforsecurity=False.tags and chat_template, and a new Prompt TypedDict class that would be used in annotation and annotation_context.DatadogSampler from getting recreated whenever the SpanAggregator is reset, and instead updates the rate limiter that the sampler uses.PyErr_Format.-m entries in the denylist.asyncio.Tasks.PyObject_Realloc call, which can lead to accessing freed memory.--skip-atexit is not set when --lazy or --lazy-apps is set on uWSGI<2.0.30. This is to prevent crashes from profiling native extension modules. See https://github.com/unbit/uwsgi/pull/2726 for details.c_char type raised a TypeError, this now uses the 'c' typecode for better compatibility across versions.DD_GIT_COMMIT_SHA and DD_GIT_REPOSITORY_URL are defined before using the git command.Estimated end-of-life date, accurate to within three months: 09-2026 See the support level definitions for more information.
python -m and deny py_compile.