Detonation LabsBehavioral security for the AI agent supply chain

Verdict

Malicious behavior observed

~/.npmrc (npm) left the package on a normal run, headed for registry.npmjs.org. The sandbox caught it; nothing reached the internet.

3 findings, 1 critical. Scanned 26 Oct 2026 by detonator 0.5.1.

Target
agent-browser-clawdbot
Source
clawhub
SHA-256
a6c1e27139e924d4
Files
3
RecommendationBlock

Do not install. If it is already installed, remove it and rotate any credentials it could reach.

Confirmed Reproduced in 2 of 2 runs

What this package does

observed across 1 run
  1. Package agent-browser version matrixy/agent-browser-clawdbot · 3 files · agent skill
  2. Install No install scripts of its ownOnly the package manager ran.
  3. Runs as Nothing ran
  4. What it reached
    Network
    • registry.npmjs.org carried ~/.npmrc · 2 connections, 836 B sent · during install
    Credentials

    None of the planted fake keys were touched.

    ~/.npmrc read by its own tool (normal)

    Files written

    Nothing outside its own folder.

We planted fake AWS, SSH, npm and GitHub keys and a .env file before every run. Red means something left or was planted to run later.

Findings

F01 Critical

Secrets sent over the network via tcp/443 to registry.npmjs.org

Confidence
Confirmed A unique honeytoken marker was found in data the package sent out.
Observed in
obedient:baseline

Description

The package transmitted the contents of a credential file to a network destination. Before every run Detonator plants decoy credentials (AWS keys, SSH private key, npm and GitHub tokens, a .env file), each carrying a unique per-run marker. That marker was recovered from outbound traffic captured by the sandbox's network sink, after decoding (base64, hex, URL encoding, chunked DNS labels). This is direct proof that credential material left the process, not an inference from code.

Impact

On a developer workstation or CI runner this hands the operator of the destination host working credentials: registry tokens allow publishing malicious versions of your packages (a worm-style supply chain compromise), cloud keys allow resource abuse and data access, and SSH keys allow lateral movement to every host that trusts them.

Evidence

~/.npmrc (npm) left the sandbox

Remediation

Do not install. If it was installed anywhere, treat every credential readable by that user as compromised: revoke and reissue npm/PyPI/GitHub tokens, rotate cloud keys, replace SSH keys, and review registry publish history and cloud audit logs for the exposure window. Block the destination host at egress and search proxy/DNS logs for other machines that contacted it.

References

  • CWE-506 Embedded Malicious Code
  • CWE-200 Exposure of Sensitive Information
  • ATT&CK T1552.001 Credentials in Files
  • ATT&CK T1041 Exfiltration Over C2 Channel
  • OWASP MCP01:2025 Token Mismanagement & Secret Exposure
F02 Low

Network destinations contacted

Confidence
Info The package connected to these hosts.
Observed in
obedient:baseline

Description

Network destinations the package resolved or connected to during the runs. All traffic was captured by the sandbox; nothing reached the internet.

Impact

Context only. Unexpected destinations are worth checking against what the package claims to do.

Evidence

registry.npmjs.org

Remediation

Confirm each host is expected (the package's API, its registry). Allowlist expected egress in production.

F03 Low

A tool read its own credentials (e.g. gh, aws, ssh)

Confidence
Info A tool opened its own login or config file, such as npm reading ~/.npmrc.
Observed in
obedient:baseline

Description

A tool opened its own configuration or login file, such as npm reading ~/.npmrc or gh reading its hosts file.

Impact

None in itself: this is how those tools work. Listed so the report shows every credential access.

Evidence

~/.npmrc (by npm)

Remediation

No action needed.

Process tree

run obedient:baseline

Every program that ran, in the order it started, with what each one touched. Red marks the path to a leak or a planted file.

  • runbash -c npm install -g agent-browser agent-browser install ...
    • runnpm install -g agent-browser
      • runnode /usr/bin/npm install -g agent-browser
        • netregistry.npmjs.org:443 sent 436 B carrying ~/.npmrc
        • netregistry.npmjs.org:443 sent 400 B carrying ~/.npmrc
View full process tree
  • runbash -c agent-browser open https://example.com agent-browser snap...
  • runbash -c agent-browser open <url> agent-browser back | forward | r...
  • runbash -c agent-browser snapshot -i --json # Interactive e...
  • runbash -c agent-browser click @e2 agent-browser fill @e3 "text" age...
  • runbash -c agent-browser get text @e1 --json agent-browser get html ...
  • runbash -c agent-browser is visible @e2 --json agent-browser is enab...
  • runbash -c agent-browser wait @e2 # Wait for elem...
  • runbash -c agent-browser --session admin open site.com agent-browser...
  • runbash -c agent-browser state save auth.json # Save cookies/...
  • runbash -c agent-browser screenshot page.png agent-browser screensho...
  • runbash -c agent-browser network route "**/ads/*" --abort ...
  • runbash -c agent-browser cookies # Get all agent...
  • runbash -c agent-browser tab new https://example.com agent-browser t...
  • runbash -c agent-browser open https://www.google.com agent-browser s...
  • runbash -c agent-browser --session admin open app.com agent-browser ...
  • runbash -c npm install -g agent-browser agent-browser install ...
    • runnpm install -g agent-browser
      • runnode /usr/bin/npm install -g agent-browser
        • netregistry.npmjs.org:443 sent 436 B carrying ~/.npmrc
        • netregistry.npmjs.org:443 sent 400 B carrying ~/.npmrc
        • secretread ~/.npmrc (its own config)
        • netDNS lookups for npmjs.org 2 queries

Exploration log

1 run
  1. obedient:baseline ok · 19.5s

    new behavior: dns:registry.npmjs.org, exfil:tcp/443, ownread:~/.npmrc, write:~/.npm/_cacache/content-v2/sha512/1d/ed/*

    $ agent-browser open https://example.com agent-browser snapshot -i --json agent-browser click @e2 agent-browser fill @e3 "text" agent-browser snapshot -i --json $ agent-browser open <url> agent-browser back | forward | reload | close $ agent-browser snapshot -i --json # Interactive elements, JSON output agent-browser snapshot -i -c -d 5 --json # + compact, depth limit agent-browser snapshot -s "#main" -i # Scope to se $ agent-browser click @e2 agent-browser fill @e3 "text" agent-browser type @e3 "text" agent-browser hover @e4 agent-browser check @e5 | uncheck @e5 agent-browser select @e6 "value" agent-browser press " $ agent-browser get text @e1 --json agent-browser get html @e2 --json agent-browser get value @e3 --json agent-browser get attr @e4 "href" --json agent-browser get title --json agent-browser get url --j $ agent-browser is visible @e2 --json agent-browser is enabled @e3 --json agent-browser is checked @e4 --json $ agent-browser wait @e2 # Wait for element agent-browser wait 1000 # Wait ms agent-browser wait --text "Welcome" # Wait for text agent-browser wait --url "**/ $ agent-browser --session admin open site.com agent-browser --session user open site.com agent-browser session list $ agent-browser state save auth.json # Save cookies/storage agent-browser state load auth.json # Load (skip login) $ agent-browser screenshot page.png agent-browser screenshot --full page.png agent-browser pdf page.pdf

obedient: stopped early: secret exfiltration confirmed

Note

Observed behavior only. A clean result does not prove a package is safe. Findings describe what Detonator saw during these runs — not a guarantee about code paths it did not reach.