Skip to content

Back to the catalog

VulnHunter (Capital One)
github.comrepo

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.

TL;DR Capital One's open-source agentic AI SAST tool that reasons like an attacker from entry points, self-falsifies findings, and auto-generates evidence-backed fixes, built on Claude Opus/Claude Code.
Document

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) and harness/ (benchmarking), not the skills themselves.
  • The /vulnhunter-fix skill additionally needs git, the GitHub CLI (gh) authenticated to target repos, and pip install -e ".[dev]" inside vulnhunter-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.sh

Invoke the scanner:

claude --model opus --add-dir ~/.claude/skills/vulnhunt --add-dir ~/.claude/skills/vulnhunt/phases
/vulnhunt

Verifier — 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-fix and vulnhunter-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