A commit review loop for your coding agent

Your agent apologizes.
Steer enforces.

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

invoice export / routes.ts

The proposed change

Add an invoice export.
Keep invoices private.

app.get('/invoices', requireAuth, list)
app.get('/invoices/export', exportCsv)
        ↑ no requireAuth

An 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.

The feedback loop

Turn recurring mistakes
into lasting fixes.

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.

01 / Before the commit

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

A fix that fits
the failure.

Steer uses determinism whenever it can: a check or guard first, an instruction only when the problem needs judgment.

When the turn ends

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.

For exampleCleanup deleted a source file.
FAIL → preserve the source tree
Before a tool runs

Guard

Intercept a matching command or edit before it runs. The guard also tells the agent how to correct the action.

For examplepython script.py
BLOCK → use python3
While the agent reasons

Instruction

Guidance 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.

For exampleBefore proposing a replacement,
read why the current design exists.
At commit review

Reviewer adjustment

Recurring false positives refine the commit reviewer’s instructions, so the gate learns what you already ruled out.

For exampleGenerated 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

Make the next
correction count.

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.

How is this different from PR 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.

What if the reviewer is wrong?

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.

What if a fix blocks the wrong thing?

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.

What does a review cost?

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.

Where does the history live?

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.