APM
Application performance monitoring and tracing SDKs
Mon
Wed
Fri
JunJulAugSepOctNovDecJanFebMarAprMayJun
LessMore
Releases77Avg Interval31hAvg Cadence24/mo
WebSocket connections no longer fail; memory leaks fixed
↗This release1 enhancementImprovements to existing features11 fixesBug fixesAI-tallied from the release notesDatadog dd-trace-py · v4.9.1
Bug Fixes
- AAP: This fix resolves an issue where the AppSec body-parsing hook consumed the
websocket.connectASGI message, causing ASGI/FastAPI WebSocket connections to fail with HTTP 500 w hen AppSec was enabled.
- CI Visibility: fix the default HTTP timeout for backend requests from 15 seconds to 30 seconds, and add the
DD_CIVISIBILITY_BACKEND_API_TIMEOUT_MILLISenvironment variable (previ ously missing) to override it. The value is expressed in milliseconds (e.g.60000for 60 seconds), consistent with the Java tracer. The same timeout now applies uniformly to all ba ckend requests, including skippable test fetches.
- tracing: Fixes a race condition where extra service names could be silently dropped from Remote Configuration
/v0.7/configpayloads in multi-threaded applications (e.g. uWSGI).
- LLM Observability: Fixes an issue where
reasoning_contentwas missing from streamed chat completions in the OpenAI and LiteLLM integrations when an OpenAI-compatible reasoning pr ovider (e.g. DeepSeek, Qwen) emitteddelta.reasoning_contentchunks. The aggregated message now captures reasoning text in the output message, matching non-streaming behavior.
- Fixed an issue that could have caused some timers, like the one responsible for Symbol Database uploads, to fire repeatedly after the first execution.
- internal: This fix resolves a memory leak where reference cycles through
PeriodicThreadcallbacks were invisible to Python's cyclic garbage collector and could accumulate when th reads used bound methods as targets.
- profiling: Fixes a memory leak in native frame tracking caused by unbounded native call-site metadata growth.
- SCA: This fix resolves an issue where unresolved runtime reachability targets could accumulate across Software Composition Analysis updates, causing resident memory usage to grow o ver time.
- sqlalchemy: Fixes duplicate SQLAlchemy event listeners when
trace_engine()is called repeatedly for the same engine.
- dynamic instrumentation: fixes an issue where the Symbol Database uploader sends empty payloads on a recurring timer.
- code origin: fixed an issue that could have caused pytest to crash internally when inspecting the call stack from an exception thrown by a view function when Code Origin is enabled
Claude Agent errors now show descriptive messages; service name race fixed
↗This release5 fixesBug fixesAI-tallied from the release notesDatadog dd-trace-py · v4.10.2
Bug Fixes
- LLM Observability: This fix resolves an issue in the Claude Agent SDK integration where a span's error message showed an uncategorized
unknownerror category from the upstream Claude Agent SDK instead of a descriptive API error. The integration now surfaces the detailed error message from the assistant message content.
- tracing: Fixes a race condition where extra service names could be silently dropped from Remote Configuration
/v0.7/configpayloads in multi-threaded applications (e.g. uWSGI).
- code origin: fixed an issue that could have caused pytest to crash internally when inspecting the call stack from an exception thrown by a view function when Code Origin is enabled.
- LLM Observability: Resolves an issue where non-string tag values passed to
LLMObs.annotate(tags=...)could cause spans to be dropped during ingestion.
- LLM Observability: Fixes provider mis-attribution on
openaispans when anOpenAI(orAsyncOpenAI) client and anAzureOpenAI(orAsyncAzureOpenAI) client are instantiated at the same time. Provider is now determined per-call rather than from the most recently constructed client.
Bedrock Converse/ConverseStream support; OTLP trace IDs now 128-bit
↗This release1 featureNew capabilities5 fixesBug fixesAI-tallied from the release notesDatadog dd-trace-js · v5.106.0
- [
bd9c62865a] - (SEMVER-PATCH) fix(cucumber): support v13 parallel mode (Juan Antonio Fernández de Alba) #8748 - [
5beadb493f] - (SEMVER-PATCH) test(ci): harden sandbox cleanup (Juan Antonio Fernández de Alba) #8741 - [
80fbfd2b7e] - (SEMVER-PATCH) fix(vitest): pin node 18 vitest 3 version (Juan Antonio Fernández de Alba) #8747 - [
5ef172cd28] - (SEMVER-MINOR) feat(aws-sdk, llmobs): support Bedrock Converse and ConverseStream (Alexandre Choura) #8079 - [
c8eb110fc1] - (SEMVER-PATCH) fix(llmobs/ai): surface prompt cache tokens for Vercel AI SDK integration across all supported providers (Jessica Gamio) #8530 - [
6588ac18da] - fix(otlp): Ensure all OTLP spans get the full 128-bit trace IDs (Zach Montoya) #8618 - [
376bad086b] - (SEMVER-PATCH) test(profiling): add retries to OOM heap profile tests for Node 26 compatibility (Attila Szegedi) #8742 - [
e46c478d65] - (SEMVER-PATCH) chore(deps): bump the serverless group across 1 directory with 11 updates (dependabot[bot]) #8738 - [
fe0be207ed] - (SEMVER-PATCH) chore(deps): bump the ai-and-llm group across 1 directory with 5 updates (dependabot[bot]) #8736 - [
e83cf13cdf] - (SEMVER-PATCH) fix(profiling): route logger calls through central log module (Ayan Khan) #8697 - [
908c8119d2] - (SEMVER-PATCH) chore(deps): bump openai (dependabot[bot]) #8735 - [
03116dfb95] - (SEMVER-PATCH) ci(release): fix validation workflow never triggering on proposal branches (Roch Devost) #8714 - [
3b6d66c138] - (SEMVER-PATCH) test(aws-sdk): fix flaky stepfunctions startExecution span assertion (Roch Devost) #8717 - [
0687e2f44f] - (SEMVER-PATCH) fix(ci): handle stale failure conclusion in all-green retry (Roch Devost) #8599
Memory leaks fixed in profiling, SCA, and periodic timers
↗This release4 fixesBug fixesAI-tallied from the release notesDatadog dd-trace-py · v4.10.1
Bug Fixes
- internal: Fixed an issue that could have caused some timers, like the one responsible for Symbol Database uploads, to fire repeatedly after the first execution.
- internal: This fix resolves a memory leak where reference cycles through
PeriodicThreadcallbacks were invisible to Python's cyclic garbage collector and could accumulate when threads used bound methods as targets.
- profiling: Fixes a memory leak in native frame tracking caused by unbounded native call-site metadata growth.
- SCA: This fix resolves an issue where unresolved runtime reachability targets could accumulate across Software Composition Analysis updates, causing resident memory usage to grow over time.
AI Guard blocks now bypass generic exception handlers; AWS Durable Execution traced
↗This release13 featuresNew capabilities3 enhancementsImprovements to existing features12 fixesBug fixesAI-tallied from the release notesDatadog dd-trace-py · v4.9.0
Upgrade Notes
- AI Guard:
ddtrace.appsec.ai_guard.AIGuardAbortErrornow derives fromddtrace.internal._exceptions.DDBlockException(aBaseExceptionsubclass) instead ofException. This brings AI Guard block decisions in line with how ASM blocks are surfaced and prevents a genericexcept Exception:in user code from silently swallowing a block.
- settings: Legacy environment variable names registered as aliases in the configuration registry now also work when set via local or fleet stable config files, not just shell environment variables. #17958
- ray: Adds
DD_TRACE_RAY_IGNORED_ACTORSconfiguration to exclude specific Ray actor methods from instrumentation. SetDD_TRACE_RAY_IGNORED_ACTORS='{"ActorA": ["method1"], "ActorB": "*"}'to leave matching methods or actors uninstrumented while continuing to trace other Ray actor methods. Matching is based on actor class name only.
Deprecation Notes
- Tracing:
DD_TRACE_INFERRED_SPANS_ENABLEDis deprecated and will be removed in 5.0.0. UseDD_TRACE_INFERRED_PROXY_SERVICES_ENABLEDinstead. The old environment variable continues to work but emits aDDTraceDeprecationWarningwhen set.
New Features
- aws_durable_execution_sdk_python: Add tracing support for the
aws-durable-execution-sdk-pythonlibrary. Instruments@durable_executionworkflows andDurableContextoperations (step,invoke,wait,wait_for_condition,wait_for_callback,create_callback,map,parallel,run_in_child_context) to generate spans.
- LLM Observability: Adds
stepspans to the Claude Agent SDK integration. Each inference cycle is now represented by astepcontainer span with anllmchild span for the model call andtoolchild spans for any tool invocations.
- tracing: Adds a centralized
supported-configurations.jsonregistry of all supportedDD_*andOTEL_*environment variables, following the same schema used by other Datadog tracing libraries. Accesses to unregistered environment variables now produce a debug log to help identify typos or unsupported configuration options.
- AI Guard: Copies anomaly-detection attributes from the local root (service-entry) span onto every
ai_guardspan:ai_guard.http.useragent,ai_guard.http.client_ip,ai_guard.network.client.ip,ai_guard.usr.idandai_guard.usr.session_id.
- AI Guard: When
DD_AI_GUARD_ENABLED=trueis set and anai_guardspan is created during a request, the tracer now populateshttp.client_ipandnetwork.client.ipon the service-entry (local root) span, mirroring the behavior used for Application Security. If AI Guard does not run during the request, no client IP tags are added.DD_TRACE_CLIENT_IP_ENABLEDis ignored once AI Guard reports, andDD_TRACE_CLIENT_IP_HEADERcontinues to override header resolution.
- ai_guard: add AI Guard evaluation support to the OpenAI SDK chat completions instrumentation. Both non-streaming and streaming requests and non-streaming responses are evaluated through the configured AI Guard client, and evaluation is automatically skipped when a framework integration (LangChain, Strands Agents) is already evaluating the same call.
- code origin for spans: The code origin for spans feature has been enabled by default.
- code origin: attach code origin information to the first span generated by a function wrapped with <span class="title-ref">tracer.wrap</span>.
- openfeature: This introduces a configurable initialization timeout for
DataDogProvider. The timeout controls how longinitialize()waits for configuration before returning, and defaults to 10 seconds. Set it via theDD_EXPERIMENTAL_FLAGGING_PROVIDER_INITIALIZATION_TIMEOUT_MSenvironment variable or theinit_timeoutconstructor parameter.
- CI Visibility: This introduces Jenkins custom parent ID propagation, which enables Datadog to correlate tests run from Jenkins with their Jenkins jobs and pipelines.
- LLM Observability: Adds an optional
cost_tagsargument toLLMObs.annotate()andLLMObs.annotation_context(). Pass a list of tag keys (already set viatagsor annotated previously on the same span) to have them attached to the cost and token metrics generated from LLM and embedding spans, which can help breaking down spend by team, project, org, or any custom dimension.
- LLM Observability: Adds support for an optional
version(string) field on each tool definition dictionary passed toLLMObs.annotate()via thetool_definitionsparameter.
- profiling: Add
DD_PROFILING_LOCK_EXCLUDE_MODULESconfig to skip lock profiling for framework-internal locks. Excluded locks remain native with zero profiling overhead. Set it to a comma-separated list of module prefixes (e.g.,django.db,sqlalchemy.pool,urllib3).
- LLM Observability: Bedrock Agent orchestration step events (model invocations, tool/action group calls, knowledge base lookups, guardrails, rationales) are now emitted as APM child spans of the
Bedrock Agent <agent_id>span when LLM Observability is enabled, with the same LLMObs payload shape as before.
Bug Fixes
-
tracing: Exclude
wrapt==2.2.0from the supported dependency range to avoid a regression that breaks wrapped C descriptors. -
ai_guard: This fix resolves a conflict between
ddtrace.autoandstrandswhen imported in the same file, which left Strands hooks silently disabled. The Strands integration now loads lazily on first attribute access so its event class identities match those the agent dispatches.
- appsec: Adds telemetry metrics
instrum.user_auth.missing_user_loginandinstrum.user_auth.missing_user_idwhen Django auth events cannot resolve the expected identity fields, enabling detection of misconfigured user model field mappings.
- AAP: This fix resolves an issue where the
usr.session_idtag was missing from the entry span of authenticated follow-up Django requests when automatic user instrumentation was enabled. They now also carryusr.session_id, matching other authenticated user-tagging paths.
- azure_cosmos: This change removes the http.status_code tags from Azure CosmosDB spans and replaces them with the use of the db.response.status_code metric. For customers using ddtrace v4.8.0 and relying on the http.status_code tag of cosmosdb.query spans, this is a breaking change.
- CI Visibility: Fixes an issue in the pytest plugin where a malformed log call emitted a
--- Logging error ---traceback to stderr during Attempt to Fix retries, polluting pytest output and contributing to spurious test failures.
- CI Visibility: Fixes an
IndexErrorin retry bookkeeping that occurred when a test's teardown phase failed. The error produced--- Logging error ---tracebacks in stderr, which could pollute test output and cause spurious test failures during retries. #17863
- CI Visibility: Fixes a regression where setting
DD_TEST_MANAGEMENT_ENABLED=0was not honored by the new pytest plugin, causing Test Management features such as quarantining, disabling tests, and Attempt to Fix to remain enabled.
- CI Visibility: Fixes code coverage instrumentation on Python 3.13, 3.14, and 3.15. Resolves lost per-test line data caused by:
sys.monitoringcallbacks running in a snapshot context whereContextVarchanges are not visible (Python 3.14+); empty modules emitting noLINEevents (Python 3.13+); andProcessPoolExecutorchild coverage not being propagated to the parent context. Also fixes a stale-data bug where child process executable lines could inflate coverage denominators afterstop_coverage()was called beforejoin().
- datastreams: Demotes the
retry limit exceeded submitting pathway statslog fromERRORtoWARNINGand removes the multi-line traceback from the record. This message fires when the processor cannot reach the agent within its 1-second timeout; the dropped 10 seconds of DSM data is auto-recovered on the next flush.
- LLM Observability: Fixes a concurrency bug in the Bedrock Agent integration where concurrent
invoke_agentcalls could orphan or cross-attribute spans due to shared class-level state. Per-invocation state is now used.
- LLM Observability: This fix resolves an issue where text wrapped in Bedrock Converse
guardContentcontent blocks was rendered as[Unsupported content type: guardContent]in traces, dropping the user's input.
- Fixed an issue that could have caused some instrumented code to fail to execute correctly when the original function had keyword arguments passed in as a cell variable.
- CI Visibility: Fixes an issue where tests marked as attempt-to-fix could have failures hidden when they were also quarantined or disabled.
- django: Stop tagging async view and middleware spans as errored on routine ASGI cancellations (e.g. client disconnects on streaming responses), a regression introduced in 4.8.0rc4. Cancellation still propagates; the span just finishes without
error.type='asyncio.exceptions.CancelledError'.
- django: Fixes
DD_DJANGO_DATABASE_SERVICEandDD_DJANGO_DATABASE_SERVICE_NAME, which were previously generated asDD_DJANGO-DATABASE_SERVICEandDD_DJANGO-DATABASE_SERVICE_NAME. The hyphenated names were invalid POSIX identifiers and unusable from most shells. Hyphens in integration names are now normalized to underscores when building env var names. The old hyphenated names are preserved as aliases for backward compatibility. #17952
- django: API endpoint discovery now supports Django sub-applications mounted with
django.urls.include(...). Endpoints are reported with their full URL path including the parent prefix — for example, a view served at/api/users/is now reported as/api/users/instead of losing the/api/prefix.
- django: API endpoint discovery now reports the correct HTTP methods for views decorated with
@require_http_methodscombined with another decorator such as@csrf_exempt; the declared methods are reported instead of a generic wildcard entry.
- telemetry: tolerate malformed installed distribution metadata so a single bad dist-info entry no longer floods stderr with repeated tracebacks.
- langchain, botocore: This fix resolves an issue where auto-instrumented
langchain_aws.ChatBedrockConversespans reported an opaque inference-profile ARN identifier as the model name when an inference profile was used.base_model_idwhich represents the underlying foundation model is now checked first when extracting model names, and the botocore Bedrock integration reads the resolved base model from a shared in-process cache populated by langchain so the same resolution applies to the underlyingbedrock-runtimespan.
- LLM Observability: This fix resolves an issue where running an experiment with a dataset whose records had
nullmetadata caused the summary evaluator to crash with aTypeErrorwhile preparing evaluator inputs.
- LLM Observability: Changes the default
model_nameandmodel_providerof LLM and embedding spans fromcustomtounknownif not provided or empty. This applies to both auto-instrumented spans and manual instrumentation viaLLMObs.llm()/LLMObs.embedding()and the@llm/@embeddingdecorators.
- profiling: Fixes an issue where the lock profiler silently stopped capturing lock events when running under
ddtrace-runwith <span class="title-ref">gevent</span> installed.
- LLM Observability: The OpenAI integration now preserves assistant message content when
tool_callsare present on the same message. #17760
- openfeature: This fix resolves an issue where
DataDogProvider.initialize()returned before configuration was received, causing the OpenFeature SDK to mark the provider as ready to serve evaluations too early and flag evaluations to silently return default values. The provider now waits for configuration before returning.
- openfeature: Fixes targeting key handling in the OpenFeature provider.
Nonetargeting key is now correctly passed to the native evaluator instead of being coerced to empty string. Flags that don't require a targeting key (static, rule-based) now evaluate successfully without one, matching the Datadog provider spec. Additionally, the Rust binding now correctly mapsTargetingKeyMissingerrors from libdatadog instead of returning a generic error code.
- tracing: Fixes an issue where the
svc.autoprocess tag produced garbled values such aspython_-m_unittestwhen a process was launched with the full command as a singlesys.argv[0]string (e.g. from a DockerENTRYPOINT, a process manager, or a subprocess call with an unsplit command). The correct module or script name is now extracted in these cases. #17764
- profiling: A crash that could happen in child processes after fork has been fixed.
- profiling: A rare crash caused by the memory allocation profiler has been fixed.
- RemoteConfig: Fixed an issue where deleted remote configurations were not applied, causing stale settings to persist.
- tracing: This fix resolves a memory leak where reference cycles through a span's properties were invisible to Python's cyclic garbage collector and accumulated proportionally to traced call volume.
- starlette: This fix resolves an issue where passing
middleware=Nonecaused application startup to fail when Starlette tracing was enabled.
- wsgi: This fix resolves an issue where the
http.urltag on inbound request spans contained the WSGI mount prefix twice (for example/admin/admin/usersinstead of/admin/users) when the application was served behindwerkzeug.middleware.dispatcher.DispatcherMiddlewareor any other in-process mount that preserves the original request URI inRAW_URI/REQUEST_URIwhile also settingSCRIPT_NAME.
- tracing: A crash that occurred when exiting a gevent application with
DD_TRACE_DEBUG=1has been fixed.
- langchain: Strips interface identifiers (e.g.
chat,llm) and path prefixes (e.g.models/) when extracting themodel_providerandmodel_name, so reported values identify the actual provider and model name rather than the LangChain interface or API resource path.
- llmobs: fixes child spans created within an experiment task not inheriting the
dataset_idtag. Previously onlydataset_namewas propagated via baggage to child spans;dataset_idis now propagated as well, making dataset, project, and experiment context (name and ID) consistent across all spans in an experiment trace.
- Profiling: This fixes a bug where uploaded profiles would not have a linked span post fork
- profiling: A rare crash happening on systems with small stack sizes when profiling asyncio code has been fixed.
- propagation: Limits parsing of the W3C
tracestateheader duringtracecontextextraction to 32 list-members and 512 UTF-8 bytes, consistent with the W3C Trace Context specification (https://www.w3.org/TR/trace-context/). Extra list-members and trailing whole entries that would exceed the byte budget are ignored, so unusually large headers no longer expand unbounded work during extraction. The Datadogdd=list-member is preferred: it is kept when present (including when it appears late in the header or alone exceeds the byte cap), and other vendors are dropped first. List-members longer thanDD_TRACE_TRACESTATE_ITEM_MAX_CHARS(128) characters are removed first when trimming by list-member count or byte budget, so shorter vendor entries are kept when possible.
- Fixed a startup deadlock when using
snowflake-connector-python >= 4.4.0withDD_TRACE_SNOWFLAKE_ENABLED=true.
- tracing: This change fixes an issue in which <span class="title-ref">svc_src</span> is set to <span class="title-ref">m</span> in cases where <span class="title-ref">service</span> matches the <span class="title-ref">_default_service</span> of an active integration config. In such cases, the intended behavior is that it <span class="title-ref">svc_src</span> is equal to <span class="title-ref">service</span>. #17712
- tracing: Parsing incoming
baggageHTTP headers now respectsDD_TRACE_BAGGAGE_MAX_ITEMS[default 64] andDD_TRACE_BAGGAGE_MAX_BYTES[default 8192], consistent with baggage injection. Previously, extraction could retain every comma-separated entry regardless of those limits. The tracer drops excess pairs and records truncation telemetry when limits apply.
Other Changes
- profiling: The
ECHION_ALT_VM_READ_FORCEconfiguration flag has been removed and support for the associated feature has been dropped.
Wrapt 2.2.0 excluded; agent connection logs fixed
↗This release2 fixesBug fixesAI-tallied from the release notesDatadog dd-trace-py · v4.8.7
Bug Fixes
- tracing: Exclude
wrapt==2.2.0from the supported dependency range to avoid a regression that breaks wrapped C descriptors. - LLM Observability: Agent connection error logs are no longer logged when using agentless and not running a Datadog agent.
Undici CONNECT span no longer unfinished; metrics delta temporality fixed
↗This release1 featureNew capabilities5 enhancementsImprovements to existing features5 fixesBug fixesAI-tallied from the release notesDatadog dd-trace-js · v5.104.0
- [
f7f2c7c2f1] - (SEMVER-PATCH) chore(deps): bump the gh-actions-packages group across 2 directories with 2 updates (dependabot[bot]) #8563 - [
4afcb7eed4] - (SEMVER-PATCH) fix(undici) unfinished CONNECT span (Pablo Erhard) #8558 - [
a34acbb466] - (SEMVER-PATCH) test(aerospike,couchbase): fix hook timeouts and couchbase service readiness (Roch Devost) #8550 - [
908e4d7558] - (SEMVER-PATCH) perf: reduce redis and ioredis bindStart overhead (Ruben Bridgewater) #8494 - [
85211ec3ec] - (SEMVER-PATCH) fix(metrics): fix delta temporality not being applied to OTLP counter exports (Sameeran Kunche) #8556 - [
32b49b2a0d] - (SEMVER-PATCH) chore(deps): bump openai (dependabot[bot]) #8539 - [
0bc47a6727] - (SEMVER-PATCH) perf(graphql): skip stacktrace symbolication on validation-only errors (Ruben Bridgewater) #8499 - [
8feb9ce389] - (SEMVER-PATCH) fix(types): import opentracing from the consumer's installed package (Ruben Bridgewater) #8525 - [
31353c773c] - (SEMVER-PATCH) ci: remove systematic Mocha --retries 1 on master (Roch Devost) #8552 - [
e769f32bb0] - (SEMVER-PATCH) fix(google-cloud-pubsub): poll for GC collection instead of fixed retry count (Roch Devost) #8553 - [
180549f994] - (SEMVER-PATCH) fix(mongoose): make PeerCat model registration idempotent (Roch Devost) #8551 - [
d7e1a534e9] - (SEMVER-PATCH) fix(aws-sdk): fix flaky SFN, SNS DSM, S3, and Bedrockruntime tests (Roch Devost) #8548 - [
1c8044f42a] - (SEMVER-PATCH) fix(appsec): increase beforeEach timeout in rasp-metrics integration test (Roch Devost) #8547 - [
e6eac5a6f0] - (SEMVER-PATCH) fix(electron): fix flaky IPC tests and Xvfb startup race (Roch Devost) #8546 - [
43f95f074d] - (SEMVER-PATCH) chore(ci): update dd-sts-action to v1.0.1 (Charles de Beauchesne) #8545 - [
d5421208ad] - (SEMVER-PATCH) ci(electron): push results to test optimization (Roch Devost) #8544 - [
65a9329653] - (SEMVER-PATCH) chore(deps): bump ws from 8.20.0 to 8.20.1 in /benchmark/sirun/startup/everything-fixture in the npm_and_yarn group across 1 directory (dependabot[bot]) #8542 - [
178fc6bd2a] - (SEMVER-PATCH) chore(ci): set ffe as owner of .github/workflows/openfeature.yml (Charles de Beauchesne) #8535 - [
25d47abf77] - (SEMVER-PATCH) test only Node LTS (Pablo Erhard) #8529 - [
a01a6b8efd] - (SEMVER-PATCH) test: prefer assert.match for string matching (Thomas Watson) #8540 - [
49f1bb171a] - (SEMVER-PATCH) test(electron): raise plugin-spec startApp beforeEach timeout to 10s (Ruben Bridgewater) #8536 - [
dcfdb77b29] - (SEMVER-PATCH) test(debugger): widen sampling spec tolerance to absorb wall-clock skew (Thomas Watson) #8534 - [
7302ef8258] - (SEMVER-PATCH) test: use assert.strictEqual / notStrictEqual for === and !== checks (Thomas Watson) #8538 - [
f74834adaa] - (SEMVER-PATCH) [test optimization] Fix early metadata encoding bug (Juan Antonio Fernández de Alba) #8528 - [
18d97575dc] - (SEMVER-PATCH) perf(id): memoise Identifier.toBigInt instead of re-decoding the buffer per call (Ruben Bridgewater) #8495 - [
54f0666bbb] - (SEMVER-PATCH) fix(rewriter): emit valid ESM imports for instrumented modules (Ruben Bridgewater) #8526 - [
7b5b32caca] - (SEMVER-PATCH) fix(kafkajs): skip header injection on brokers below Produce v3 (Ruben Bridgewater) #8390 - [
ab11acdbb6] - (SEMVER-PATCH) test: reduce agent.load overhead by reducing proxyquire calls (Ruben Bridgewater) #8099 - [
85baecf3cd] - (SEMVER-PATCH) perf(elasticsearch): cache per-instance tag keys and skip empty params stringify (Ruben Bridgewater) #8376 - [
5d72f2d380] - (SEMVER-PATCH) refactor(graphql): drop unused @graphql-tools/executor deep hook (Ruben Bridgewater) #8510 - [
c1eddead4b] - (SEMVER-PATCH) ci(codecov): restrict codecov/patch to PRs targeting master (Ruben Bridgewater) #8464 - [
9952e24b41] - (SEMVER-PATCH) chore(llmobs): fix flaky openai test (Sam Brenner) #8490 - [
f8614b357f] - (SEMVER-PATCH) feat(shimmer): add wrapCallback for tracer-controlled closures (Ruben Bridgewater) #8503 - [
3631da6a36] - (SEMVER-MINOR) feat(appsec): Always report content-length and content-type response headers when appsec is enabled (Carles Capell) #8482 - [
858e1cb0a2] - (SEMVER-PATCH) perf(storage): cache storage() at module load (Ruben Bridgewater) #8500 - [
bcab75cd29] - (SEMVER-MINOR) feat(crashtracking): capture and report uncaught exceptions (Gyuheon Oh) #8176 - [
28c1ff37b8] - (SEMVER-PATCH) perf(service-naming): short-circuit repeat registerExtraService calls (Ruben Bridgewater) #8496 - [
bdc736b843] - (SEMVER-PATCH) [test optimization] parallelize test optimization requests (Juan Antonio Fernández de Alba) #8520 - [
29cd9f5967] - (SEMVER-PATCH) [test optimization] use worker efd retry count in parallel cucumber (Juan Antonio Fernández de Alba) #8478 - [
9f243d934c] - (SEMVER-PATCH) [test optimization] merge static mocked files with recorded mocks in jest (Juan Antonio Fernández de Alba) #8477 - [
19dfbe4dbe] - (SEMVER-PATCH) test: targeted aerospike and electron suite timeouts (Ruben Bridgewater) #8527 - [
30cbcacac3] - (SEMVER-MINOR) feat(appsec): collect Datadog security-testing headers on entry spans (Christophe Papazian) #8463 - [
16ab502164] - (SEMVER-PATCH) [test optimization] stabilize vitest async setup instrumentation (Juan Antonio Fernández de Alba) #8519 - [
c497d0a4ca] - (SEMVER-PATCH) fix(mocha): correct timing for top-level it() tests (Sebastián Kay) #8480 - [
806f177fbf] - (SEMVER-MINOR) feat(mongodb): add opt-in query value obfuscation (Ruben Bridgewater) #8401 - [
f9a39f203d] - (SEMVER-PATCH) [test optimization] Stabilize Cypress intake payload waits (Juan Antonio Fernández de Alba) #8522 - [
f221629d3b] - (SEMVER-PATCH) chore(deps): bump axios (dependabot[bot]) #8518 - [
539aa4a662] - (SEMVER-PATCH) fix(grpc): handle client_streaming and bidi 3-arg overload (Crystal Luc-Magloire) #8276 - [
1eda439d60] - (SEMVER-PATCH) fix(openfeature): cap pending exposure events (Ruben Bridgewater) #8162 - [
9e41a6aae3] - (SEMVER-PATCH) deprecation(llmobs): deprecatellmobs.enableandllmobs.disablefor dd-trace v7 (Sam Brenner) #8427 - [
934f932039] - (SEMVER-PATCH) ci(appsec): split next jobs by individual version instead of range (Roch Devost) #8472 - [
c4b0554b7d] - (SEMVER-PATCH) chore(deps): bump express (dependabot[bot]) #8488 - [
7a01a98566] - (SEMVER-PATCH) ci(apm-integrations): split next jobs by individual version instead of range (Roch Devost) #8484 - [
199e240fb1] - (SEMVER-PATCH) ci(all-green): rerun failed workflows on startup when all-green is rerun (Roch Devost) #8475 - [
4566023687] - (SEMVER-PATCH) ci: split integration-bundler into integration-esbuild and integration-webpack (Roch Devost) #8470 - [
ee54394360] - (SEMVER-PATCH) ci: retry yarn install on failure in datadog-ci action (Roch Devost) #8459 - [
d482f4b7e9] - (SEMVER-PATCH) ci: remove node_modules cache from install action (Roch Devost) #8393 - [
c833bf860a] - (SEMVER-PATCH) chore(benchmark): reduce sirun log iterations from 40 to 10 (Roch Devost) #8474 - [
94c1d4e91c] - (SEMVER-MINOR) feat(kafkajs): add kafka.messages.offsets to producer span (Piotr WOLSKI) #8468
Langchain Bedrock spans now use correct model; inference profile ARN bug fixed
↗This release1 fixBug fixesAI-tallied from the release notesDatadog dd-trace-py · v4.8.6
Estimated end-of-life date, accurate to within three months: 05-2027 See the support level definitions for more information.
Bug Fixes
- LLM Observability: Users auto instrumenting Langchain and using Bedrock inference profiles would have their spans' be associated with the inference profile's ARN instead of the underlying LLM model. We now resolve the correct underlying model if users pass
base_model_idto theirChatBedrockConverseinstantiation. https://github.com/DataDog/dd-trace-py/pull/18151
Full Changelog: https://github.com/DataDog/dd-trace-py/compare/v4.8.5...v4.8.6
Bedrock guardContent no longer drops user input; inferred spans setting deprecated
↗This release1 enhancementImprovements to existing features4 fixesBug fixesAI-tallied from the release notesDatadog dd-trace-py · v4.8.5
Estimated end-of-life date, accurate to within three months: 05-2027 See the support level definitions for more information.
Deprecation Notes
- Tracing:
DD_TRACE_INFERRED_SPANS_ENABLEDis deprecated and will be removed in 5.0.0. UseDD_TRACE_INFERRED_PROXY_SERVICES_ENABLEDinstead. The old environment variable continues to work but emits aDDTraceDeprecationWarningwhen set.
Bug Fixes
- LLM Observability: This fix resolves an issue where text wrapped in Bedrock Converse
guardContentcontent blocks was rendered as[Unsupported content type: guardContent]in traces, dropping the user's input.
- LLM Observability: The OpenAI integration now preserves assistant message content when
tool_callsare present on the same message. #17760
- starlette: This fix resolves an issue where passing
middleware=Nonecaused application startup to fail when Starlette tracing was enabled.
- LLM Observability: Resolves an issue in the Claude Agent SDK integration where unnecessary LLM spans were being created and affecting the trace structure. The handler now only opens a new LLM span after a
UserMessagethat actually contained tool results, so messages without tool results no longer overwrite the in-flight LLM span.
Datadog dd-trace-js · v5.103.0
- [
03ac52a9a1] - (SEMVER-PATCH) bump native-metrics to 3.1.2 (Roch Devost) #8473 - [
65ca8204f9] - (SEMVER-PATCH) fix(lint): validate config names against both index.d.ts and index.d.v5.ts (Roch Devost) #8465 - [
ba39be2a3f] - (SEMVER-PATCH) ci(llmobs): parallelize openai job by Node version (Roch Devost) #8471 - [
2b8834f73a] - (SEMVER-PATCH) ci: route high-volume CI API calls through dd-octo-sts (Roch Devost) #8391 - [
dc3e2ec89e] - (SEMVER-PATCH) feat(electron): add initial support (Roch Devost) #7002 - [
56b6048e0b] - (SEMVER-PATCH) [test optimization] stabilize web app server lifecycle (Juan Antonio Fernández de Alba) #8444 - [
ae0e0c8872] - (SEMVER-PATCH) [test optimization] Fix playwright v5 tests (Juan Antonio Fernández de Alba) #8458 - [
3325f9eed8] - (SEMVER-PATCH) ci(serverless): use tags for serverless-tools ci (Olivier Nzia) #8213 - [
07cf95645a] - (SEMVER-PATCH) fix(config): keep v5 IAST programmatic aliases working (Ruben Bridgewater) #8457 - [
991d15c649] - (SEMVER-PATCH) refactor(config): route env reads through the config singleton (Ruben Bridgewater) #8241 - [
423ac93b66] - (SEMVER-PATCH) chore(aiguard): Fix ai guard flaky test (Ugaitz Urien) #8454 - [
afdaeed5c2] - (SEMVER-PATCH) chore(deps): bump oxc-parser from 0.128.0 to 0.129.0 in the runtime-minor-and-patch-dependencies group across 1 directory (dependabot[bot]) #8446 - [
0e26510523] - (SEMVER-PATCH) chore(deps-dev): bump sinon from 21.1.2 to 22.0.0 (dependabot[bot]) #8447 - [
0284dcf408] - (SEMVER-PATCH) chore(deps-dev): bump eslint-plugin-n from 17.24.0 to 18.0.1 (dependabot[bot]) #8448 - [
39a17c01e2] - (SEMVER-PATCH) fix(mocha): report test_suite_end for files with no describe wrapper (Sebastián Kay) #8437 - [
b06d144553] - (SEMVER-PATCH) fix: pin specific @datadog/openfeature-node-server version (Ugaitz Urien) #8456 - [
935054053e] - (SEMVER-PATCH) chore(deps): bump the gh-actions-packages group across 2 directories with 1 update (dependabot[bot]) #8449 - [
f3b4edc644] - (SEMVER-PATCH) chore(deps-dev): bump the dev-minor-and-patch-dependencies group across 1 directory with 6 updates (dependabot[bot]) #8445 - [
9e5e475c35] - (SEMVER-PATCH) Revert "ci: replace CodeQL workflow with default setup configuration (#8380)" (Roch Devost) #8443 - [
aaf5e60a0a] - (SEMVER-PATCH) ci: add dd-octo-sts policies for upcoming workflow rate-limit changes (Roch Devost) #8392 - [
4c42d937ee] - (SEMVER-PATCH) ci: update playwright-tools image to 1.54.1-5 (Roch Devost) #8440 - [
4774cc13ac] - (SEMVER-PATCH) perf(graphql): memoize the apollo signature pipeline (Ruben Bridgewater) #8308 - [
f8e5148693] - (SEMVER-PATCH) test(ci-visibility): wait for cypress child exit before next test (Ruben Bridgewater) #8418 - [
0402d979d8] - (SEMVER-PATCH) fix(kafkajs): read clusterId from existing metadata (Ruben Bridgewater) #8389 - [
6bc8c6cccf] - (SEMVER-PATCH) test(ci-visibility): gather payloads until child exits (Ruben Bridgewater) #8419 - [
e78a6c1e4f] - (SEMVER-PATCH) fix(ci): prevent Buildkite non-PR builds from being tagged as PRs (Juan Antonio Fernández de Alba) #8435 - [
6f1d63ccbc] - (SEMVER-PATCH) fix(pg): stop accumulating DBM comments on reused query objects (Ruben Bridgewater) #8400 - [
89df4e6258] - (SEMVER-PATCH) refactor: drop JSDoc @param defaults (Ruben Bridgewater) #8350 - [
abf97b0011] - (SEMVER-PATCH) implement ai guard telemetry metrics (Ilyas Shabi) #8093 - [
4ab60e2551] - (SEMVER-PATCH) refactor(config): gate experimental.appsec, plugins, ingestion shapes (Ruben Bridgewater) #8318 - [
626ce462f1] - (SEMVER-PATCH) [test optimization] propagate DD_CUSTOM_PARENT_ID for Jenkins (Daniel Fernández) #8433 - [
31899bd0b8] - (SEMVER-PATCH) refactor(config): gate experimental b3, profiling, and b3 single header (Ruben Bridgewater) #8316 - [
3ada9255d9] - (SEMVER-PATCH) bench: fix benchmarks running unsupported Node.js 26 (Ruben Bridgewater) #8430 - [
eeeccd65ce] - (SEMVER-PATCH) fix(kafka): stop mutating caller-owned message.headers (Ruben Bridgewater) #8388 - [
b2f62ef205] - (SEMVER-PATCH) test(setup): isolate getInstrumentation from production addHook (Ruben Bridgewater) #8396 - [
1b83d35bbb] - (SEMVER-PATCH) refactor(lambda): collapse runtime/ritm.js into index.js (Ruben Bridgewater) #8397 - [
7ffc20933c] - (SEMVER-PATCH) ci(benchmarks): fail sirun job when individual variants crash (Fayssal DEFAA) #8292 - [
a78d2d57d7] - (SEMVER-PATCH) perf(couchbase): cache the per-operation channel bag (Ruben Bridgewater) #8373 - [
fc09317297] - (SEMVER-PATCH) docs: fix legacyBaggageEnabled default value and MIGRATING.md (Ruben Bridgewater) #8317 - [
242bdf9f90] - (SEMVER-PATCH) fix(llmobs): avoid malformed x-datadog-tags when carrier header is unset (Grace Williams) #8366 - [
89ae70d027] - (SEMVER-PATCH) perf(graphql): trim per-resolver allocations (Ruben Bridgewater) #8309 - [
6da7add04d] - (SEMVER-PATCH) refactor(config): gate experimental.iast aliases off in v6 (Ruben Bridgewater) #8320 - [
973a882bd3] - (SEMVER-PATCH) test(pg): pin prepared-statement reuse under DBM full mode (Ruben Bridgewater) #8398 - [
c8d56550fd] - (SEMVER-PATCH) chore: support re-runs in the community PR CI script (Ruben Bridgewater) #8385 - [
af652f0ad2] - (SEMVER-PATCH) perf(pg): assign the injectable text directly when configurable (Ruben Bridgewater) #8372 - [
cd377ffa8d] - (SEMVER-PATCH) fix(fetch): rename globalThis.fetch wrapper from "value" to "fetch" (Ruben Bridgewater) #8406 - [
e55e65b7f8] - (SEMVER-PATCH) perf(redis): tighten per-command instrumentation (Ruben Bridgewater) #8310 - [
985b1d0322] - (SEMVER-PATCH) test(http): cover server-side request hook resource.name override (Ruben Bridgewater) #8399 - [
ff25b95aa9] - (SEMVER-PATCH) chore(ci) update one-pipeline (gh-worker-campaigns-3e9aa4[bot]) #8424 - [
5f6e1bb9be] - (SEMVER-PATCH) chore(benchmark): drop Node 18 from sirun matrix and add Node 26 (Ruben Bridgewater) #8423 - [
81e10d12de] - (SEMVER-PATCH) perf(encode): emit span fields and event attributes as compact msgpack ints (Ruben Bridgewater) #8229 - [
f73d984145] - (SEMVER-PATCH) ci: activate codecov coverage minimum for PRs (Ruben Bridgewater) #8209 - [
e8c394c014] - (SEMVER-PATCH) fix(llmobs): bound Bedrock token-headers cache (Ruben Bridgewater) #8161 - [
6b370862a5] - (SEMVER-MINOR) docs(appsec): drop deprecated extended-headers and rasp.bodyCollection types in v6 (Ruben Bridgewater) #8322 - [
2b48b7991f] - (SEMVER-PATCH) fix(benchmark): restore five crashing sirun bench groups (Ruben Bridgewater) #8307 - [
60cfa5c013] - (SEMVER-PATCH) [test optimization] Mitigatevitestflakiness (Juan Antonio Fernández de Alba) #8417 - [
841b085491] - (SEMVER-PATCH) [test optimization] Restore retries to test optimization tests (Juan Antonio Fernández de Alba) #8414 - [
47d6ffedc1] - (SEMVER-PATCH) [test optimization] Mitigate jest flakiness (Juan Antonio Fernández de Alba) #8415 - [
084086b666] - (SEMVER-PATCH) test(ci-visibility): disable real net access in git_metadata (Ruben Bridgewater) #8416 - [
e9eca7962d] - (SEMVER-MINOR) Send hidden tags under _dd.ci.library_configuration_error in every event of a test session (Sebastián Kay) #8274 - [
e276b97573] - (SEMVER-PATCH) [test optimization] bump cypress latest version (Juan Antonio Fernández de Alba) #8365 - [
9fad4a59bd] - (SEMVER-PATCH) [test optimization] bump vitest latest version (Juan Antonio Fernández de Alba) #8383 - [
1407421603] - (SEMVER-PATCH) chore: key the cache on DD_TRACE_GIT_METADATA_ENABLED (Ruben Bridgewater) #8395 - [
b92bdc19fa] - (SEMVER-PATCH) [test optimization] Use duration buckets for cypress EFD retries (Juan Antonio Fernández de Alba) #8290 - [
914484dd16] - (SEMVER-PATCH) docs(iast): drop deprecated securityControls type (Ruben Bridgewater) #8315 - [
0b494e8792] - (SEMVER-PATCH) chore(deps): bump the test-versions group across 1 directory with 2 updates (dependabot[bot]) #8410 - [
807fceb14d] - (SEMVER-PATCH) chore(deps): bump openai (dependabot[bot]) #8360 - [
f5ee7b20de] - (SEMVER-PATCH) fix(tracing): fix TypeError in ritm.js when requiring node:-prefixed built-in modules (Yuichi Uchida) #8304 - [
057685610b] - (SEMVER-PATCH) fix(stacktrace): filter dd-trace instrumentation frames for any repo directory name (Roch Devost) #8301 - [
a39c44ed42] - (SEMVER-PATCH) test(ws): refactor lifecycle hooks to use dynamic ports and separate afterEach (Roch Devost) #8367 - [
e3a718bae7] - (SEMVER-PATCH) chore(deps-dev): bump nock from 13.5.6 to 14.0.14 (dependabot[bot]) #8280 - [
a3bb4cd3af] - (SEMVER-PATCH) ci: replace CodeQL workflow with default setup configuration (Roch Devost) #8380 - [
47591c3fde] - (SEMVER-PATCH) perf(aws-sdk): trim per-response allocations (Ruben Bridgewater) #8328 - [
c05e122cbe] - (SEMVER-PATCH) perf(mongodb): cache the per-connection topology shape (Ruben Bridgewater) #8370 - [
fc437471cc] - (SEMVER-PATCH) perf(database): cache the DBM SQL injection comment per connection (Ruben Bridgewater) #8371 - [
8d6b8824d2] - (SEMVER-PATCH) perf(grpc): cache method metadata, drop banned for-in walks (Ruben Bridgewater) #8377 - [
5c2656c36b] - (SEMVER-PATCH) chore(deps): bump dc-polyfill from 0.1.10 to 0.1.11 (Brian Marks) #8369 - [
e05e6c6784] - (SEMVER-PATCH) perf(pubsub): trim per-message allocations in publish hot path (Ruben Bridgewater) #8374 - [
9fb4d152b2] - (SEMVER-PATCH) perf(mongodb): fold limit-depth and bigint sanitisation into one pass (Ruben Bridgewater) #8375 - [
c610358953] - (SEMVER-PATCH) fix(grpc): require a colon and a strictly numeric tail before tagging… (Ruben Bridgewater) #8378 - [
a46860bc55] - (SEMVER-PATCH) refactor(azure-metadata): parse WEBSITE_OWNER_NAME without regex (Ruben Bridgewater) #8348 - [
8e9d38b0d3] - (SEMVER-PATCH) docs(plugins): drop deprecated whitelist/blacklist plugin types from v6 surface (Ruben Bridgewater) #8321 - [
43de16c356] - (SEMVER-PATCH) chore(couchbase): drop SDK 2.x instrumentation hook (Ruben Bridgewater) #8362 - [
b893e3165d] - (SEMVER-PATCH) test: add a few database tests to cover recent reports better (Ruben Bridgewater) #7534 - [
26f3793cd9] - (SEMVER-PATCH) fix(aws-sdk): global crypto error (Pablo Erhard) #8368 - [
5802bcb274] - (SEMVER-PATCH) fix(plugin-mysql): destructure CLIENT_PORT_KEY from the constants module (Ruben Bridgewater) #8303 - [
5e54f8226f] - (SEMVER-PATCH) [test optimization] Bump playwright support to 1.59 (Juan Antonio Fernández de Alba) #8363 - [
b3c20f8cf1] - (SEMVER-PATCH) [test optimization] Bump cucumber latest version (Juan Antonio Fernández de Alba) #8364 - [
a5834a8f30] - (SEMVER-PATCH) [test optimization] Support Jest 30.4.1 (Juan Antonio Fernández de Alba) #8361 - [
aa3c020225] - (SEMVER-PATCH) fix(config): disable OTLP only when protocolVersion is explicitly set (Ruben Bridgewater) #8335 - [
0b803f55de] - (SEMVER-PATCH) [test-optimization] Propagate ITR skipping enabled tag to suites and tests (Andrey Marchenko) #8332 - [
7350d99b0f] - (SEMVER-PATCH) [test optimization] Use duration buckets for playwright EFD retries (Juan Antonio Fernández de Alba) #8289
Datadog dd-trace-py · v4.8.4
Estimated end-of-life date, accurate to within three months: 05-2027 See the support level definitions for more information.
Bug Fixes
- telemetry: This change resolves an issue where malformed installed distribution metadata caused a single bad
dist-infoentry to flood stderr with repeated tracebacks.
Full Changelog: https://github.com/DataDog/dd-trace-py/compare/v4.8.3...v4.8.4
Datadog dd-trace-py · v4.8.3
Estimated end-of-life date, accurate to within three months: 05-2027 See the support level definitions for more information.
Bug Fixes
- azure_cosmos: This change removes the http.status_code tags from Azure CosmosDB spans and replaces them with the use of the db.response.status_code metric. For customers using ddtrace v4.8.0 and relying on the http.status_code tag of cosmosdb.query spans, this is a breaking change.