Code review that proves every bug it reports.

pr-review reads your pull requests and code with Claude, writes a failing test for each bug it suspects, and runs it in a sandbox. You only see the bugs it proved, each with a fix that already passed your tests.

A bug in canRefund lets every role issue refunds. The agent's test fails on it, and the one-line fix passes the test and the existing suite.

How a finding is made

Suspicions are cheap. pr-review keeps only the ones a test can prove, and drops the rest before you see them.

  1. Your code: a pull request, a branch, or a whole repository.
  2. Checks and tests: compiler, linters and your test suite run first.
  3. Claude investigates: reads the code and its callers, and writes a test for each suspicion.
  4. Sandbox verifies: every test is re-run offline. Suspicions it can't prove are dropped.
  5. Proven bugs: each comes with its failing test and a fix that passed your suite.

What counts as proof

Every piece of evidence is checked by pr-review itself after the agent finishes. Nothing is taken on the model's word.

  • A failing testThe agent writes a test for the correct behaviour. pr-review re-runs it: it must fail on your code and, for a pull request, pass before the change.
  • A broken existing testA test from your own suite passes on the base branch and fails with the change.
  • A compiler or linter errorA new tsc, ESLint, ruff or mypy error on a changed line. Reported as possible, not proven.
  • Quoted codeThe exact lines that show the bug, confirmed to exist where the agent says. Kept only at high confidence.

Your scans in one place

Run pr-review ui for a local dashboard that works with your repositories.

The pr-review dashboard: a list of findings, and a proven bug with its verification trail, the code, and a verified fix.
Each bug with its proof, the code around it, and a fix you can apply.
  • Start scans and reviewsPick a folder, a branch or a pull request, set a usage limit, and watch it work.
  • Preview the fixSee the whole file as it is and as it would be with the patch applied.
  • Apply and triageApply a verified fix to your working copy, undo it, or mark a bug as a false alarm.

Safe to point at your code

  • Tests run in a sandbox with no network access and none of your secrets.
  • The agent can read code and run tests. It can't write files, run commands, or reach GitHub.
  • It works on a fresh copy of the repository, so git-ignored files such as .env are never there.
  • A pull request can't change how it's reviewed: settings come from the base branch.
  • A fix is written to your repository only when you click Apply, and nothing is committed.

Get started

You need Python 3.12 or newer, uv, and a Claude login or an Anthropic API key. TypeScript projects tested with vitest and Python projects tested with pytest are supported.

uv tool install git+https://github.com/Ibr4hiMM/pr-review-agent
pr-review ui
pr-review scan ~/code/my-app

To review every pull request automatically, run pr-review init in your repository and add an ANTHROPIC_API_KEY secret on GitHub.