Exhaustive vulnerability-audit + broader hotspot categories. Bigger, deeper security reviews with expanded coverage into rendering sinks and dependency manifests.
What changed
hotspot-mappingagent: two new categories —RENDERING & OUTPUT(template/DOM/response sinks) andDEPENDENCIES & CONFIG(manifests, lockfiles, CI/IaC). Enumerate step now covers view templates and manifests explicitly. Rules of thumb added for rendering sinks, one-sided guards, and dependency artifacts. Worked example rewritten language-neutral so it doesn't anchor the model on one stack.vulnerability-auditagent: picks every applicable Soundcheck skill per hotspot instead of one; emits one finding per distinct vulnerability; sweeps sibling functions in the same file for related bugs while the file is open.
Benchmark signal (juice-shop precision/recall harness)
New scripts/benchmark-juiceshop.py runs /security-review end-to-end against OWASP Juice Shop at a pinned commit and pairs findings against challenges.yml deterministically. Comparing v1.16.3 → v1.17.0:
| Metric | v1.16.3 | v1.17.0 |
|---|---|---|
| Findings per review | 65 | 114 |
| Strict recall vs source-detectable G | 33% | 67% |
| Generous recall (with overlap credit) | 42% | 90% (against a fair G, excluding behavioural challenges) |
| Hallucinations | 0 | 0 |
The exhaustiveness change ~doubled findings without introducing hallucinated ones. The hotspot-category change landed the frontend and dependency-manifest surfaces that were entirely missed before.
Compatibility
Backwards-compatible. Skill file shapes and downstream schemas unchanged. If you are pinned to @v1 via soundcheck-action, the floating tag now points at v1.0.39 → v1.17.0.
CLI pin
Workflows bumped to @anthropic-ai/claude-code@2.1.214.