VulnHunter (Capital One)
VulnHunter is Capital One's open-source agentic AI security scanner, implemented as a set of Claude Code skills (/vulnhunt, /vulnhunter-fix, /vulnhunt-fix-verify) that require Claude Opus. Instead of traditional sink-first SAST pattern matching, it reasons forward from attacker-accessible entry points (APIs, uploads, network messages), runs a 'falsification engine' to discard unexploitable findings, and generates evidence-backed exploit paths and targeted code fixes; it also ships a headless agent for CI/CD-scale scanning and a benchmarking harness against corpora like Juice Shop, WebGoat and NodeGoat.
What it is
VulnHunter (Capital One, Apache-2.0) — the summary covers its attacker-first analysis, falsification engine, three skills, headless agent and benchmark harness. What it does not carry are the operational preconditions and the Anthropic cyber-safeguard warning that determine whether you can actually run it.
Preconditions
- Claude Opus in Claude Code, BYO model access. All three skills launch via
claude --model opus. The low-false-positive behavior is tuned to frontier Opus-class reasoning; orchestration can be adapted to other models but is not tuned for them. - Python 3.12+ — required only for
vulnhunter-agent/(runtime) andharness/(benchmarking), not the skills themselves. - The
/vulnhunter-fixskill additionally needsgit, the GitHub CLI (gh) authenticated to target repos, andpip install -e ".[dev]"insidevulnhunter-fix/.
Cyber Verification warning
The page carries a disclaimer the summary omits: VulnHunter is dual-use (vulnerability discovery and exploitation). Run against an Anthropic account not enrolled in Anthropic's Cyber Verification Program and real-time cyber safeguards may block requests and flag your usage for cyber abuse. If you intend to use it on Claude API / Claude Code, enroll via the verification portal first. This is a go/no-go item before piloting on first-party Anthropic platforms.
What to do
Install copies files rather than symlinking (symlinks break find/glob in subagents), so re-run install after every pull:
git clone https://github.com/capitalone/vulnhunter.git
cd vulnhunter
./install.shInvoke the scanner:
claude --model opus --add-dir ~/.claude/skills/vulnhunt --add-dir ~/.claude/skills/vulnhunt/phases
/vulnhuntVerifier — note its tight tool envelope (Read/Write/Edit/Glob/Grep/Agent, no Bash, no network), read-only over trusted roots; the caller must pre-create the out dir:
/vulnhunt-fix-verify repo=<abs_path> report=<abs_path> fixed=VULN-001,... out=<abs_path>Batch and benchmark modes live in harness/ (python -m local_harness.batch.run scan --resume; python -m local_harness.benchmark.run), with targets listed one-per-line in harness/local_harness/batch/REPO_LIST.txt. The shipped corpus is a minimal synthetic example (ground_truth/EXAMPLE.json) mapped to NodeGoat/Juice Shop/WebGoat — bring your own ground truth for real accuracy numbers.
Caveats
- Naming is intentional: core scanner is
/vulnhunt, verifier/vulnhunt-fix-verify(short form), while/vulnhunter-fixandvulnhunter-agent/keep the full spelling — not a typo. - The page states an explicit authorization check: only scan codebases you are authorized to analyze.
Organisations named here
Technologies named here
Related in AI Security
