Stop Guessing.
Start Reproducing.
An open-source AI investigation agent that turns vague bug reports into reproducible tests, execution evidence, and verifiable Proof Packs.
The Reproduction Ladder
The agent escalates through bounded investigation steps. It performs inexpensive static checks first and proceeds to test execution only when justified.
1. Baseline & Invariant Check
Before generating new tests, the agent pins the commit and executes the existing test suite. If the baseline is broken, it refuses to misclassify environment failures as bug proof.
2. Hypothesis & AST Synthesis
Analyzes issue text and symbol definitions to formulate 1-3 testable hypotheses. Generates minimal, targeted pytest candidates within strict path and size limits.
3. Isolated Execution & Verdict
Executes candidates in a container with network disabled, non-root user, and resource limits. Captures actual exit codes, assertions, and sanitized traces into a Proof Pack.
Honest Verdicts, Never Guesses
Unlike chat interfaces that hallucinate certainty, BugBounty Hunter uses deterministic verification checks. A setup error is never reported as proof that a bug does not exist.
The observed failure matches the reported defect and is backed by exit codes, traceback assertions, and repeatable replay commands.
The investigation executed candidate edge cases and passed cleanly under the tested conditions without observing the reported defect.
The environment failed, baseline tests did not pass, execution timed out, or evidence was insufficient to confirm the result.
The Proof Pack
Every completed investigation produces an evidence-backed bundle you can download, replay, and attach to GitHub PRs.
{
"schemaVersion": "1.0.0",
"investigationId": "demo-inv-42",
"verdict": "REPRODUCED",
"repository": {
"url": "fixture://sample-buggy-repo",
"commitSha": "fixture-v0.1.0",
"testFramework": "pytest"
},
"reproductionTest": {
"filePath": "tests/test_reproduction_candidate.py",
"replayCommand": "pytest tests/test_reproduction_candidate.py -v",
"expectedFailureTrace": "struct.error: unpack requires a buffer of 8 bytes"
},
"executionEvidence": {
"lastExitCode": 1,
"executionDurationMs": 820
}
}