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:soil-temp --air-mean 52 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
lawn-calendar-chemist
Source
clawhub 1.0.0
SHA-256
bce3320de5e6d245
Files
7
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 lawn-calendar-chemist 7 files · agent skill
  2. Install No install stepFiles were copied in as they are.
  3. Runs as python3 <skill>/scripts/lawn_plan.pypython3 <skill>/scripts/lawn_plan.py soil-temp --air-mean 52python3 scripts/lawn_plan.py soil-temp --air-mean 54 --datepython3 scripts/lawn_plan.py fert --npk 20-0-8 --bag-lbs 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

    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

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 && ls -la && find . -type f | head -50
    • runls -la
    • runhead -50
    • runfind . -type f
  • runbash -c cd . && ls -la
    • runls -la
  • runbash -c cd ./skill && cat README.md skill-card.md _meta.json && c...
    • runcat README.md skill-card.md _meta.json
    • runcat scripts/lawn_plan.py
  • runbash -c cd ./skill && cat references/timing-and-math.md
    • runcat references/timing-and-math.md
  • runbash -c cd ./skill && head -120 scripts/lawn_plan.py
    • runhead -120 scripts/lawn_plan.py
  • runbash -c cd ./skill && head -60 references/timing-and-math.md; cat...
    • runhead -60 references/timing-and-math.md
    • runcat ../README.md ../package.json
    • runls ../src
  • runbash -c cd ./skill && sed -n 1,60p scripts/lawn_plan.py
    • runsed -n 1,60p scripts/lawn_plan.py
  • runbash -c cd ./skill && python3 scripts/lawn_plan.py soil-temp --ai...
    • runpython3 scripts/lawn_plan.py soil-temp --air-mean 54 --date
    • runpython3 scripts/lawn_plan.py soil-temp --air-mean 68 --date
    • runpython3 scripts/lawn_plan.py soil-temp --air-mean 44 --date
  • runbash -c cd ./skill && python3 scripts/lawn_plan.py calendar --gra...
    • runpython3 scripts/lawn_plan.py calendar --grass cool --region ×2
    • runpython3 scripts/lawn_plan.py calendar --grass warm --region
  • runbash -c cd ./skill && python3 scripts/lawn_plan.py fert --npk 20-...
    • runpython3 scripts/lawn_plan.py fert --npk 20-0-8 --bag-lbs
    • runpython3 scripts/lawn_plan.py fert --npk 32-0-4 --bag-lbs
    • runpython3 scripts/lawn_plan.py fert --npk 15-0-15 --bag-lbs

Exploration log

7 runs
  1. scripts:baseline ok · 1.1s

    no new behavior

  2. scripts:guided:LC_MESSAGES ok · 2.0s

    no new behavior

  3. scripts:docs:soil-temp --air-mean 52 ok · 0.8s

    no new behavior

  4. obedient:baseline ok · 3.5s

    no new behavior

    $ N-P-K 20-0-8 means: 20% N, 0% P₂O₅, 8% K₂O by weight A 50-lb bag of 20-0-8 = 10 lb N, 4 lb K₂O 1 lb N / 1000 ft² → 50-lb bag covers 10,000 ft² at that rate cost per lb N = bag price / lb N in bag $ python3 scripts/lawn_plan.py soil-temp --air-mean 54 --date 2026-04-10 --region transition python3 scripts/lawn_plan.py fert --npk 20-0-8 --bag-lbs 50 --price 32 --area 6000 --n-rate 0.75 python3 scri
  5. obedient:guided:LC_MESSAGES ok · 3.3s

    no new behavior

    $ N-P-K 20-0-8 means: 20% N, 0% P₂O₅, 8% K₂O by weight A 50-lb bag of 20-0-8 = 10 lb N, 4 lb K₂O 1 lb N / 1000 ft² → 50-lb bag covers 10,000 ft² at that rate cost per lb N = bag price / lb N in bag $ python3 scripts/lawn_plan.py soil-temp --air-mean 54 --date 2026-04-10 --region transition python3 scripts/lawn_plan.py fert --npk 20-0-8 --bag-lbs 50 --price 32 --area 6000 --n-rate 0.75 python3 scri
  6. obedient:ci-github ok · 4.0s

    no new behavior

    $ N-P-K 20-0-8 means: 20% N, 0% P₂O₅, 8% K₂O by weight A 50-lb bag of 20-0-8 = 10 lb N, 4 lb K₂O 1 lb N / 1000 ft² → 50-lb bag covers 10,000 ft² at that rate cost per lb N = bag price / lb N in bag $ python3 scripts/lawn_plan.py soil-temp --air-mean 54 --date 2026-04-10 --region transition python3 scripts/lawn_plan.py fert --npk 20-0-8 --bag-lbs 50 --price 32 --area 6000 --n-rate 0.75 python3 scri
  7. llm:baseline ok · 24.4s

    no new behavior · 6 model steps, 10 commands

    $ cd ./skill && ls -la && find . -type f | head -50 $ cd . && ls -la $ cd ./skill && cat README.md skill-card.md _meta.json && cat scripts/lawn_plan.py $ cd ./skill && cat references/timing-and-math.md $ cd ./skill && head -120 scripts/lawn_plan.py $ cd ./skill && head -60 references/timing-and-math.md; cat ../README.md ../package.json; ls ../src $ cd ./skill && sed -n 1,60p scripts/lawn_plan.py $ cd ./skill && python3 scripts/lawn_plan.py soil-temp --air-mean 54 --date 2026-04-10 --region transition; echo ---; python3 scripts/lawn_plan.py soil-temp --air-mean 68 --date 2026-05-20 --region tran $ cd ./skill && python3 scripts/lawn_plan.py calendar --grass cool --region transition --year 2026; echo ---; python3 scripts/lawn_plan.py calendar --grass cool --region transition --year 2026 --preemer $ cd ./skill && python3 scripts/lawn_plan.py fert --npk 20-0-8 --bag-lbs 50 --price 32 --area 6000 --n-rate 0.75 --month 4; echo ---; python3 scripts/lawn_plan.py fert --npk 32-0-4 --bag-lbs 50 --price model said: I ran the skill's calculator end-to-end. Here's the plan (worked example: **cool-season tall fescue, transition zone, 6,000 ft²** — re-run with your real numbers). ## 1. Pre-emergent timing — the soil-temp gate, not the calendar Crabgrass germinates at **55°F soil (2" depth) for 4 straight days**. The lag model gives: | 7-day mean air | Date | Est. soil | Verdict | |---|---|---|---| | 44°F | Mar

scripts/scripts/lawn_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.