ProofRun – a local verification receipt for AI coding agents ProofRun, a new open-source tool released at version 0.2.0, provides cryptographic verification receipts for AI coding agents by binding test results to the exact code state, with statuses of PASS, FAIL, STALE, or NOT RUN. The tool, written by Claude Code under human direction and adversarially reviewed, runs real subprocesses without any LLM calls, operates fully offline, and compares argument arrays rather than strings. It addresses the problem of AI agents claiming tests pass without actually running them, and its own command comparison was found and fixed after a security review. ProofRun doesn't judge whether your code is correct. It proves — cryptographically, not by asking nicely — which checks actually ran against the exact code you have right now. An AI coding agent says "all tests pass." Is that true? Maybe. It was true the last time the agent actually ran the tests. But that might have been three edits ago. The agent might not even remember running them — it might just be inferring "the change looks right, tests probably still pass." From the words alone, you have no way to tell "I ran it and it passed" apart from "I'm pretty sure it would pass." ProofRun closes that gap. Not by making the agent more honest — by making the claim itself checkable. bash $ proofrun run test -- pytest ... test: pass exit 0, 1841ms $ proofrun status test PASS exit 0, 1841ms code changes after this point — agent or human, doesn't matter $ proofrun status test STALE last run: pass, exit 0 — code changed since Every check result is bound to a fingerprint of your exact code state: the git commit, plus a hash of everything uncommitted — staged or not, tracked or not. Change a single byte, and the result flips to STALE automatically. Nobody has to remember to ask "does this PASS still count?" curl -L https://github.com/yebiguo/proofrun/releases/download/v0.2.0/proofrun linux amd64.tar.gz | tar xz other platforms: https://github.com/yebiguo/proofrun/releases Or build from source: go install github.com/yebiguo/proofrun/cmd/proofrun@latest proofrun init writes .proofrun.yml proofrun run test -- pytest runs pytest for real, binds the result proofrun status --strict non-zero exit if anything isn't PASS No LLM calls, anywhere. ProofRun doesn't use AI to verify AI. It starts a real subprocess and reads its real exit code — that's the entire mechanism. Four statuses, never a guess. PASS , FAIL , STALE , NOT RUN — each one comes from an observed execution, or the documented absence of one. There's no fifth "probably fine." Fully offline. Zero network calls, zero telemetry, zero accounts. Argv-exact, not string-matched. A check declared as pytest -k "foo bar" can't be satisfied by a command that merely looks similar once flattened to text — ProofRun compares real argument arrays, not strings. It does not parse test output, does not judge code quality, and does not auto-fix anything. See AGENTS.md /yebiguo/ProofRun/blob/main/AGENTS.md for the complete boundary. ProofRun was written by an AI coding agent Claude Code under human direction, then went through several rounds of independent, read-only adversarial review before the first release. That review found that ProofRun's own command comparison could be tricked: a misquoted shell argument made a check silently run zero tests and still report PASS . Full repro, the exact fix, and why a simple patch wasn't enough → docs/case-study.md /yebiguo/ProofRun/blob/main/docs/case-study.md . Every fix was verified against a real reproduction before being accepted — not just reviewed for plausibility. A tool built to hold AI agents accountable has no business existing if it can't survive that same scrutiny applied to itself. proofrun init generate .proofrun.yml proofrun run