Cybersecurityintermediate

Why AI Security Agents Need a Proof Stage

A model's bug report is a hypothesis until a validator reproduces it against a running app.

Reviewed by Abhijith N M · 24 October 2026 · Editorial standards

The Simple VersionNo jargon

Google's PageBreak agent uses Gemini models to hunt for cross-site scripting flaws in Google's web applications. Since it entered full operation in January, it has found more than 500 XSS vulnerabilities. The interesting part is not the count. It is the rule that governs what gets reported. PageBreak does not send product teams a message saying "the model thinks this input is unsafe." It reports a vulnerability only after a deterministic validator reproduces the exploit against a running application. For XSS, that means actually executing JavaScript in the target context. Google's engineers describe this as a deliberate choice to prioritize deterministic validation, and they attribute a near-zero false-positive rate to it. Think about what a language model produces. It reads code and forms a plausible story about how untrusted input might reach a sink without escaping. Sometimes the story is right. Sometimes a framework auto-escapes, a middleware strips the payload, or the code path is unreachable. The model cannot reliably tell the difference, because it is reasoning about patterns, not executing them. A validator can. It sends the payload and checks whether the script runs. The two stages do different jobs. The probabilistic stage generates candidates cheaply and broadly, including places a human reviewer might not look. The deterministic stage is the filter that decides which candidates become tickets. Google also keeps unverified findings internally, to seed later scans and to find gaps in its validators, but those never reach product teams. The consequence is economic. Triage time is the scarce resource in appsec, and a report that cannot be reproduced burns it. A reproduction harness converts an unreliable stream of guesses into a smaller stream of demonstrated bugs. This is analysis, not a claim about PageBreak's internals: any agent that skips the proof stage shifts verification work onto the humans downstream.

Why AI Security Agents Need a Proof Stage — Visual Breakdown

Click any step below to inspect
Gemini agent investigates code
Vulnerability hypothesis
Deterministic validator runs exploit
Exploit reproduces on running app
Report filed to product team
Sequence of Events
Why It Matters in Production
Most security teams are limited by triage capacity, not by the number of alerts they can generate. An agent that files unverified findings moves the cost of proof onto the humans who receive them, and a few noisy reports are enough to erode trust in the whole pipeline. Requiring reproduction flips that: the machine absorbs the verification cost, and people see only demonstrated bugs. The limit is coverage. A validator can only confirm classes of bug it knows how to exploit, so findings outside its repertoire stay unverified and invisible to product teams. Anyone running an LLM-based scanner should treat the validator as the product, not an accessory.
Implementation & Syntax
🐍Python
# Sketch of a validator gate, not Google's code.
def report_only_if_reproduced(hypothesis, target_url):
    payload = hypothesis.build_payload()
    result = run_exploit(target_url, payload)  # real request, real browser

    if result.javascript_executed:
        return {"status": "confirmed", "evidence": result.trace}

    # Keep the candidate for internal review; do not file a ticket.
    return {"status": "unverified", "reason": result.blocked_by}

for h in agent_hypotheses:
    outcome = report_only_if_reproduced(h, h.target_url)
    if outcome["status"] == "confirmed":
        file_vulnerability(h, outcome["evidence"])

Quick Concept Check

Test your understanding in 15 seconds

What must happen before PageBreak reports a vulnerability to a product team?

Related Concepts

Complementary topics

Written and edited by the nexGenCoders team. Spotted a mistake? Tell us and we will fix it.