Skip to content

feat(config): introduce the global DD_AGENTLESS_ENABLED flag - #19631

Draft
bwoebi wants to merge 1 commit into
mainfrom
bob/agentless-setting
Draft

feat(config): introduce the global DD_AGENTLESS_ENABLED flag#19631
bwoebi wants to merge 1 commit into
mainfrom
bob/agentless-setting

Conversation

@bwoebi

@bwoebi bwoebi commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Centralizing any agentless configs in a single place, making DD_AGENTLESS_ENABLED the fallback for any more specific agentless settings.

Also integrates agentless RC in particular.

@datadog-prod-us1-5

datadog-prod-us1-5 Bot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Tests

🎉 All green!

🧪 All tests passed
❄️ No new flaky tests detected

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: 5d13957 | Docs | Datadog PR Page | Give us feedback!

@pr-commenter

pr-commenter Bot commented Aug 11, 2026

Copy link
Copy Markdown

Benchmarks

Benchmark execution time: 2026-08-12 14:46:25

Comparing candidate commit 5d13957 in PR branch bob/agentless-setting with baseline commit 14ff8ee in branch main.

Found 0 performance improvements and 6 performance regressions! Performance is the same for 613 metrics, 10 unstable metrics.

scenario:httppropagationinject-ids_only

  • 🟥 execution_time [+2.037µs; +2.233µs] or [+9.586%; +10.510%]

scenario:iastaspects-lower_aspect

  • 🟥 execution_time [+26.951µs; +30.948µs] or [+11.492%; +13.197%]

scenario:iastaspects-title_aspect

  • 🟥 execution_time [+24.081µs; +27.404µs] or [+9.237%; +10.511%]

scenario:iastaspectsospath-ospathbasename_aspect

  • 🟥 execution_time [+92.106µs; +97.826µs] or [+23.063%; +24.495%]

scenario:telemetryaddmetric-1-count-metric-1-times

  • 🟥 execution_time [+249.921ns; +308.589ns] or [+9.601%; +11.855%]

scenario:tracer-small

  • 🟥 execution_time [+33.820µs; +35.842µs] or [+9.574%; +10.146%]

@bwoebi bwoebi changed the title Introduce the global DD_AGENTLESS_ENABLED flag feat(agentless): Introduce the global DD_AGENTLESS_ENABLED flag Aug 11, 2026
@bwoebi bwoebi changed the title feat(agentless): Introduce the global DD_AGENTLESS_ENABLED flag feat(config): Introduce the global DD_AGENTLESS_ENABLED flag Aug 11, 2026
Comment thread ddtrace/internal/settings/dynamic_instrumentation.py Outdated
@bwoebi
bwoebi force-pushed the bob/agentless-setting branch from acc71f6 to 519b315 Compare August 12, 2026 11:10
@cit-pr-commenter-54b7da

cit-pr-commenter-54b7da Bot commented Aug 12, 2026

Copy link
Copy Markdown

Codeowners resolved as

Resolved from the full PR diff against main using the target branch CODEOWNERS file.
CODEOWNERS team requests not listed below are not required by the current file set.

.github/workflows/build_python_3.yml                                    @DataDog/python-guild @DataDog/apm-core-python
.gitlab/scripts/windows-docker-build.ps1                                @DataDog/python-guild @DataDog/apm-core-python
ddtrace/debugging/_uploader.py                                          @DataDog/debugger-python
ddtrace/internal/native/_native.pyi                                     @DataDog/apm-core-python
ddtrace/internal/remoteconfig/client.py                                 @DataDog/remote-config @DataDog/apm-core-python
ddtrace/internal/remoteconfig/worker.py                                 @DataDog/remote-config @DataDog/apm-core-python
ddtrace/internal/settings/_agentless.py                                 @DataDog/apm-core-python
ddtrace/internal/settings/_config.py                                    @DataDog/python-guild @DataDog/apm-sdk-capabilities-python
ddtrace/internal/settings/_supported_configurations.py                  @DataDog/apm-sdk-capabilities-python
ddtrace/internal/settings/_telemetry.py                                 @DataDog/apm-core-python
ddtrace/internal/settings/dynamic_instrumentation.py                    @DataDog/debugger-python
ddtrace/internal/symbol_db/symbols.py                                   @DataDog/debugger-python
ddtrace/internal/telemetry/writer.py                                    @DataDog/apm-python
docs/configuration.rst                                                  @DataDog/python-guild
releasenotes/notes/agentless-enabled-global-setting-3f1a9c2e7b4d8065.yaml  @DataDog/apm-python
src/native/Cargo.lock                                                   @DataDog/apm-core-python
src/native/Cargo.toml                                                   @DataDog/apm-core-python
src/native/rc_shm.rs                                                    @DataDog/apm-core-python
src/native/remote_config.rs                                             @DataDog/apm-core-python
supported-configurations.json                                           @DataDog/apm-sdk-capabilities-python
tests/internal/remoteconfig/test_remoteconfig_native.py                 @DataDog/remote-config @DataDog/apm-core-python
tests/telemetry/test_writer.py                                          @DataDog/apm-python
tests/tracer/test_global_config.py                                      @DataDog/apm-sdk-capabilities-python
tests/utils.py                                                          @DataDog/python-guild

