Skip to content

refactor: migrate rshell into datadog agent - #58502

Open
matt-dz wants to merge 29 commits into
mainfrom
matthew.deguzman/rshell-migration
Open

matt-dz wants to merge 29 commits into
mainfrom
matthew.deguzman/rshell-migration

Conversation

@matt-dz

@matt-dz matt-dz commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

What does this PR do?

Moves the restricted shell (rshell) into the Agent repository as the in-tree module github.com/DataDog/datadog-agent/pkg/rshell. Until now it was the external dependency github.com/DataDog/rshell.

  • Source: pkg/rshell is synced with DataDog/rshell@6871bdf6 (rshell main on 2026-10-28, through fix(interp): handle brace-generated invalid glob patterns without panicking rshell#704), with the import path rewritten. It is registered in modules.yml, and every Agent module now resolves it through a replace to ./pkg/rshell.
  • Consumers: the private action runner now imports pkg/rshell/privilegedhelper (Bazel target //pkg/rshell/privilegedhelper) instead of github.com/DataDog/rshell. The Renovate rule for DataDog/rshell is removed.
  • Agent rules: rshell now follows the Agent's Go lint rules, filename checks, Markdown link checks and gazelle-generated BUILD.bazel files.
  • CI:
    • GitLab (.gitlab/test/rshell.yml): rshell:checks (source-file verification, compliance, landlock/seccomp tests), rshell:bash (tests against bash on the docker_x64 image), and rshell:fuzz, a parallel: matrix job with one entry per fuzz package. It uses the shared .bazel:defs:cache:progressive cache, and rshell:checks runs dda inv rshell.verify-fuzz-matrix to keep the matrix in sync with the fuzz targets.
    • GitHub Actions: .github/workflows/rshell.yml (tests and per-package fuzz matrix) and rshell-analysis.yml.
    • These jobs run only when rshell-related paths change, or on main and release branches.
  • Ownership: CODEOWNERS and JOBOWNERS entries for @DataDog/dd-agent-mcp and @DataDog/fleet-remediation. dd-agent-mcp is mapped to the FLREM Jira project.
  • Fuzzing: dda inv fuzz takes a --targets package and runs each fuzz target in it. If Go's fuzzer fails a run with a bare context deadline exceeded when -fuzztime runs out, and writes no failing input, the run counts as a pass. Any run that prints Failing input written to … still fails.
  • Differences from rshell main (all migration-specific):
    • Agent lint rewrites with no behavior change (errors.New for constant errors, unused parameters, ignored errors, naming), plus the allowlist entries they need.
    • The head permission test starts its child with only PATH and TMPDIR, so under Bazel coverage as root it doesn't write into root-owned outputs.
    • The privileged-helper createListener tests skip when / is owned by neither root nor the caller, which happens in an unprivileged Bazel sandbox. CI runs Bazel as root and still runs them.
    • The version comes from the Agent build stamp, falling back to Go build info.
    • 27 scenario files are shortened to fit the Agent's path-length limit.
    • Bazel/dda replace the go commands in the Makefile and docs.
    • rshell repo tooling is dropped (.github, .claude, hooks, .go-version, repository.datadog.yml).
    • rshell's own LICENSE-3rdparty.csv and the compliance tests that checked it are dropped; the Agent's root LICENSE-3rdparty.csv covers its dependencies.

Motivation

Building rshell in the Agent repository removes the release and version-bump cycle between DataDog/rshell and the Agent. Changes to the shell and to its Agent consumers can land and be tested in one PR.

Describe how you validated your changes

  • The rshell unit, scenario, bash-comparison and fuzz jobs pass in GitLab and GitHub Actions.
  • All lint_* jobs and bazel:run-gazelle pass (latest run: 95/95 lint, gazelle and fuzz checks green).
  • Locally: bazel run //:gazelle makes no further changes, dda inv linter.go --targets=./pkg/rshell/... reports 0 issues, and dda inv linter.python passes.
  • The fuzz tolerance matches what Go does: testing/fuzz.go prints Failing input written to only for a real crash, and a coordinator timeout prints only the error.

Additional Notes

Fuzz timeouts. Upstream rshell CI already treats Go's -fuzztime boundary timeout as a pass. Moving the fuzz jobs onto dda inv fuzz lost that, so a random target failed on each run (ls, lsof, jq, ntfsmft) without any crashing input. The tolerance above restores upstream's behaviour, with a stricter check: upstream only looks for a _test.go:N: line, which would also hide panics in non-test code.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

AI review by Codex (OpenAI) - workflow run

The patch is correct based on static review. I found no actionable regressions in the migration, build wiring, or authorization-preview changes examined. Tests could not run because the read-only environment lacks a Go module cache.

@dd-octo-sts

dd-octo-sts Bot commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

Go Package Import Differences

Baseline: b911073
Comparison: f6de142

binaryosarchchange
privateactionrunnerlinuxamd64
+52, -52
+github.com/DataDog/datadog-agent/pkg/rshell/allowedpaths
+github.com/DataDog/datadog-agent/pkg/rshell/builtins
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/awk
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/break
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/cat
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/cd
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/continue
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/cut
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/df
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/du
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/echo
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/exit
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/false
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/find
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/free
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/grep
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/head
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/help
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/ip
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/journalctl
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/jq
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/logrotate
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/ls
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/lsof
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/ping
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/pmap
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/printf
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/ps
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/pwd
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/read
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/rm
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/sed
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/sha256sum
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/sort
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/ss
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/stat
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/strings_cmd
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/systemctl
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/tail
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/tee
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/testcmd
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/tr
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/true
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/truncate
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/uname
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/uniq
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/uptime
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/vmstat
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/wc
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/xargs
+github.com/DataDog/datadog-agent/pkg/rshell/interp
+github.com/DataDog/datadog-agent/pkg/rshell/privilegedhelper
-github.com/DataDog/rshell/allowedpaths
-github.com/DataDog/rshell/builtins
-github.com/DataDog/rshell/builtins/awk
-github.com/DataDog/rshell/builtins/break
-github.com/DataDog/rshell/builtins/cat
-github.com/DataDog/rshell/builtins/cd
-github.com/DataDog/rshell/builtins/continue
-github.com/DataDog/rshell/builtins/cut
-github.com/DataDog/rshell/builtins/df
-github.com/DataDog/rshell/builtins/du
-github.com/DataDog/rshell/builtins/echo
-github.com/DataDog/rshell/builtins/exit
-github.com/DataDog/rshell/builtins/false
-github.com/DataDog/rshell/builtins/find
-github.com/DataDog/rshell/builtins/free
-github.com/DataDog/rshell/builtins/grep
-github.com/DataDog/rshell/builtins/head
-github.com/DataDog/rshell/builtins/help
-github.com/DataDog/rshell/builtins/ip
-github.com/DataDog/rshell/builtins/journalctl
-github.com/DataDog/rshell/builtins/jq
-github.com/DataDog/rshell/builtins/logrotate
-github.com/DataDog/rshell/builtins/ls
-github.com/DataDog/rshell/builtins/lsof
-github.com/DataDog/rshell/builtins/ping
-github.com/DataDog/rshell/builtins/pmap
-github.com/DataDog/rshell/builtins/printf
-github.com/DataDog/rshell/builtins/ps
-github.com/DataDog/rshell/builtins/pwd
-github.com/DataDog/rshell/builtins/read
-github.com/DataDog/rshell/builtins/rm
-github.com/DataDog/rshell/builtins/sed
-github.com/DataDog/rshell/builtins/sha256sum
-github.com/DataDog/rshell/builtins/sort
-github.com/DataDog/rshell/builtins/ss
-github.com/DataDog/rshell/builtins/stat
-github.com/DataDog/rshell/builtins/strings_cmd
-github.com/DataDog/rshell/builtins/systemctl
-github.com/DataDog/rshell/builtins/tail
-github.com/DataDog/rshell/builtins/tee
-github.com/DataDog/rshell/builtins/testcmd
-github.com/DataDog/rshell/builtins/tr
-github.com/DataDog/rshell/builtins/true
-github.com/DataDog/rshell/builtins/truncate
-github.com/DataDog/rshell/builtins/uname
-github.com/DataDog/rshell/builtins/uniq
-github.com/DataDog/rshell/builtins/uptime
-github.com/DataDog/rshell/builtins/vmstat
-github.com/DataDog/rshell/builtins/wc
-github.com/DataDog/rshell/builtins/xargs
-github.com/DataDog/rshell/interp
-github.com/DataDog/rshell/privilegedhelper
privateactionrunnerlinuxarm64
+52, -52
+github.com/DataDog/datadog-agent/pkg/rshell/allowedpaths
+github.com/DataDog/datadog-agent/pkg/rshell/builtins
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/awk
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/break
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/cat
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/cd
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/continue
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/cut
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/df
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/du
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/echo
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/exit
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/false
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/find
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/free
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/grep
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/head
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/help
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/ip
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/journalctl
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/jq
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/logrotate
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/ls
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/lsof
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/ping
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/pmap
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/printf
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/ps
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/pwd
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/read
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/rm
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/sed
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/sha256sum
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/sort
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/ss
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/stat
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/strings_cmd
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/systemctl
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/tail
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/tee
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/testcmd
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/tr
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/true
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/truncate
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/uname
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/uniq
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/uptime
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/vmstat
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/wc
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/xargs
+github.com/DataDog/datadog-agent/pkg/rshell/interp
+github.com/DataDog/datadog-agent/pkg/rshell/privilegedhelper
-github.com/DataDog/rshell/allowedpaths
-github.com/DataDog/rshell/builtins
-github.com/DataDog/rshell/builtins/awk
-github.com/DataDog/rshell/builtins/break
-github.com/DataDog/rshell/builtins/cat
-github.com/DataDog/rshell/builtins/cd
-github.com/DataDog/rshell/builtins/continue
-github.com/DataDog/rshell/builtins/cut
-github.com/DataDog/rshell/builtins/df
-github.com/DataDog/rshell/builtins/du
-github.com/DataDog/rshell/builtins/echo
-github.com/DataDog/rshell/builtins/exit
-github.com/DataDog/rshell/builtins/false
-github.com/DataDog/rshell/builtins/find
-github.com/DataDog/rshell/builtins/free
-github.com/DataDog/rshell/builtins/grep
-github.com/DataDog/rshell/builtins/head
-github.com/DataDog/rshell/builtins/help
-github.com/DataDog/rshell/builtins/ip
-github.com/DataDog/rshell/builtins/journalctl
-github.com/DataDog/rshell/builtins/jq
-github.com/DataDog/rshell/builtins/logrotate
-github.com/DataDog/rshell/builtins/ls
-github.com/DataDog/rshell/builtins/lsof
-github.com/DataDog/rshell/builtins/ping
-github.com/DataDog/rshell/builtins/pmap
-github.com/DataDog/rshell/builtins/printf
-github.com/DataDog/rshell/builtins/ps
-github.com/DataDog/rshell/builtins/pwd
-github.com/DataDog/rshell/builtins/read
-github.com/DataDog/rshell/builtins/rm
-github.com/DataDog/rshell/builtins/sed
-github.com/DataDog/rshell/builtins/sha256sum
-github.com/DataDog/rshell/builtins/sort
-github.com/DataDog/rshell/builtins/ss
-github.com/DataDog/rshell/builtins/stat
-github.com/DataDog/rshell/builtins/strings_cmd
-github.com/DataDog/rshell/builtins/systemctl
-github.com/DataDog/rshell/builtins/tail
-github.com/DataDog/rshell/builtins/tee
-github.com/DataDog/rshell/builtins/testcmd
-github.com/DataDog/rshell/builtins/tr
-github.com/DataDog/rshell/builtins/true
-github.com/DataDog/rshell/builtins/truncate
-github.com/DataDog/rshell/builtins/uname
-github.com/DataDog/rshell/builtins/uniq
-github.com/DataDog/rshell/builtins/uptime
-github.com/DataDog/rshell/builtins/vmstat
-github.com/DataDog/rshell/builtins/wc
-github.com/DataDog/rshell/builtins/xargs
-github.com/DataDog/rshell/interp
-github.com/DataDog/rshell/privilegedhelper
privateactionrunnerwindowsamd64
+53, -53
+github.com/DataDog/datadog-agent/pkg/rshell/allowedpaths
+github.com/DataDog/datadog-agent/pkg/rshell/builtins
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/awk
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/break
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/cat
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/cd
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/continue
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/cut
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/df
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/du
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/echo
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/exit
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/false
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/find
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/free
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/grep
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/head
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/help
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/ip
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/journalctl
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/jq
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/logrotate
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/ls
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/lsof
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/ntfsdu
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/ping
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/pmap
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/printf
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/ps
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/pwd
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/read
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/rm
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/sed
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/sha256sum
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/sort
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/ss
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/stat
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/strings_cmd
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/systemctl
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/tail
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/tee
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/testcmd
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/tr
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/true
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/truncate
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/uname
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/uniq
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/uptime
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/vmstat
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/wc
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/xargs
+github.com/DataDog/datadog-agent/pkg/rshell/interp
+github.com/DataDog/datadog-agent/pkg/rshell/privilegedhelper
-github.com/DataDog/rshell/allowedpaths
-github.com/DataDog/rshell/builtins
-github.com/DataDog/rshell/builtins/awk
-github.com/DataDog/rshell/builtins/break
-github.com/DataDog/rshell/builtins/cat
-github.com/DataDog/rshell/builtins/cd
-github.com/DataDog/rshell/builtins/continue
-github.com/DataDog/rshell/builtins/cut
-github.com/DataDog/rshell/builtins/df
-github.com/DataDog/rshell/builtins/du
-github.com/DataDog/rshell/builtins/echo
-github.com/DataDog/rshell/builtins/exit
-github.com/DataDog/rshell/builtins/false
-github.com/DataDog/rshell/builtins/find
-github.com/DataDog/rshell/builtins/free
-github.com/DataDog/rshell/builtins/grep
-github.com/DataDog/rshell/builtins/head
-github.com/DataDog/rshell/builtins/help
-github.com/DataDog/rshell/builtins/ip
-github.com/DataDog/rshell/builtins/journalctl
-github.com/DataDog/rshell/builtins/jq
-github.com/DataDog/rshell/builtins/logrotate
-github.com/DataDog/rshell/builtins/ls
-github.com/DataDog/rshell/builtins/lsof
-github.com/DataDog/rshell/builtins/ntfsdu
-github.com/DataDog/rshell/builtins/ping
-github.com/DataDog/rshell/builtins/pmap
-github.com/DataDog/rshell/builtins/printf
-github.com/DataDog/rshell/builtins/ps
-github.com/DataDog/rshell/builtins/pwd
-github.com/DataDog/rshell/builtins/read
-github.com/DataDog/rshell/builtins/rm
-github.com/DataDog/rshell/builtins/sed
-github.com/DataDog/rshell/builtins/sha256sum
-github.com/DataDog/rshell/builtins/sort
-github.com/DataDog/rshell/builtins/ss
-github.com/DataDog/rshell/builtins/stat
-github.com/DataDog/rshell/builtins/strings_cmd
-github.com/DataDog/rshell/builtins/systemctl
-github.com/DataDog/rshell/builtins/tail
-github.com/DataDog/rshell/builtins/tee
-github.com/DataDog/rshell/builtins/testcmd
-github.com/DataDog/rshell/builtins/tr
-github.com/DataDog/rshell/builtins/true
-github.com/DataDog/rshell/builtins/truncate
-github.com/DataDog/rshell/builtins/uname
-github.com/DataDog/rshell/builtins/uniq
-github.com/DataDog/rshell/builtins/uptime
-github.com/DataDog/rshell/builtins/vmstat
-github.com/DataDog/rshell/builtins/wc
-github.com/DataDog/rshell/builtins/xargs
-github.com/DataDog/rshell/interp
-github.com/DataDog/rshell/privilegedhelper
privateactionrunnerdarwinamd64
+52, -52
+github.com/DataDog/datadog-agent/pkg/rshell/allowedpaths
+github.com/DataDog/datadog-agent/pkg/rshell/builtins
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/awk
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/break
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/cat
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/cd
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/continue
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/cut
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/df
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/du
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/echo
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/exit
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/false
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/find
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/free
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/grep
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/head
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/help
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/ip
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/journalctl
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/jq
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/logrotate
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/ls
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/lsof
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/ping
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/pmap
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/printf
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/ps
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/pwd
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/read
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/rm
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/sed
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/sha256sum
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/sort
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/ss
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/stat
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/strings_cmd
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/systemctl
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/tail
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/tee
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/testcmd
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/tr
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/true
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/truncate
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/uname
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/uniq
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/uptime
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/vmstat
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/wc
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/xargs
+github.com/DataDog/datadog-agent/pkg/rshell/interp
+github.com/DataDog/datadog-agent/pkg/rshell/privilegedhelper
-github.com/DataDog/rshell/allowedpaths
-github.com/DataDog/rshell/builtins
-github.com/DataDog/rshell/builtins/awk
-github.com/DataDog/rshell/builtins/break
-github.com/DataDog/rshell/builtins/cat
-github.com/DataDog/rshell/builtins/cd
-github.com/DataDog/rshell/builtins/continue
-github.com/DataDog/rshell/builtins/cut
-github.com/DataDog/rshell/builtins/df
-github.com/DataDog/rshell/builtins/du
-github.com/DataDog/rshell/builtins/echo
-github.com/DataDog/rshell/builtins/exit
-github.com/DataDog/rshell/builtins/false
-github.com/DataDog/rshell/builtins/find
-github.com/DataDog/rshell/builtins/free
-github.com/DataDog/rshell/builtins/grep
-github.com/DataDog/rshell/builtins/head
-github.com/DataDog/rshell/builtins/help
-github.com/DataDog/rshell/builtins/ip
-github.com/DataDog/rshell/builtins/journalctl
-github.com/DataDog/rshell/builtins/jq
-github.com/DataDog/rshell/builtins/logrotate
-github.com/DataDog/rshell/builtins/ls
-github.com/DataDog/rshell/builtins/lsof
-github.com/DataDog/rshell/builtins/ping
-github.com/DataDog/rshell/builtins/pmap
-github.com/DataDog/rshell/builtins/printf
-github.com/DataDog/rshell/builtins/ps
-github.com/DataDog/rshell/builtins/pwd
-github.com/DataDog/rshell/builtins/read
-github.com/DataDog/rshell/builtins/rm
-github.com/DataDog/rshell/builtins/sed
-github.com/DataDog/rshell/builtins/sha256sum
-github.com/DataDog/rshell/builtins/sort
-github.com/DataDog/rshell/builtins/ss
-github.com/DataDog/rshell/builtins/stat
-github.com/DataDog/rshell/builtins/strings_cmd
-github.com/DataDog/rshell/builtins/systemctl
-github.com/DataDog/rshell/builtins/tail
-github.com/DataDog/rshell/builtins/tee
-github.com/DataDog/rshell/builtins/testcmd
-github.com/DataDog/rshell/builtins/tr
-github.com/DataDog/rshell/builtins/true
-github.com/DataDog/rshell/builtins/truncate
-github.com/DataDog/rshell/builtins/uname
-github.com/DataDog/rshell/builtins/uniq
-github.com/DataDog/rshell/builtins/uptime
-github.com/DataDog/rshell/builtins/vmstat
-github.com/DataDog/rshell/builtins/wc
-github.com/DataDog/rshell/builtins/xargs
-github.com/DataDog/rshell/interp
-github.com/DataDog/rshell/privilegedhelper
privateactionrunnerdarwinarm64
+52, -52
+github.com/DataDog/datadog-agent/pkg/rshell/allowedpaths
+github.com/DataDog/datadog-agent/pkg/rshell/builtins
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/awk
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/break
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/cat
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/cd
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/continue
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/cut
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/df
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/du
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/echo
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/exit
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/false
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/find
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/free
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/grep
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/head
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/help
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/ip
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/journalctl
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/jq
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/logrotate
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/ls
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/lsof
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/ping
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/pmap
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/printf
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/ps
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/pwd
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/read
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/rm
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/sed
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/sha256sum
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/sort
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/ss
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/stat
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/strings_cmd
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/systemctl
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/tail
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/tee
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/testcmd
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/tr
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/true
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/truncate
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/uname
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/uniq
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/uptime
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/vmstat
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/wc
+github.com/DataDog/datadog-agent/pkg/rshell/builtins/xargs
+github.com/DataDog/datadog-agent/pkg/rshell/interp
+github.com/DataDog/datadog-agent/pkg/rshell/privilegedhelper
-github.com/DataDog/rshell/allowedpaths
-github.com/DataDog/rshell/builtins
-github.com/DataDog/rshell/builtins/awk
-github.com/DataDog/rshell/builtins/break
-github.com/DataDog/rshell/builtins/cat
-github.com/DataDog/rshell/builtins/cd
-github.com/DataDog/rshell/builtins/continue
-github.com/DataDog/rshell/builtins/cut
-github.com/DataDog/rshell/builtins/df
-github.com/DataDog/rshell/builtins/du
-github.com/DataDog/rshell/builtins/echo
-github.com/DataDog/rshell/builtins/exit
-github.com/DataDog/rshell/builtins/false
-github.com/DataDog/rshell/builtins/find
-github.com/DataDog/rshell/builtins/free
-github.com/DataDog/rshell/builtins/grep
-github.com/DataDog/rshell/builtins/head
-github.com/DataDog/rshell/builtins/help
-github.com/DataDog/rshell/builtins/ip
-github.com/DataDog/rshell/builtins/journalctl
-github.com/DataDog/rshell/builtins/jq
-github.com/DataDog/rshell/builtins/logrotate
-github.com/DataDog/rshell/builtins/ls
-github.com/DataDog/rshell/builtins/lsof
-github.com/DataDog/rshell/builtins/ping
-github.com/DataDog/rshell/builtins/pmap
-github.com/DataDog/rshell/builtins/printf
-github.com/DataDog/rshell/builtins/ps
-github.com/DataDog/rshell/builtins/pwd
-github.com/DataDog/rshell/builtins/read
-github.com/DataDog/rshell/builtins/rm
-github.com/DataDog/rshell/builtins/sed
-github.com/DataDog/rshell/builtins/sha256sum
-github.com/DataDog/rshell/builtins/sort
-github.com/DataDog/rshell/builtins/ss
-github.com/DataDog/rshell/builtins/stat
-github.com/DataDog/rshell/builtins/strings_cmd
-github.com/DataDog/rshell/builtins/systemctl
-github.com/DataDog/rshell/builtins/tail
-github.com/DataDog/rshell/builtins/tee
-github.com/DataDog/rshell/builtins/testcmd
-github.com/DataDog/rshell/builtins/tr
-github.com/DataDog/rshell/builtins/true
-github.com/DataDog/rshell/builtins/truncate
-github.com/DataDog/rshell/builtins/uname
-github.com/DataDog/rshell/builtins/uniq
-github.com/DataDog/rshell/builtins/uptime
-github.com/DataDog/rshell/builtins/vmstat
-github.com/DataDog/rshell/builtins/wc
-github.com/DataDog/rshell/builtins/xargs
-github.com/DataDog/rshell/interp
-github.com/DataDog/rshell/privilegedhelper

@dd-octo-sts

dd-octo-sts Bot commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

Benchmarks

Benchmark execution time: 2026-10-30 13:51:42

Comparing candidate commit f6de142 in PR branch matthew.deguzman/rshell-migration with baseline commit 95b7e10 in branch main.

📊 Benchmarking dashboard

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

Explanation

This is an A/B test comparing a candidate commit's performance against that of a baseline commit. Performance changes are noted in the tables below as:

  • 🟩 = significantly better candidate vs. baseline
  • 🟥 = significantly worse candidate vs. baseline

We compute a confidence interval (CI) over the relative difference of means between metrics from the candidate and baseline commits, considering the baseline as the reference.

If the CI is entirely outside the configured SIGNIFICANT_IMPACT_THRESHOLD (or the deprecated UNCONFIDENCE_THRESHOLD), the change is considered significant.

Feel free to reach out to #apm-benchmarking-platform on Slack if you have any questions.

More details about the CI and significant changes

You can imagine this CI as a range of values that is likely to contain the true difference of means between the candidate and baseline commits.

CIs of the difference of means are often centered around 0%, because often changes are not that big:

---------------------------------(------|---^--------)-------------------------------->
                              -0.6%    0%  0.3%     +1.2%
                                 |          |        |
         lower bound of the CI --'          |        |
sample mean (center of the CI) -------------'        |
         upper bound of the CI ----------------------'

As described above, a change is considered significant if the CI is entirely outside the configured SIGNIFICANT_IMPACT_THRESHOLD (or the deprecated UNCONFIDENCE_THRESHOLD).

For instance, for an execution time metric, this confidence interval indicates a significantly worse performance:

----------------------------------------|---------|---(---------^---------)---------->
                                       0%        1%  1.3%      2.2%      3.1%
                                                  |   |         |         |
       significant impact threshold --------------'   |         |         |
                      lower bound of CI --------------'         |         |
       sample mean (center of the CI) --------------------------'         |
                      upper bound of CI ----------------------------------'

@datadog-official

datadog-official Bot commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

🎯 Code Coverage (details)
• Patch Coverage: 76.93%
• Overall Coverage: 57.79% (-3.31%)

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: f6de142 | Docs | Give us feedback!

@dd-octo-sts

dd-octo-sts Bot commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

Static quality checks

✅ Please find below the results from static quality gates
Comparison made with ancestor b911073
📊 Static Quality Gates Dashboard
🔗 SQG Job

Successful checks

Info

Quality gate Change Size (prev → curr → max)
✅ agent_deb_amd64 +83.07 KiB (0.01% increase, -1.07% of buffer) 757.266 → 757.347 → 764.850
✅ agent_deb_amd64_fips -12.69 KiB (0.00% reduction, +0.14% of buffer) 688.152 → 688.140 → 696.770
✅ agent_heroku_amd64 -11.1 KiB (0.00% reduction, +0.16% of buffer) 313.411 → 313.400 → 320.390
✅ agent_msi +40.34 KiB (0.01% increase, -1.97% of buffer) 665.912 → 665.952 → 667.910
✅ agent_rpm_amd64 +83.07 KiB (0.01% increase, -1.07% of buffer) 757.248 → 757.329 → 764.830
✅ agent_rpm_amd64_fips -12.69 KiB (0.00% reduction, +0.14% of buffer) 688.135 → 688.122 → 696.750
✅ agent_rpm_arm64 +104.0 KiB (0.01% increase, -1.26% of buffer) 726.980 → 727.081 → 735.060
✅ agent_rpm_arm64_fips -12.41 KiB (0.00% reduction, +0.13% of buffer) 663.629 → 663.617 → 672.790
✅ agent_suse_amd64 +83.07 KiB (0.01% increase, -1.07% of buffer) 757.248 → 757.329 → 764.830
✅ agent_suse_amd64_fips -12.69 KiB (0.00% reduction, +0.14% of buffer) 688.135 → 688.122 → 696.750
✅ agent_suse_arm64 +104.0 KiB (0.01% increase, -1.26% of buffer) 726.980 → 727.081 → 735.060
✅ agent_suse_arm64_fips -12.41 KiB (0.00% reduction, +0.13% of buffer) 663.629 → 663.617 → 672.790
✅ docker_agent_amd64 +83.06 KiB (0.01% increase, -1.05% of buffer) 813.307 → 813.388 → 821.040
✅ docker_agent_arm64 +103.99 KiB (0.01% increase, -1.23% of buffer) 807.661 → 807.763 → 815.930
✅ docker_agent_jmx_amd64 +83.07 KiB (0.01% increase, -1.05% of buffer) 1004.170 → 1004.252 → 1011.910
✅ docker_agent_jmx_arm64 +104.0 KiB (0.01% increase, -1.23% of buffer) 987.309 → 987.410 → 995.580
17 successful checks with minimal change (< 2 KiB)
Quality gate Current Size
✅ docker_cws_instrumentation_amd64 7.513 MiB
✅ docker_cws_instrumentation_arm64 7.002 MiB
✅ docker_dogstatsd_amd64 40.182 MiB
✅ docker_dogstatsd_arm64 38.193 MiB
✅ docker_host_profiler_amd64 314.397 MiB
✅ docker_host_profiler_arm64 325.220 MiB
✅ dogstatsd_deb_amd64 30.937 MiB
✅ dogstatsd_deb_arm64 28.868 MiB
✅ dogstatsd_rpm_amd64 30.937 MiB
✅ dogstatsd_suse_amd64 30.937 MiB
✅ iot_agent_deb_amd64 48.100 MiB
✅ iot_agent_deb_arm64 44.504 MiB
✅ iot_agent_deb_armhf 45.320 MiB
✅ iot_agent_rpm_amd64 48.100 MiB
✅ iot_agent_suse_amd64 48.099 MiB
✅ docker_cluster_agent_amd64 216.482 MiB
✅ docker_cluster_agent_arm64 229.131 MiB

@cit-pr-commenter-54b7da

cit-pr-commenter-54b7da Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

Regression Detector

Regression Detector Results

Metrics dashboard
Target profiles
Job ID: 878fd0be-55d8-42a1-bcec-6eef03ea53ce

Baseline: b911073
Comparison: f6de142
Diff

Optimization Goals: ✅ No significant changes detected

Fine details of change detection per experiment

perf experiment goal Δ mean % Δ mean % CI trials links
➖ dsd_uds_10mb_3k_timestamped_contexts_cpu % cpu utilization +1.12 [+0.85, +1.39] 1 Logs
➖ dsd_uds_client_drop_detector_cpu % cpu utilization +1.07 [+0.53, +1.62] 1 Logs
➖ quality_gate_idle memory utilization +0.23 [+0.19, +0.27] 1 Logs bounds checks dashboard
➖ quality_gate_security_idle memory utilization +0.22 [+0.19, +0.26] 1 Logs bounds checks dashboard
➖ quality_gate_security_no_fs_load memory utilization +0.19 [+0.13, +0.24] 1 Logs bounds checks dashboard
➖ quality_gate_metrics_logs memory utilization +0.12 [-0.11, +0.35] 1 Logs bounds checks dashboard
➖ python_openmetrics % cpu utilization +0.08 [-0.59, +0.74] 1 Logs bounds checks dashboard
➖ quality_gate_idle_all_features memory utilization -0.04 [-0.11, +0.04] 1 Logs bounds checks dashboard
➖ quality_gate_security_mean_fs_load memory utilization -0.07 [-0.11, -0.03] 1 Logs bounds checks dashboard
➖ quality_gate_private_action_runner memory utilization -0.19 [-0.31, -0.06] 1 Logs bounds checks dashboard
➖ dsd_uds_10mb_3k_timestamped_contexts_memory memory utilization -0.44 [-0.65, -0.23] 1 Logs
➖ quality_gate_logs % cpu utilization -1.84 [-2.76, -0.92] 1 Logs bounds checks dashboard

Bounds Checks: ✅ Passed

perf experiment bounds_check_name replicates_passed observed_value links
✅ python_openmetrics checks_execution_time 10/10 70.78 ≤ 100 bounds checks dashboard
✅ python_openmetrics cpu_usage 10/10 1352.89 ≤ 1500 bounds checks dashboard
✅ python_openmetrics memory_usage 10/10 4.32GiB ≤ 4.75GiB bounds checks dashboard
✅ quality_gate_idle intake_connections 10/10 4 ≤ 5 bounds checks dashboard
✅ quality_gate_idle memory_usage 10/10 179.25MiB ≤ 181MiB bounds checks dashboard
✅ quality_gate_idle total_bytes_received 10/10 774.58KiB ≤ 819.20KiB bounds checks dashboard
✅ quality_gate_idle_all_features intake_connections 10/10 2 ≤ 5 bounds checks dashboard
✅ quality_gate_idle_all_features memory_usage 10/10 477.65MiB ≤ 542MiB bounds checks dashboard
✅ quality_gate_idle_all_features total_bytes_received 10/10 1.18MiB ≤ 1.25MiB bounds checks dashboard
✅ quality_gate_logs intake_connections 10/10 16 ≤ 40 bounds checks dashboard
✅ quality_gate_logs memory_usage 10/10 221.54MiB ≤ 228MiB bounds checks dashboard
✅ quality_gate_logs missed_bytes 10/10 0B = 0B bounds checks dashboard
✅ quality_gate_logs total_bytes_received 10/10 264.36MiB ≤ 292MiB bounds checks dashboard
✅ quality_gate_metrics_logs cpu_usage 10/10 374.63 ≤ 2000 bounds checks dashboard
✅ quality_gate_metrics_logs intake_connections 10/10 19 ≤ 40 bounds checks dashboard
✅ quality_gate_metrics_logs memory_usage 10/10 416.30MiB ≤ 455MiB bounds checks dashboard
✅ quality_gate_metrics_logs missed_bytes 10/10 0B = 0B bounds checks dashboard
✅ quality_gate_metrics_logs total_bytes_received 10/10 0.95GiB ≤ 1.04GiB bounds checks dashboard
✅ quality_gate_private_action_runner memory_usage 10/10 74.80MiB ≤ 77MiB bounds checks dashboard
✅ quality_gate_security_idle cpu_usage 10/10 28.83 ≤ 100 bounds checks dashboard
✅ quality_gate_security_idle memory_usage 10/10 330.00MiB ≤ 357MiB bounds checks dashboard
✅ quality_gate_security_mean_fs_load cpu_usage 10/10 42.66 ≤ 200 bounds checks dashboard
✅ quality_gate_security_mean_fs_load memory_usage 10/10 317.03MiB ≤ 337MiB bounds checks dashboard
✅ quality_gate_security_no_fs_load cpu_usage 10/10 23.52 ≤ 100 bounds checks dashboard
✅ quality_gate_security_no_fs_load memory_usage 10/10 318.56MiB ≤ 348MiB bounds checks dashboard

Explanation

Confidence level: 90.00%
Effect size tolerance: |Δ mean %| ≥ 5.00%

Performance changes are noted in the perf column of each table:

  • ✅ = significantly better comparison variant performance
  • ❌ = significantly worse comparison variant performance
  • ➖ = no significant change in performance

A regression test is an A/B test of target performance in a repeatable rig, where "performance" is measured as "comparison variant minus baseline variant" for an optimization goal (e.g., ingress throughput). Due to intrinsic variability in measuring that goal, we can only estimate its mean value for each experiment; we report uncertainty in that value as a 90.00% confidence interval denoted "Δ mean % CI".

For each experiment, we decide whether a change in performance is a "regression" -- a change worth investigating further -- if all of the following criteria are true:

  1. Its estimated |Δ mean %| ≥ 5.00%, indicating the change is big enough to merit a closer look.

  2. Its 90.00% confidence interval "Δ mean % CI" does not contain zero, indicating that if our statistical model is accurate, there is at least a 90.00% chance there is a difference in performance between baseline and comparison variants.

  3. Its configuration does not mark it "erratic".

CI Pass/Fail Decision

✅ Passed. All Quality Gates passed.

  • quality_gate_security_mean_fs_load, bounds check memory_usage: 10/10 replicas passed. Gate passed.
  • quality_gate_security_mean_fs_load, bounds check cpu_usage: 10/10 replicas passed. Gate passed.
  • quality_gate_security_no_fs_load, bounds check memory_usage: 10/10 replicas passed. Gate passed.
  • quality_gate_security_no_fs_load, bounds check cpu_usage: 10/10 replicas passed. Gate passed.
  • quality_gate_idle, bounds check memory_usage: 10/10 replicas passed. Gate passed.
  • quality_gate_idle, bounds check total_bytes_received: 10/10 replicas passed. Gate passed.
  • quality_gate_idle, bounds check intake_connections: 10/10 replicas passed. Gate passed.
  • quality_gate_idle_all_features, bounds check intake_connections: 10/10 replicas passed. Gate passed.
  • quality_gate_idle_all_features, bounds check total_bytes_received: 10/10 replicas passed. Gate passed.
  • quality_gate_idle_all_features, bounds check memory_usage: 10/10 replicas passed. Gate passed.
  • quality_gate_metrics_logs, bounds check total_bytes_received: 10/10 replicas passed. Gate passed.
  • quality_gate_metrics_logs, bounds check memory_usage: 10/10 replicas passed. Gate passed.
  • quality_gate_metrics_logs, bounds check cpu_usage: 10/10 replicas passed. Gate passed.
  • quality_gate_metrics_logs, bounds check missed_bytes: 10/10 replicas passed. Gate passed.
  • quality_gate_metrics_logs, bounds check intake_connections: 10/10 replicas passed. Gate passed.
  • quality_gate_logs, bounds check memory_usage: 10/10 replicas passed. Gate passed.
  • quality_gate_logs, bounds check missed_bytes: 10/10 replicas passed. Gate passed.
  • quality_gate_logs, bounds check intake_connections: 10/10 replicas passed. Gate passed.
  • quality_gate_logs, bounds check total_bytes_received: 10/10 replicas passed. Gate passed.
  • quality_gate_security_idle, bounds check cpu_usage: 10/10 replicas passed. Gate passed.
  • quality_gate_security_idle, bounds check memory_usage: 10/10 replicas passed. Gate passed.
  • quality_gate_private_action_runner, bounds check memory_usage: 10/10 replicas passed. Gate passed.

@matt-dz matt-dz added the changelog/no-changelog No changelog entry needed label Oct 20, 2026

@rdesgroppes rdesgroppes left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

First, thanks much for joining our monorepo, that's pretty encouraging to all of us!

I posted a first comment and my team, @DataDog/agent-build, will have a further look tomorrow.

For GitHub workflows, I guess @DataDog/agent-devx is probably your best contact.

Comment thread .gitlab/rshell/fuzz.yml Resolved
Comment thread pkg/rshell/LICENSE-3rdparty.csv Resolved
Comment thread pkg/rshell/LICENSE-3rdparty.csv Resolved
…s license CSV

Review feedback:

- The fuzz jobs now extend .bazel:defs:cache:progressive (through
  .rshell:base) instead of defining their own cache. A generated child
  pipeline can't see the parent's templates, so rshell:fuzz becomes a
  parallel matrix job in .gitlab/test/rshell.yml. rshell.verify-fuzz-matrix,
  run by rshell:checks, fails when the matrix and the packages with fuzz
  targets drift apart. This replaces rshell.generate-fuzz-pipeline and
  .gitlab/rshell/fuzz.yml.
- pkg/rshell/LICENSE-3rdparty.csv is dropped: the root
  LICENSE-3rdparty.csv, generated from the Agent's dependencies and checked
  by lint_licenses, already covers what rshell ships, and the copy listed
  the Agent's own modules. The compliance tests that checked the copy are
  removed.

Environment: Datadog workspace

Co-Authored-By: Claude Code Opus 5.5 <noreply@anthropic.com>
@Hitsuji-M

Copy link
Copy Markdown
Contributor

Looks good for pkg/privateactionrunner/bundles/remoteaction/rshell

Comment thread .gitlab/test/rshell.yml Resolved
Comment thread .gitlab/test/rshell.yml Resolved
Comment thread .gitlab/test/rshell.yml Resolved
Comment thread .github/workflows/rshell.yml Resolved
Comment thread .gitlab/test/rshell.yml Resolved
matt-dz and others added 2 commits October 29, 2026 09:25
- dda inv fuzz gains --jobs to fuzz several targets at once (one worker
  each), so rshell:fuzz is one job running 8 targets at a time instead
  of a 33-job matrix; drop rshell.verify-fuzz-matrix.
- Tolerate only Go's bare coordinator timeout under "--- FAIL: <func>",
  not t.Fatal output or panics that mention a deadline.
- Drop the needless dda self dep sync before_script.
- Pull the Bash comparison image from registry.ddbuild.io's mirror in
  GitLab (RSHELL_BASH_IMAGE) instead of Docker Hub, and fail rather than
  skip when the pull fails.
- Run the landlock/seccomp tests cgo-free as Bazel targets (pure = "on",
  like the shipped rshell binary) so the default Bazel jobs cover them,
  and drop the explicit pure-mode steps from GitLab and GitHub Actions.

Environment: Datadog workspace

Co-Authored-By: Claude Code Sonnet 5.5 <noreply@anthropic.com>
…ll-migration

Keep pkg/rshell over main's bump of github.com/DataDog/rshell to v0.0.31
(pkg/rshell is synced past it, at 6871bdf6).

Environment: Datadog workspace

Co-Authored-By: Claude Code Sonnet 5.5 <noreply@anthropic.com>

@julesmcrt julesmcrt left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This will go in 7.87 ; not 7.86
Waiting for the cutoff

main added pkg/config/setup/generatedsettings_local and this branch adds
pkg/rshell; each go.mod needs a replace directive pointing at the other.

Environment: Datadog workspace

Co-Authored-By: Claude Code Opus 5.5 <noreply@anthropic.com>

matt-dz commented Oct 29, 2026

Copy link
Copy Markdown
Contributor Author

🤖 Reply from Matthew's coding agent (Claude Code), not Matthew himself.

Re the Codex review of tasks/fuzz.py (P2, tolerance too broad): fixed in b1d6b30. is_fuzztime_boundary_timeout now accepts a failure only when the indented lines under --- FAIL: <func> are exactly context deadline exceeded, with no panic: and no Failing input written to. A t.Fatal(context.DeadlineExceeded) (which prints file.go:N: ...), a panic, or a failure in another target is now a failure. Covered by tasks/unit_tests/fuzz_tests.py.

Sync DataDog/rshell@f323a145 (DataDog/rshell#696, VULN-4562, VULN-1673,
VULN-4535) into pkg/rshell: MaxNestingDepth (5000) enforced by a
pre-parse lexical guard in ParseScript and an iterative AST depth check
in validateNode, so a deeply nested sub-5-MiB script fails with an error
instead of crashing the embedding process with a Go stack overflow.

pkg/rshell now matches rshell main (f323a145); #705 was already present
and #706 only changes upstream's own fuzz CI.

Environment: Datadog workspace

Co-Authored-By: Claude Code Opus 5.5 <noreply@anthropic.com>
Comment thread .github/workflows/rshell.yml Resolved
matt-dz and others added 4 commits October 29, 2026 10:24
main bumped x/net to v0.62.0 in every module (#59052); pkg/rshell is new
on this branch, so the merge left it at v0.61.0 and
bazel:run-go-mod-tidy failed on it.

Environment: Datadog workspace

Co-Authored-By: Claude Code Opus 5.5 <noreply@anthropic.com>
GitLab's rshell:checks, rshell:bash and rshell:fuzz already run every
check in .github/workflows/rshell.yml (source-file coverage, Bash
comparison, compliance, fuzzing), and pull Debian from our registry
mirror instead of Docker Hub. Keep GitLab as the single place they run.

Environment: Datadog workspace

Co-Authored-By: Claude Code Opus 5.5 <noreply@anthropic.com>
…verage

The cgo-free sandbox tests re-exec themselves as restricted helpers.
Under bazel coverage the helpers then failed after passing, trying to
write coverage data:
- the landlock helpers restrict themselves to the test paths, so they
  now exit directly once their checks pass;
- the seccomp elevation helper drops privileges, so it no longer
  inherits the runner's environment and its root-owned coverage paths
  (as DataDog/rshell#705 did for head).

Environment: Datadog workspace

Co-Authored-By: Claude Code Opus 5.5 <noreply@anthropic.com>

@irozzo-1A irozzo-1A left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I don't see problems in agent-runtimes scope, just a nit

Comment thread go.mod Resolved
…endency

Require pkg/rshell at v0.0.0-00010101000000-000000000000 in the root and
test/new-e2e go.mod files, matching the convention for other in-repo
modules resolved through replace directives.

Environment: Datadog workspace

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@matt-dz
matt-dz requested a review from irozzo-1A October 30, 2026 14:35

@shimupan shimupan left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

looks good for action platform side

This branch has not been deployed

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants