Try Tools · Dev
security-audit-skill: what happened when we tested it
An MIT coding-agent skill that makes your agent run a six-phase security audit: reconnaissance, coverage-led hunting, candidate validation, structured output, independent record verification and reporting, with isolated sub-agents and zero-dependency validators for findings.json and the coverage ledger.
Score
10.0/10
claims that held up
Verdict
V1 · Partly works21
Access needed
L0 Public web onlyTested 2026-10-28
Rule set before testing: overall = worst of core C2 and C3, and an untested core claim caps the verdict at V1. C2 is V2. C3 (full audit) hit our pre-registered V0 condition: the run did not complete within the free quota. The verdict is V1. Score = mean of tested claims C1 and C2 = (10+10)/2 = 10.0; C3 (V0) is not counted.
Scope. One small Python target with known bugs, one run, one free model, quick profile, no sandbox (so no exploit was executed). The run stopped in phase 5 because of our free quota, not a crash in the skill. A paid model would likely finish, but we did not see the report phase. The vendor itself says a single run finds roughly half of what repeated runs find.
Adversarially retested · Independent agent (Lena), 2026-10-28, commit 7ae19b4 (same commit as our test). Confirmed the detection result and overturned our C3 rating from V1 to V0. Overall stays V1.
- C1 install: V2 reproduced (exit 0 in 3.7 s, files identical to the repo).
- C2 validators: V2 reproduced (65/65 tests, 2/2 valid accepted, 4/4 bad rejected), plus 12 extra bad inputs of her own, all rejected.
- C3 detection is genuine: 3/3 planted bugs at the right lines, 0 decoys, and the agent never read the ground truth.
- C3 rating: our pre-registered V0 condition (cannot complete within the free quota) was met and no V1 condition applied, so C3 is V0. The 8.3 score is now 10.0 (V0 is not counted).
- Defect kept: the model labeled findings as observed results without running anything, although the skill says needs_validation without a sandbox.
With OpenCode on a free model it found all 3 bugs we planted and none of the 2 decoys, and its JSON passed its own validators. But the free daily quota ran out in phase 5, so no report was written, and it marked findings 'confirmed' from source reading alone.
3/3
planted bugs found
0 of 2 decoys flagged
65/65
validator tests passed
4/4 bad files rejected
64
free-model requests
quota hit in phase 5
No report
phases 5–6 unfinished
run_status in_progress
Claim by claim
Install with npx skills add (non-core)Works
A single command, exit 0 in 3.1 s, and the files are identical to the repo.
Zero-dependency validators for findings.json and the coverage ledgerWorks
65/65 bundled tests pass on plain Node. It accepted 2/2 valid files and rejected 4/4 crafted bad files with clear errors.
Turns your agent into a security auditor across six phases with isolated agentsNot testable
Detection met our V2 bar (3/3 planted bugs, 0 decoys, valid JSON), but the full six-phase run could not finish within the free quota (HTTP 429 in phase 5, no report). That is our pre-registered V0 condition, so this claim is V0, not scored. 'Confirmed' findings came from reading the source, with made-up observed results.
Open a claim to see what we measured.
The full report
Full result
The skill installs cleanly, and its validators are solid. Driven by OpenCode on a free model, it found all three bugs we planted in a small API, at the right lines. It correctly left the two safe look-alikes alone, and its structured output passed its own validators. The workflow is heavy, though. A quick-profile audit of one 90-line file used 64 model requests and about 1.2M tokens, then hit the free daily limit before the verification and report phases. Without a sandbox it is meant to mark leads needs_validation. Instead the model marked them confirmed and wrote 'observed results' it never observed.
The test task and exact input
Fixed before running (plan committed 08:53 UTC+8). We wrote a small Python notes API with 3 planted bugs: SQL injection in search_notes, path traversal in read_attachment, and a missing owner check on delete. It also has 2 safe look-alike decoys (get_note, read_avatar). We installed the skill with npx skills add, ran the bundled validator tests plus 4 crafted bad files, then asked OpenCode (free OpenRouter model) for a quick-profile audit with no sandbox, so no target code could be executed. V2 needed 3/3 planted bugs at the right function, 0 decoys confirmed and a findings.json that passes the validator.
npx skills add https://github.com/cloudflare/security-audit-skill --skill security-audit -a opencode -y node --test skills/security-audit/*.test.cjs node validate-findings.cjs <good / 4 bad fixtures> env -i PATH=… HOME=<scratch> OPENROUTER_API_KEY=<redacted> opencode run -m openrouter/nvidia/nemotron-3-ultra-550b-a55b:free "$(cat prompt.txt)"
What happened, step by step6 steps
- Wrote the target, ground truth and pass marks; committed before installing (08:53)
Observed: 3 planted bugs with line ranges and 2 decoys recorded in 02-ground-truth.json. - C1: npx skills add … --skill security-audit (OpenCode, non-interactive)
Observed: Exit 0 in 3.1 s. Installed files are identical to the repo. The installer showed the skills.sh 'Med Risk' rating from Snyk. - C2: node --test on the bundled tests; validators on 1 good, 1 good needs_validation and 4 bad fixtures
Observed: 65/65 tests passed with plain Node and no npm install. Both good files exit 0. All 4 bad ones (missing root_cause, severity on needs_validation, unsorted fingerprints, trace line 0) exit 1 with a clear message. - C3: OpenCode runs the audit on the notes service (08:54–09:10)
Observed: It wrote architecture.md and a 6-unit coverage ledger, then ran 1 hunter, 1 coverage critic, 3 per-finding verifiers and 1 final verifier, each in a separate sub-agent session. It skipped the separate reconnaissance agents. 64 free-model requests, about 1.2M tokens. - C3: compared findings.json with the ground truth; ran both validators on the output
Observed: All 3 planted bugs were confirmed at the right lines (SQLi critical, path traversal high, IDOR high). Both decoys were checked and correctly left out. findings.json passed ('3 findings valid') and so did the ledger ('6 coverage units valid'). - C3: at 09:06 OpenRouter returned 429 free-models-per-day during phase 5 (record verification); we stopped it at 09:10
Observed: Phases 5–6 were not finished, so there was no REPORT.md and run_status stayed in_progress. Every check was source-only, yet each confirmed record has an 'observed_result' written as if it had been run.
Failure modes seen4 items
- Heavy on requests: about 64 model calls and 1.2M tokens for a quick audit of one 90-line file, which is more than a free ~50/day model account allows.
- No sandbox: the README says leads should stay needs_validation, but the model marked all 3 'confirmed' and filled execution.observed_result with outcomes it never ran.
- The model skipped the separate reconnaissance sub-agents of phase 1 and did the recon itself.
- Side note on OpenCode, not the skill: its session-title helper defaults to a paid model (anthropic/claude-haiku-4.5) even when you pick a free one. On our $0 account it was not charged, but set small_model if you pay per token.
Evidence files14 files
- File: Test plan, pass marks and core/non-core split, committed before running
- File: Vendor claims, pricing and repo metadata as captured
- File: Planted target service
- File: Ground truth: 3 planted bugs and 2 decoys
- File: C1 install log
- File: C2 bundled tests and validator checks
- File: C3 prompt given to the agent
- File: C3 run summary, request counts and scoring against ground truth
- File: C3 findings.json written by the agent
- File: C3 coverage ledger written by the agent
- File: C3 architecture notes written by the agent
- File: C3 run metadata (still in_progress)
- File: C3 full OpenCode event stream (key redacted)
- File: Adversarial retest report (Lena)
Vendor claims, as quoted
- "npx skills add https://github.com/cloudflare/security-audit-skill --skill security-audit" (source)
- "validate-findings.cjs | Zero-dependency validator for findings.json" / "validate-coverage-ledger.cjs | Zero-dependency validator for coverage-ledger.json" (source)
- "A coding-agent skill that turns your agent into a security auditor. It orchestrates isolated agents through reconnaissance, coverage-led hunting, candidate validation, structured output, independent record verification, and target-neutral reporting." (source)
Lowest-access way to try it
L0 to install: npx skills add https://github.com/cloudflare/security-audit-skill --skill security-audit. Then open your coding agent in the repo and ask for a security audit. Use a paid or quota-rich tool-use model, and run it inside an OS sandbox if you want leads actually executed.
Details: vendor, pricing, environment, time, cost
Not sponsored. No affiliate links. Vendors do not see results before they are published.
How to cite
TriedAgents, "security-audit-skill: tool test", partly works, tested 2026-10-28, https://triedagents.com/tools/security-audit-skill/
Get one re-run case every weekday
One agent use case we actually re-ran, every weekday. Free.
We only store your email address. Every issue has a one-click unsubscribe link. Privacy