Repository check
Steer runs your project’s checks when the agent ends its turn. If one fails, the agent gets feedback from the failure and keeps working to resolve it.
Cleanup deleted a source file.
FAIL → preserve the source treeA commit review loop for your coding agent
Prompting isn’t verification.
Steer holds each commit for independent review. When the same mistake keeps coming back, Steer proposes a check or guard that catches it early. You approve each one. Steer monitors whether the problem returns.
For Claude Code & Codex · Free & open source
The proposed change
app.get('/invoices', requireAuth, list)
app.get('/invoices/export', exportCsv)
↑ no requireAuthAn independent reviewer flags the new route. It has no auth check, so anyone with the URL could download every invoice.
COMMIT BLOCKED · 1 finding · 3 reviewersSent to your agent to fix or reject with a reason.
If the problem comes back
Accepted finding → recorded Same failure again → flagged as recurring
Steer connects the related findings and brings them to you with their evidence. You decide whether the problem deserves a lasting fix.
Steer proposes a lasting fix
Add a repository check:
every route uses requireAuth
or appears in public-routes.txt.Steer proposes a check that fails on any route without auth. You approve it. When a later route skips auth, the agent gets feedback from the failure at the end of its turn and keeps working to resolve it.
The recurrence report
For each fix, Steer counts the reviewed commits that show the problem, before and after. It flags the problem if it returns. Numbers are illustrative.
The feedback loop
Steer reads your reviews and session history to find where your agent keeps getting stuck. It proposes a lasting fix, you approve it, and Steer watches for the problem to return.
Three independent reviewers challenge the change before it lands. Steer blocks the commit and sends the findings to your agent, which fixes what holds up and rejects the rest with a reason.
Respond / Choose the mechanism
Steer uses determinism whenever it can: a check or guard first, an instruction only when the problem needs judgment.
Steer runs your project’s checks when the agent ends its turn. If one fails, the agent gets feedback from the failure and keeps working to resolve it.
Cleanup deleted a source file.
FAIL → preserve the source treeIntercept a matching command or edit before it runs. The guard also tells the agent how to correct the action.
python script.py
BLOCK → use python3Guidance for decisions no check or guard can reliably detect. An instruction steers judgment but cannot force compliance, which is why Steer tries the other tiers first.
Before proposing a replacement,
read why the current design exists.Recurring false positives refine the commit reviewer’s instructions, so the gate learns what you already ruled out.
Generated files look hand-edited.
Check the generator before flagging.You approve every fix. Steer keeps the evidence behind it and tracks whether the problem returns.
Get started
Install the plugin. Run setup.
Keep working with your agent.
Setup helps you choose a reviewer and enables commit review. Use an authenticated Claude, Codex, or Antigravity CLI. The reviewer does not have to match your agent: Claude can review Codex’s work, and Codex can review Claude’s.
1 Install from your terminal
claude plugin marketplace add steer-sh/steer claude plugin install steer@steer-marketplace
2 Open Claude Code and run
/steer-setup
Choose your reviewer, then ask your agent to make a code change and commit normally.
1 Install from your terminal
codex plugin marketplace add steer-sh/steer codex plugin add steer@steer-marketplace
2 Open Codex and run
/steer-setup
Approve the plugin reminder in /hooks. After setup, restart Codex and approve the new hook definitions there to enable commit review.
PR review arrives after the session ends, when the agent no longer has the context. Steer reviews each commit inside the session, and the commit waits until the agent fixes each finding or rejects it with a reason. Steer also remembers every finding, so a mistake that keeps coming back becomes a fix.
Your agent checks each finding against the code. It fixes what holds up and rejects the rest with a reason, and Steer records both. Recurring false positives feed reviewer adjustments. Nothing becomes a check, guard, or instruction until you approve it.
The blocked agent can contest the block on the spot, with its reason. Steer records every block and audits whether it was right. Steer never removes a fix on its own. Removal is your decision, and a removed fix goes to an archive you can restore.
Steer is free. Reviews use your chosen reviewer's account or API allowance and add time before commit. Three reviewers run in parallel by default; you can configure the reviewer, model, and run count. Most commits need one to three review rounds. The maximum is five: four blocking rounds, then a fifth that is advisory only.
Steer reads your local Claude Code and Codex session history to find recurring problems. It stores its review history locally under ~/.steer/state. Steer itself makes no network calls: no account, no server, no telemetry. Reviews run through the reviewer CLI you choose and follow that provider's data handling.