Claude and Codex don't catch the same problems. A Code Review workflow puts several reviewers on the same changes and combines what they find into one report, so you see more before you merge. It can also post the findings as comments on the pull request.
Before you start
- Code projects only. A review runs on a worktree's changes.
- To review with both models, connect Claude and Codex. See Connect your AI models.
- For pull request comments, open a pull request for the worktree first.
Choose a review
Each review runs three kinds of reviewer, called tracks: compliance with your repository's instructions, a methodical check of what each change affects, and security.
- Code Review (Multi-Provider) runs each track on both Claude and Codex, for the widest coverage.
- Code Review (Claude) runs the tracks on Claude only.
- Code Review (Codex) runs the tracks on Codex only.
Any review tracks you add to your repository run alongside them.
Run a review
- In the sidebar, open the worktree's menu and choose Dispatch workflow. You can also select Dispatch workflow on the Workflow runs card in the worktree's Activity panel.
- In the Dispatch workflow dialog, choose a Code Review workflow.
- Optional: change its inputs. They're listed by name, and most are True or False. For example,
include_uncommittedreviews changes you haven't committed yet, andpost_pr_commentposts the findings to the pull request. Both are on by default. - Select Run.
The run appears on the Workflow runs card. Open it to follow the reviewers and read the report when it finishes.
To look at the review workflows themselves, select Workflows in the sidebar, then Library. Select Filter, then Source, then Built-in.
Read the results
- The report in the run lists the findings that held up when checked, with a verdict and a score.
- Pull request comments put the findings on the lines they're about, when the worktree has a pull request.
- Earlier findings from previous automated reviews are checked again. The review reports each one as confirmed, fixed, rejected, or unverified, in its own section rather than as new comments.
The pull request comment names the commit that was reviewed. It warns you when that commit isn't the latest one on the pull request, or when the review included uncommitted changes.
Why a review says it's incomplete
A review can't pass, and its score is capped at 7, when it couldn't check everything. That happens when a track failed or was skipped, when the review couldn't load the pull request's review history from GitHub, or when earlier findings couldn't be checked. An earlier finding that is confirmed as still there also blocks a pass. Fix the cause and run the review again.
Add your own review tracks
If your team checks the same things in every review, write them down as a review track so an agent checks them too. A track is a Markdown file in the .unstoppable-code/review-tracks/ folder at the root of your repository. All three Code Review workflows pick these files up.
---
name: Database changes
model: $default-codex
thinking_effort: high
---
Review changed queries and migrations for missing indexes, long table locks,
and data loss. Report each problem with the file and line.The section between the --- lines sets up the reviewer:
model, ormodelswith a list, chooses who reviews. Set exactly one of them. Each entry inmodelsadds one more reviewer.nameis the title shown in the report. It defaults to the file's path.thinking_effortis one ofoff,low,medium,high,xhigh, ormax. It defaults tohigh.max_turnsandfast_modeare optional.
The text below it is the reviewer's instructions. To skip your tracks for one run, set enable_custom_review_tracks to False in the dialog.
Act on the findings
You can address the comments yourself, or set up a hook so an agent does it. In project settings, under Scripts and hooks (Hooks in a multi-repo project), a hook on New PR Review With Inline Comments can hand new review comments to an agent. A hook on PR Created can start a review on every new pull request.
