Repository navigation
feat(debugger): support agentless intake - #9881
Conversation
|
a65a595 to
86fda0f
Compare
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #9881 +/- ##
========================================
Coverage 98.62% 98.62%
========================================
Files 998 1000 +2
Lines 154115 154434 +319
Branches 13332 13009 -323
========================================
+ Hits 151996 152316 +320
+ Misses 2119 2118 -1 Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
86fda0f to
2d46aee
Compare
BenchmarksBenchmark execution time: 2026-09-02 17:56:18 Comparing candidate commit 0591a29 in PR branch Found 0 performance improvements and 0 performance regressions! Performance is the same for 2297 metrics, 13 unstable metrics.
|
Agentless mode disables the Agent Remote Config path, which leaves Dynamic Instrumentation without a probe source. One Remote Config manager owns lifecycle and applied state for both transports. Libdatadog handles only direct backend polling. Stopped poll generations cannot re-arm or overlap a restarted poll after an in-flight request completes.
Agentless polling duplicated the Agent parser, dispatch, and scheduler ownership, so acknowledgements and lifecycle fixes could drift between transports. Keep the existing RemoteConfig state machine and adapt libdatadog at its fetch boundary. Agentless mode no longer overrides the customer's Remote Config or Dynamic Instrumentation settings.
Agent and agentless updates used separate transaction and dispatch flows, so batch outcomes and acknowledgement behavior could drift. Translate Agent responses into the same change records libdatadog returns, then process both through one path.
The native fetch promise owns completion. The transaction outcome map owns whether a product handler runs. Duplicating both contracts let agent and agentless polling diverge.
DD_AGENTLESS_ENABLED does not require an API key. Adding the undefined value to the request headers makes Node reject the request before network I/O.
libdatadog now owns agentless context storage, capability decoding, and config state. Keeping a JavaScript forwarding layer duplicates those contracts and lets both implementations drift.
Caller-supplied sites could embed URL credentials and redirect authenticated requests to another host. This validates the complete hostname before constructing agentless requests.
A synchronous setConfigState failure could escape a delayed acknowledgement or stop later batch reconciliation. The native boundary now contains the failure without changing applied state.
Agentless Remote Config sent the Agent connection address as its backend hostname, so default setups reported loopback instead of the application host.
2d46aee to
b612ad8
Compare
Overall package sizeSelf size: 8.73 MB Dependency sizes| name | version | self size | total size | |------|---------|-----------|------------| | import-in-the-middle | 3.4.0 | 127.33 kB | 447.04 kB | | opentracing | 0.14.7 | 194.81 kB | 194.81 kB | | dc-polyfill | 0.1.11 | 25.74 kB | 25.74 kB |🤖 This report was automatically generated by heaviest-objects-in-the-universe |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: b612ad8cf0
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
libdatadog-nodejs shares an internal contract with the tracer. Native setup and state methods now surface contract violations instead of silently disabling Remote Config.\n\nAWS Lambda MicroVM mode disables Remote Config before native construction, so it does not require runtime ID synchronization.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e99b97f511
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
Debugger uploads bypassed proxy selection, so proxy-only environments could not reach direct intake. Remote Config delayed native subscription changes until the next poll.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 0591a29eb9
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
Dynamic Instrumentation had no probe source and could not deliver debugger payloads when no local Datadog Agent was available. Add direct, API-key authenticated intake and libdatadog-backed Remote Config for agentless deployments, including proxy-aware requests and sequential probe acknowledgements. Use one Remote Config state machine for Agent and agentless transports so probe updates, removals, capability negotiation, and lifecycle remain consistent. Validate intake hostnames before sending credentials.
Dynamic Instrumentation had no probe source and could not deliver debugger payloads when no local Datadog Agent was available. Add direct, API-key authenticated intake and libdatadog-backed Remote Config for agentless deployments, including proxy-aware requests and sequential probe acknowledgements. Use one Remote Config state machine for Agent and agentless transports so probe updates, removals, capability negotiation, and lifecycle remain consistent. Validate intake hostnames before sending credentials.
Dynamic Instrumentation had no probe source and could not deliver debugger payloads when no local Datadog Agent was available. Add direct, API-key authenticated intake and libdatadog-backed Remote Config for agentless deployments, including proxy-aware requests and sequential probe acknowledgements. Use one Remote Config state machine for Agent and agentless transports so probe updates, removals, capability negotiation, and lifecycle remain consistent. Validate intake hostnames before sending credentials.
Dynamic Instrumentation had no probe source and could not deliver debugger payloads when no local Datadog Agent was available. Add direct, API-key authenticated intake and libdatadog-backed Remote Config for agentless deployments, including proxy-aware requests and sequential probe acknowledgements. Use one Remote Config state machine for Agent and agentless transports so probe updates, removals, capability negotiation, and lifecycle remain consistent. Validate intake hostnames before sending credentials.
What does this PR do?
Adds agentless Dynamic Instrumentation delivery and Remote Config. Snapshot,
log, and diagnostic payloads are sent directly to
https://debugger-intake.<DD_SITE>/api/v2/debuggerwith API-key authentication.In agentless mode, the debugger worker uses libdatadog's
RemoteConfigFetcherto subscribe to theLIVE_DEBUGGINGproduct, apply probeadd/update/remove changes sequentially, and report ACK or error status for each
configuration. Agent-mode endpoint discovery and Remote Config behavior remain
unchanged.
Motivation
Dynamic Instrumentation should work without a local Datadog Agent, including
receiving probes dynamically rather than requiring a probe file.
Additional Notes
DataDog/libdatadog-nodejs#214
and
@datadog/libdatadog@^0.19.0.DD_API_KEYin agentless mode.Generated by Codex.
Validation
tests passed.
RemoteConfigFetcherfrom a local libdatadog-nodejs fix express not always propagating context to middleware #214 build wasverified against a mock HTTPS Remote Config endpoint.
until the unpublished
@datadog/libdatadog@^0.19.0can enteryarn.lock.