Independent field study · agentic security testing
Capital One’s VulnHunter
from source code to live attack
What the tool could carry, what the experiment had to supply, and what a security program would need before scaling it.
01 / The question
An AI agent can read a repository. The harder question begins when that understanding has to leave the code.
Can the system turn a suspected path into an authenticated request against a live application? Can it preserve enough evidence for another practitioner to challenge the result? And when the run is over, can a security program tell the difference between machine-produced activity, reproduced behavior, and a finding it is prepared to own?
I built this evaluation to get closer to those answers. I started with an approved source revision, a live local target, one bounded run, and a rule that machine output would remain candidate material until a named human reviewed it. The subject was Capital One’s VulnHunter, an open-source agentic security-testing tool. In plain language, agentic security testing means the AI can plan and carry out several connected steps, use tools, inspect what happened, and adjust its next move. The target was a pinned local deployment of OWASP crAPI—the Completely Ridiculous API, an intentionally vulnerable training application built for API security practice.
Before I get to the result, the contribution deserves context. VulnHunter is not a thin scanner prompt dressed up as a product. Its public repository includes a Hunt, Fix, and Verify workflow; phase-specific subagents; headless operation; batch and benchmark tooling; executable proof material; independent verification; tests; and operational documentation. I see substantial design, implementation, and testing effort in that visible surface.
Capital One released that work under the Apache 2.0 license and explains the decision in community terms: application security at this scale is not a challenge one organization will solve alone. I read that release as a real gift to the field. Making the implementation inspectable gives practitioners something rare and useful—a concrete system they can run, question, adapt, and learn from, even if they choose not to adopt it unchanged.
The question was not whether an agent could produce a long report. It was how far useful security work could travel from approved source code into live behavior, reviewable evidence, and a credible next decision.
02 / The observed move
What crossed the source-to-live boundary
One run · four boundaries
VulnHunter’s Hunt workflow began with the pinned crAPI source. It mapped exposed entry points, traced attacker-controlled data toward sensitive operations, formed hypotheses, and used focused subagents to challenge weak ideas before packaging what survived.
The interesting part came next. Generated tests registered fresh crAPI users, logged in through the application’s own API, obtained JSON Web Tokens, and exercised the live local target. There were no preloaded crAPI accounts driving the selected examples. Source understanding became authenticated application behavior that a reviewer could inspect.
That is a meaningful capability signal. It also needs a boundary.
This was one controlled, non-blind run. Public crAPI solution material remained readable. VulnHunter’s separate Fix and Verify workflows did not run. The study does not establish operation against a live target without source, accuracy, repeatability, production readiness, or net labor saved.
The right conclusion is narrower and more useful: for this source-led application and API use case, VulnHunter carried a material part of the path from code analysis into live authenticated testing.
03 / The operating system
The tool was one part of the system
The run used three different layers that are easy to collapse if they all get called “the harness.”
VulnHunter’s upstream repository also contains a native batch and benchmark harness. That tooling was present in the project, but it was not the custom experiment harness used here. The naming matters because the responsibilities are different: VulnHunter analyzed, the experiment harness controlled and recorded, and a human had to decide what the evidence meant.
The architecture was less about adding another layer of AI than keeping those responsibilities from bleeding into one another.
Responsibility map
Mapped the application, challenged hypotheses, generated tests, and packaged candidates.
Checked scope, prepared and monitored crAPI, constrained the run, kept records, and stopped it.
Retained authority to accept, reject, or leave a candidate unresolved as a finding.
04 / What the run left behind
One denominator, four different states
Complete candidate set · workflow state
The complete review set contained 46 candidate packages. A candidate package is a lead with a hypothesis, code path, proof material, and machine test state—not a confirmed finding.
Those numbers describe workflow state. They are not 39 vulnerabilities, and they cannot be used as an accuracy or false-positive score because the run lacked a locked, independently scored ground-truth set.
One reproduced example involved Broken Object Level Authorization (BOLA). BOLA occurs when an application confirms that a user is logged in but fails to confirm that the user owns the specific record named in the request. In the retained test, a fresh attacker identity supplied another user’s vehicle identifier and received the corresponding location data.
That is useful reproduction evidence. It is still not the entire finding.
The package included the endpoint, request shape, source location, classification, proof-of-concept material, and runnable test. The curated record did not yet resolve the named reviewer, business impact, Common Vulnerability Scoring System (CVSS) score, affected asset ownership, ticket routing, approved remediation, or validation plan. It also split the operator path across a proof document, test, and shared helper rather than presenting one complete intake record.
That package boundary cannot prove VulnHunter is unable to produce those fields. It shows what was and was not present in this experiment’s retained package.
05 / Manual practice
Where manual penetration testing still carries the weight
The experiment did not make manual penetration testing irrelevant. It made the handoff easier to see.
VulnHunter was well suited to fast, repeatable work close to the source: building an application map, tracing many candidate paths, generating concrete tests, and preserving technical material for review. A human tester still owned the parts that depend on judgment across systems and organizations: whether the scenario matters, which conditions are realistic, how attacks chain, what the business impact is, whether the evidence clears the finding bar, and what deserves priority.
That division is not a consolation prize for the human. It is the operating model.
The agent can compress a large amount of structured exploration. The program gains value when the next stages can absorb that work without burying reviewers in unresolved packages. If human validation remains the narrowest point, candidate production alone does not show that the program has scaled. It may simply show that the queue moved.
The next evaluation therefore has to measure both sides of the handoff: what the tool produces and what a practitioner still has to do before the organization can act.
06 / The next proof
What an enterprise proof of concept should test
Proposed operating path · not demonstrated by this run
- 01Approved intake
- 02Bounded execution
- 03Evidence normalization
- 04Human triage
- 05Vulnerability management
- 06Remediate + retest
The current run demonstrated a tool capability and an experiment system. It did not demonstrate an enterprise integration. The useful next move is to test that larger operating path deliberately.
A bounded proof of concept should ask whether the system can:
- accept an approved source revision, running target, rules of engagement, test identities, and explicit time and cost limits;
- execute inside a controlled boundary with observable startup, health, progress, refusal, and teardown behavior;
- normalize tool output into a review record with enough evidence, context, and lineage for efficient human triage;
- keep machine state separate from named-human disposition;
- route accepted work into the organization’s existing vulnerability-management system rather than creating a competing queue;
- support remediation and independent retest without allowing the testing authority to change production or close its own findings; and
- measure reviewer effort, repeatability, integration burden, and total operating cost—not merely how many candidates the agent can generate.
That path is a proposal, not a description of what this run already achieved.
It is also where the investment decision becomes real. An agentic tool may be fast and technically capable while still creating an expensive evidence-conversion problem. Another may appear less expansive but fit the intake, review, remediation, and audit path better. A mixed approach may win.
07 / Credit where it belongs
The contribution is larger than this run
This field study tested one slice of VulnHunter. That boundary should not hide what the repository gives the security community beyond this run.
Several design choices are useful techniques in their own right: start from an attacker’s path through the code rather than a generic checklist; ask a separate phase to disprove a weak hypothesis; preserve phase outputs as files another process can inspect; keep verification non-mutating and separate from the work that proposed the fix; expose a stable scan manifest for downstream systems; and refuse to turn failed agent execution into a clean bill of health. Unknown coverage should remain unknown.
Those choices cannot settle the product decision, and appreciation cannot soften the evaluation boundary. The respectful response to an open contribution is neither applause without testing nor criticism without context. It is to run the system, show the boundary, report what survived, identify what still has to be engineered, and return the lessons to the field.
Capital One gave the industry something concrete to examine, challenge, adapt, and improve. That deserves credit—and careful use.
08 / Read with the result
Study boundary
This field study covers one controlled VulnHunter Hunt against pinned crAPI source and a live local target. It was not blind; public crAPI solution material remained available. Fix and separate Verify did not run. Candidate reproduction is not human finding acceptance. The article does not claim accuracy, false-positive rate, repeatability, production readiness, enterprise scale, remediation quality, or product superiority.
The public field-study companion opens the actual experiment-control source, architecture diagrams, method, and runnable review-boundary tests. The historical engine and controller are provided for inspection and adaptation, not as a one-command reproduction of the private run.