@cit-pr-commenter-54b7da

cit-pr-commenter-54b7da Bot commented Aug 12, 2026

Copy link
Copy Markdown

Dependency direction analysis

⚠️ Existing dependency direction violations

There are 256 dependency direction violations that already exist on the base branch and have not been changed by this PR.

Show existing violations (showing 5 of 256 highest severity)
ddtrace.internal.tracemethods -×-> ddtrace.trace  (internal-core -> product:tracing, score=134)
ddtrace.llmobs._integrations.vllm -×-> ddtrace.trace  (product:llmobs -> product:tracing, score=132)
ddtrace.profiling.scheduler -×-> ddtrace.trace  (product:profiling -> product:tracing, score=132)
ddtrace.internal.opentelemetry.trace -×-> ddtrace.trace  (product:opentelemetry -> product:tracing, score=132)
ddtrace.llmobs._integrations.mcp -×-> ddtrace.trace  (product:llmobs -> product:tracing, score=132)

To see all violations, download the layers-base.json and layers-pr.json artifacts from this CI job and run:

uv run --script scripts/import-analysis/layers.py compare layers-base.json layers-pr.json

@cit-pr-commenter-54b7da

cit-pr-commenter-54b7da Bot commented Aug 12, 2026

Copy link
Copy Markdown

Circular import analysis

⚠️ Existing circular imports

There are 6 circular imports that already exist on the base branch and have not been changed by this PR.

Show existing cycles (showing 5 of 6 shortest)
ddtrace.contrib.internal.pytorch._distributed -> ddtrace.contrib.internal.pytorch._rank_root -> ddtrace.contrib.internal.pytorch._distributed
ddtrace.contrib.internal.django.patch -> ddtrace.contrib.internal.django.response -> ddtrace.contrib.internal.django.patch
ddtrace.appsec._common_module_patches -> ddtrace.appsec._listeners -> ddtrace.appsec._common_module_patches
ddtrace.errortracking._handled_exceptions.bytecode_injector -> ddtrace.errortracking._handled_exceptions.callbacks -> ddtrace.errortracking._handled_exceptions.collector -> ddtrace.errortracking._handled_exceptions.bytecode_reporting -> ddtrace.errortracking._handled_exceptions.bytecode_injector
ddtrace.llmobs -> ddtrace.llmobs._evaluators -> ddtrace.llmobs._evaluators.format -> ddtrace.llmobs._experiment -> ddtrace.llmobs

To see all cycles, download the cycles-base.json and cycles-pr.json artifacts from this CI job and run:

uv run --script scripts/import-analysis/cycles.py compare cycles-base.json cycles-pr.json

@bwoebi bwoebi changed the title feat(config): Introduce the global DD_AGENTLESS_ENABLED flag feat(config): introduce the global DD_AGENTLESS_ENABLED flag Aug 12, 2026
Base automatically changed from bob/libdd-debugger to main August 12, 2026 13:14
@bwoebi
bwoebi force-pushed the bob/agentless-setting branch from 519b315 to 0b92f6e Compare August 12, 2026 13:20
@bwoebi
bwoebi force-pushed the bob/agentless-setting branch from 0b92f6e to 5d13957 Compare August 12, 2026 14:18
@bwoebi

bwoebi commented Aug 12, 2026

Copy link
Copy Markdown
Contributor Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 5d139570b7

ℹ️ 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".

ci_visibility = DDConfig.d(bool, lambda c: c.enabled if c._ci_visibility is None else c._ci_visibility)
# LLM Observability keeps a third state: left unset (and with no global switch) it
# probes the agent at startup and decides then, so it must not collapse to False.
llmobs = DDConfig.d(t.Optional[bool], lambda c: True if c.enabled and c._llmobs is None else c._llmobs)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Keep Remote Configuration enabled with agentless LLMObs

When DD_AGENTLESS_ENABLED=true and LLMObs starts without an explicit DD_REMOTE_CONFIGURATION_ENABLED, this derived True reaches LLMObs.enable(), where the existing branch in ddtrace/llmobs/_llmobs.py:1009-1012 sets _remote_config_enabled to false and disables the poller. As a result, the advertised global agentless combination silently stops Remote Configuration whenever LLMObs is enabled; the legacy LLMObs-only disable path needs to distinguish an inherited global setting.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants