/code-review: review depth is coupled to model effort, and `medium`/`high` are identical on Opus 5
Summary
/code-review couples review depth to model reasoning effort, with two consequences on Opus 5:
/code-review mediumand/code-review highresolve to the same review prompt variant, sohighchanges only how hard the model thinks — not what the review does. The review's structure (single pass, no fan-out, no verify) is identical.- There is no way to hold model effort at one level while running a deeper review shape. Passing a level arg raises the turn's model effort to that same level.
Request: let review depth be selected independently of model reasoning effort.
Detail
Inspecting the prompt variants shipped in the CLI (2.1.220), (level, model) maps to a review "cell". On claude-opus-5:
| level | review shape |
|---|---|
| low | 1 diff pass, no verify, ≤4 findings |
| medium | single careful diff pass, ≤15 findings, no subagents |
| high | same as medium — single careful diff pass, ≤15 findings, no subagents |
| xhigh | 10 angles worked inline, dedup, gap sweep, ≤15 findings |
| max | 10 finder subagents + per-candidate verifier + gap sweep |
On the generic/default mapping, medium and high both fan out to 8 finder subagents with a verify pass, and differ meaningfully from each other (precision-biased vs recall-biased, ≤8 vs ≤10 findings). So the "high is a real step up from medium" behavior that holds on other models does not hold on Opus 5 — the two collapse.
Separately, the command's getEffort raises the turn's model effort to the level passed. That makes the two dimensions — how thorough is the review and how hard does the model think — a single knob, and there is no setting that separates them.
Why this matters
The two are genuinely distinct axes. "Fan out across 8 review angles and verify each candidate" and "reason at xhigh" are independent choices, and more reasoning effort is not automatically better for review: there are public reports of Opus 5 scoring better on FrontierCode at medium effort than at higher effort, which — if it replicates — is exactly the case where you'd want broad review coverage without raising reasoning effort. Today that combination is unreachable.
Even setting that aside, the current mapping is surprising: asking for high and getting a structurally identical review to medium is not what the argument name suggests.
Repro
On Opus 5 (CLI 2.1.220):
/code-review medium # single-pass review, no subagents
/code-review high # single-pass review, no subagents — same shape
/code-review max # multi-agent fan-out
The difference between the first two is only in reasoning effort; no subagents are spawned in either case.
Possible resolutions
Either would help:
- Give Opus 5's
higha distinct review shape frommedium(e.g. the inline multi-angle pass currently used atxhigh), so the levels are monotonic in depth. - Allow depth and reasoning effort to be set independently — e.g.
/code-review high --effort medium, or a settings key for review depth that does not move session/turn effort.
Environment
- Claude Code 2.1.220 (native install, macOS / darwin 25.5.0)
- Model: Opus 5
effortLevel: "medium"in~/.claude/settings.jsontengu_review_workflow_routing: false (so the Workflow-backed review path is not in play here)
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