If someone tells you they review the diffs, they are probably lying.

Your agent said it works.Prove it.

Pull requests were built for people reviewing other people's code. Agents made the unit of work too large to read, then started writing the unit tests that approve their own work. Review got slower and proved less.

Proof Request is a new primitive: the agent states its claims, a second agent tries to break them, and you read the verdicts.

$npx @alterok/prq
Node 24+Apache-2.0runs on your own OpenAI key

An example

run #375072 · 55s
prq · 6 claims locked#375072
feedback-board · feat/search
✓a search box appears above the list12.2s
✓typing filters the suggestions as you type8.8s
✗the search is case-insensitive9.7s
- claimed case-insensitive
+ observed searching "CUSTOM FIELDS" shows no matches · "Custom fields" is on the board
✓when nothing matches, the board shows "no suggestions match"9.4s
?the list component is easier to readneeds a human
✓all tests pass9.7s
held 4 · broken 1 · needs a human 155s
tester e2e·sol judge decisions·luna
The agent's tests passed. The feature was broken.prq found it in one run.

What a proof request is

Three parts, in the order you read them.

01

Claims

What the agent says it did, in its own words. Locked with a hash before any check runs.

02

Verdicts

One per claim, from a vocabulary of four.

03

Judge

A separate agent scores the evidence. It never sees the code.

✓
held

The evidence supports the claim.

✗
broken

The evidence contradicts the claim.

?
needs a human

A judgement call. A named person decides.

○
unverified

Nothing could run. Never counts as held.

The spec

Proof Request 0.1. Five rules.

A proof request is one JSON file, proof-request.json. A tool that follows the rules can say it produces or reads Proof Request 0.1.

  1. 01Claims come from the author's own words, locked before any check runs.↗
  2. 02The author does not verify.↗
  3. 03The judge never sees code.↗
  4. 04A claim with no runnable check is never held.↗
  5. 05The vocabulary is fixed: held, broken, needs_human, unverified.↗

Why

Nobody is reading PRs.

Agents open them faster than anyone can read them, and the tests that approve them come from the same agent.

Pull requests started by an agent 40%+

of all pull requests on GitHub.

source: Octoverse 2026
Agent pull requests nobody comments on 9/10

get zero review comments. For Codex, 98%.

source: arXiv 2602.02345

A unit test checks the code. A proof request checks the running app.

Questions

Before you run it.

Does my code leave my machine?

The judge never sees code. The tester drives your app on localhost, and only the evidence (screenshots, HTTP lines, console output) goes to the model you configure.

Does it replace my tests?

It replaces the tests your agent writes to agree with itself. Keep the tests that encode decisions you made. prq checks what the agent claims, on the running app, and you write no test files.

What does it cost?

Nothing to install. You pay your own OpenAI usage. The judge runs on the Decisions API, where output tokens are free and input is $0.10 per million. Browser steps cost more, and depend on how many claims you check.

Which agents does it work with?

Any agent that can run a shell command. prq init can add a Codex stop hook that runs it when a task ends. The agent reads the broken rows as JSON. You read the page.

Do I still read the diff?

It is there, one click away. A proof request is what you read first, and most days it is all you read.

Get it

Run it after your agent says done.

$npx @alterok/prq

Works with Codex and any agent that can run a shell command. Open source. BYOK.