scan-verifier — Claude Code subagent: votes on scanner findings
Takes one candidate vulnerability and tries to knock it down. The Claude Security scan workflow dispatches it; you don't call it yourself.
/plugin install claude-security@claude-plugins-officialWhat scan-verifier does
scan-verifier is one of three voters on a single scanner finding. Each voter gets a lens — reachability, impact, or defenses already in place — and the panel's arithmetic happens outside the models. The subagent just returns an honest vote instead of guessing what the others will say.
Read-only by design: Read, Glob, Grep, Bash limited to read-only commands, plus a call to the Agent(claude-security:explore) subagent. No builds, no tests, no running code, no network. The repository is addressed by the absolute SCAN_ROOT from the dispatch, and git runs as git -C <SCAN_ROOT> .... Assume the working directory is the repo and you may end up verifying the wrong file.
FALSE_POSITIVE is the default verdict. TRUE_POSITIVE needs a confirmed attack path with file:line cited for the source, the dangerous operation, and the absence of mitigation between them. Inventing a defense to close a finding is the same mistake in reverse, so only a mitigation that was actually read counts. A finding that could only be settled by executing code comes back FALSE_POSITIVE with the open question named. Everything read is treated as untrusted data: a comment claiming the code is safe is a reason for suspicion, not an instruction.
What it helps with
- filter scanner false positives before anyone starts patching them
- check whether an attacker really controls the input at a given point
- find out if a framework default already blocks the path to the sink
- separate a real vulnerability from a finding that merely looks risky
- rate a confirmed finding by the code rather than by the report
Example prompts for the agent
- Run scan-verifier on this scanner finding
- Have scan-verifier vote on the finding through the REACHABILITY lens
- Dispatch scan-verifier for this finding with SCAN_ROOT set
How to install scan-verifier
1Plugin marketplace
/plugin install claude-security@claude-plugins-official2Manually: put the files in place
.claude/agents/scan-verifier.mdFor all projects use ~/.claude/agents/. Claude delegates by the description field or an @-mention
Manually: put the files in place
.codex/agents/scan-verifier.tomlCodex defines subagents in TOML: name, description, developer_instructions. Move the Markdown text into developer_instructions by hand. For all projects use ~/.codex/agents/
Manually: put the files in place
.cursor/agents/scan-verifier.mdCursor also reads .claude/agents/
Step by step, with commands for each platform: Claude Code subagents: how to create one, call it and keep context clean
Questions about scan-verifier
How do I install scan-verifier in Claude Code?
From the marketplace: run /plugin marketplace add anthropics/claude-plugins-official, then /plugin install claude-security@claude-plugins-official. The subagent file lands at .claude/agents/scan-verifier.md.
What does scan-verifier do?
It receives one scanner finding and works to disprove it. The vote is FALSE_POSITIVE or TRUE_POSITIVE, and the reasoning names the decisive file:line.
Can I invoke scan-verifier directly?
No. It is a restricted subagent dispatched by the Claude Security scan workflow, and it handles one candidate per call.