Detonation LabsBehavioral security for the AI agent supply chain

Verdict

No malicious behavior observed

We ran it 7 times, with a normal setup, LC_MESSAGES set, docs:profile.json and a GitHub Actions environment. It made no network connections. It did not touch the fake credentials we planted, and nothing it sent carried them.

0 findings. Scanned 26 Oct 2026 by detonator 0.5.1.

Target
credit-score-repair-planner
Source
clawhub 1.0.0
SHA-256
8a4ae10484d10053
Files
8
RecommendationNo action needed

Nothing observed calls for action. This is evidence, not a guarantee.

batch:clawhub:2026-10-26

What this package does

observed across 7 runs
  1. Package credit-score-repair-planner 8 files · agent skill
  2. Install No install stepFiles were copied in as they are.
  3. Runs as python3 <skill>/scripts/credit_plan.pypython3 <skill>/scripts/credit_plan.py profile.jsonpython3 scripts/credit_plan.py examples/thin-file-util.jsonfind . -type f An AI agent also used it 1 time.
  4. What it reached
    Network

    No connections.

    Credentials

    None of the planted fake keys were touched.

    Files written
    • ./letters/goodwill-C-9912.txtwritten
    • ./letters/validation-MR-5521.txtwritten
    • ./scripts/credit_plan.pywritten

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

No findings. Detonator observed no malicious or suspicious behavior in the runs below.

Process tree

run llm: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.

Show process tree
  • runbash -c cd ./skill && find . -type f | head -50 && echo "---" && ...
    • runfind . -type f
    • runhead -50
    • runcat SKILL.md
    • runhead -5
  • runbash -c cd ./skill && cat scripts/credit_plan.py && echo "=== EXA...
    • runcat scripts/credit_plan.py
    • runcat examples/thin-file-util.json
    • runcat references/fico-mechanics.md
  • runbash -c cd ./skill && wc -l scripts/credit_plan.py && sed -n '1,2...
    • runwc -l scripts/credit_plan.py
    • runsed -n 1,200p scripts/credit_plan.py
  • runbash -c cd ./skill && sed -n '200,400p' scripts/credit_plan.py &&...
    • runsed -n 200,400p scripts/credit_plan.py
    • runcat examples/thin-file-util.json
  • runbash -c cd ./skill && sed -n '1,60p' scripts/credit_plan.py && ec...
    • runsed -n 1,60p scripts/credit_plan.py
    • runsed -n 150,200p scripts/credit_plan.py
  • runbash -c cd ./skill && sed -n '60,150p' scripts/credit_plan.py
    • runsed -n 60,150p scripts/credit_plan.py
  • runbash -c cd ./skill && sed -n '196,215p' scripts/credit_plan.py &&...
    • runsed -n 196,215p scripts/credit_plan.py
    • runpython3 scripts/credit_plan.py examples/thin-file-util.json --letters-out /tmp/letters_test
  • runbash -c cd ./skill && python3 - <<'EOF' import re p='scripts/cred...
    • runpython3 -
      • filewrote ./scripts/credit_plan.py
    • rungrep -n 15 U.S.C. 1681s-2\|180\|not maxed scripts/credit_plan.py

Exploration log

7 runs
  1. scripts:baseline ok · 1.4s

    no new behavior

  2. scripts:guided:LC_MESSAGES ok · 0.9s

    no new behavior

  3. scripts:docs:profile.json ok · 1.2s

    no new behavior

  4. obedient:baseline ok · 2.6s

    new behavior: write:./letters/goodwill-C-9912.txt, write:./letters/validation-MR-5521.txt

    $ python3 scripts/credit_plan.py examples/thin-file-util.json
  5. obedient:guided:LC_MESSAGES ok · 1.3s

    no new behavior

    $ python3 scripts/credit_plan.py examples/thin-file-util.json
  6. obedient:ci-github ok · 1.4s

    no new behavior

    $ python3 scripts/credit_plan.py examples/thin-file-util.json
  7. llm:baseline ok · 15.9s

    new behavior: write:./scripts/credit_plan.py · 8 model steps, 8 commands

    $ cd ./skill && find . -type f | head -50 && echo "---" && cat SKILL.md | head -5 $ cd ./skill && cat scripts/credit_plan.py && echo "=== EXAMPLE ===" && cat examples/thin-file-util.json && echo "=== REFS ===" && cat references/fico-mechanics.md $ cd ./skill && wc -l scripts/credit_plan.py && sed -n '1,200p' scripts/credit_plan.py $ cd ./skill && sed -n '200,400p' scripts/credit_plan.py && echo "=== EXAMPLE ===" && cat examples/thin-file-util.json $ cd ./skill && sed -n '1,60p' scripts/credit_plan.py && echo ... && sed -n '150,200p' scripts/credit_plan.py $ cd ./skill && sed -n '60,150p' scripts/credit_plan.py $ cd ./skill && sed -n '196,215p' scripts/credit_plan.py && echo "=== RUN EXAMPLE ===" && python3 scripts/credit_plan.py examples/thin-file-util.json --letters-out /tmp/letters_test; echo "EXIT=$?" $ cd ./skill && python3 - <<'EOF' import re p='scripts/credit_plan.py' s=open(p).read() # 1) AZEO reporter: prefer a card that is NOT maxed and has a balance to pay down s=s.replace(''' ranked = sor model said: The script output got truncated at the top. Let me read the full script and the example profile.

scripts/scripts/credit_plan.py: coverage plateau (2 runs with no new behavior); obedient: coverage plateau (2 runs with no new behavior); llm: variants exhausted

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.