Code review for agents
A warden for
every diff.
diffwarden is a small CLI your agent calls. It reviews a diff — uncommitted changes, a branch, a single commit — and hands back a live terminal review for humans, plain text for agents, and stable JSON or NDJSON to gate on. Many reviewers, one artifact, read-only by default.
- no writes, no comments — by default
- 10 reviewer engines — 2 flagship · 8 experimental
- stable JSON / NDJSON
Pipeline
One command in.
A reconciled review out.
The CLI owns every step between your agent's call and the result. Adapters only run their engine and hand back text or structured output.
- 01
Resolve a target
Point diffwarden at uncommitted changes, a base branch, a commit, or custom instructions. It collects the diff and the changed-line ranges.
- 02
Fan out to reviewers
A reviewer is an engine held to diffwarden's contract. Your selected reviewers run concurrently behind adapters — each read-only, each running one shared rubric. Repeatable --focus flags add scoped lanes over the same diff.
- 03
Reconcile findings
Results are parsed, schema-validated, checked against changed lines, then deduplicated and attributed across reviewers.
- 04
Deliver & gate
Render the human review or agent summary, emit JSON or NDJSON, optionally fail CI on severity, and append a history report — all from the final artifact.
Loop
Your agent runs it
until the diff comes back clean.
diffwarden reviews once and exits — read-only, stateless, no fixing. The agent reads the artifact, fixes what it judges valid, and runs it again until the gate clears.
give it to your agent
The loop is a prompt. The agent calls diffwarden, reads the artifact, fixes, and re-runs — these two drive exactly that:
- ▸ diffwarden-changes.md the loop, run on your working diff
- ▸ complete-linear-issues.md the same loop, built into Linear issue-tracker work
until no valid findings remain
the agent owns the loop. diffwarden owns the review and the contract.
Lineage
Built on Codex's review pipeline.
diffwarden's review carries a Codex-derived review rubric — the same semantics, not the same text. The designs fork at the review child — the isolated sub-agent Codex spawns to run a review.
4 review targets
rubric semantics
parse-ladder fallbacks
read-only intent
the review child the designs fork
one review child · runs git itself
core-owned diff
fan-out → N
schema + location validation
dedup + attribution
read-only · graded
diffwarden · one artifact Reviewers
Pick your engines.
Mix them freely.
Every engine runs the same rubric, parsing, and output contract. Where they differ is how hard each is held read-only — and the rung an engine sits on is exactly that.
Full capability matrix+ fake — built-in reviewer for credential-free dev
flagship = fully supported and live-tested — the recommended defaults. The other eight are experimental: functional, best-effort.
* from Jun 15, 2026, running Claude headlessly (claude -p / Agent SDK) draws from extra usage, not included plan usage
† from Jun 18, 2026, Gemini stays supported for enterprise and paid API-key users only — Google's consumer Gemini CLI moved to Antigravity CLI
Trialing
Audition new models on real diffs. Change nothing.
One run can mix engines, transports, and per-reviewer models — billed across the logins and keys you already have, with a review surface that's read-only by default.
› --reviewer claude* --reviewer pi:openrouter-high
fan one diff across several engines in a single run
› diffwarden doctor · --report
preflight a reviewer; keep a durable record of how it performs
* Claude's auto auth prefers a logged-in Claude Code account and strips API credentials from the spawned reviewer process
the engines, and every model they can reach ↓
Reach
Ten engines.
The rest of the model space.
Two of the ten — Pi and OpenCode — open onto the rest of the model space, behind the same one contract.
2 flagship, live-tested (claude · codex) · 8 experimental
diffwarden -
Codex
-
Claude
-
Gemini
-
Copilot
-
Pi
-
OpenCode
-
Cursor
-
Droid
-
Grok
-
Antigravity
OpenRouter · any base URL
-
OpenAI
-
Google
-
Anthropic
-
Meta
-
DeepSeek
-
Qwen
-
Mistral
-
Kimi
-
MiniMax
-
GLM
-
NVIDIA
any OpenAI-compatible endpoint →
Capabilities
Every flag is a capability.
Every run is one artifact.
No feature tour — just the flags your agent already passes. Hover, focus, or tap one to see what it buys you.
its stdout — readable for you, parseable for your agent ↓
Sync the policy.
Keep the machine bits local.
Layer a host-owned file over your portable user config. Reviewer sets and review policy stay in dotfiles; machine IDs and per-host enabled toggles stay on the host that owns them.
$ diffwarden reviewers edit droid \\
--disabled --local
$ diffwarden doctor
diffwarden.config.json
reviewers · sets · readonly · reporting
diffwarden.config.local.json
machine IDs · local enabled toggles
effective config on this host
merged before validation · local values take precedence
No overlay? Nothing changes. A project config still wins wholesale.
Quickstart
Install from npm. Review from any repo.
Diffwarden is a published CLI package. Run guided setup straight from npx — or install it globally — then point it at an authenticated reviewer for real gates.
- Requires Node ≥ 22.19
- diffwarden@0.5.0 is the latest npm package
- v0.5.0 stays available for source release details
-
diffwarden initruns a guided discover-and-scaffold setup in your terminal — with live per-engine model catalogs and recommended picks — then writes your config -
diffwarden reviewers discoveris a read-only, zero-spend probe: every engine comes back Ready, Needs attention, or Not installed
$ npx --yes diffwarden@latest init
$ npx --yes diffwarden@latest review --target base:main $ npm install --global diffwarden
$ diffwarden --version $ diffwarden doctor --reviewer pi
$ diffwarden review \
--target base:main \
--reviewer pi $ npx skills add aurokin/diffwarden \
--global --skill diffwarden \
--agent codex claude-code --full-depth - name: diffwarden review
run: |
diffwarden review \
--target base:${{ github.base_ref }} \
--reviewer-set ci \
--json \
--fail-on-findings P2
# exit 1 blocks the merge Put a warden on your diffs.
One command your agent calls. Many reviewers, one artifact, read-only by default.