[BUG] /code-review ignores requested low/medium effort argument, always runs/renders xhigh workflow tier
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet (see "Related issues" below — the nearest matches are about model selection, cancellation, and the
/effortslider, none about the effort argument being ignored). - [x] This is a single bug report.
- [x] I am using the latest version of Claude Code.
What's Wrong?
The built-in /code-review skill accepts an optional effort-level argument — low | medium | high | xhigh — documented as scaling the review's cost/scope (low/medium: fewer, high-confidence findings; high→max: broader multi-agent coverage). At high/xhigh/max this runs a workflow-backed multi-agent review (confirmed by the maintainer note in #70876: the workflow "consumes only level + target").
When invoked with low or medium (or with --fix and no level at all), the skill ignores the requested level and behaves as xhigh anyway. It manifests two ways across versions:
- Hardcoded redirect. The skill's returned instructions unconditionally say:
> Run the workflow-backed code review at xhigh effort instead of reviewing inline.
> Invoke: Workflow({ name: "code-review", args: "xhigh" })
— with no acknowledgment of the requested level. This fires even when the argument was medium, --fix low, or just --fix (no level).
- Inline xhigh-tier body. In other invocations the skill renders inline instructions whose body text hardcodes the xhigh tier's depth, e.g.:
> Review target: --effort medium
>
> xhigh effort → 5+5 angles × 8 candidates × 1-vote verify → sweep → ≤15 findings
>
> You are reviewing for recall at extra-high effort …
— i.e. it echoes the caller's medium in the target line but then prescribes the xhigh finder/candidate depth regardless.
Either way the requested level has no effect: a low/medium request on a tiny diff spins up (or instructs the caller to spin up) the same heavyweight multi-agent finder+verify swarm as an explicit xhigh audit. We consistently observe these runs consuming tens of minutes of wall-clock (15–40+ min in our occurrences) and a large token budget on diffs of 2–5 files / a handful of lines — where the requested low/medium pass is precisely the tool's documented mechanism for keeping a small review cheap.
We hit this across 5 independent sessions on real diffs ranging 2–5 files, invoked every documented way (medium, --fix, --fix low, --fix --effort medium) — the outcome was identical each time.
What Should Happen?
The requested effort level should govern the review's depth/cost:
/code-review low//code-review mediumshould run the lighter inline review (fewer, high-confidence findings) — NOT redirect to, or render, thexhighworkflow tier./code-review//code-review --fixwith no explicit level should pick a sensible default that scales with diff size, not unconditionally default toxhigh.- The
args/--effortvalue the caller passes should be threaded into theWorkflow({ name: "code-review", args: <level> })handoff (and into the inline depth spec), instead of a fixedxhighliteral.
Error Messages/Logs
# Requested level (medium) — skill's returned redirect:
Run the workflow-backed code review at xhigh effort instead of reviewing inline.
Invoke: Workflow({ name: "code-review", args: "xhigh" })
# Requested level (medium) — skill's inline body:
Review target: `--effort medium`
xhigh effort → 5+5 angles × 8 candidates × 1-vote verify → sweep → ≤15 findings
You are reviewing for recall at extra-high effort ...
Steps to Reproduce
- Stage a small diff — e.g. 2–3 files, a handful of changed lines, no logic change (a doc edit or a stale-comment removal is enough).
- Request a low-cost review at an explicit level, any of these forms:
/code-review medium/code-review lowSkill({ skill: "code-review", args: "medium" })Skill({ skill: "code-review", args: "--fix low" })Skill({ skill: "code-review", args: "--fix --effort medium" })Skill({ skill: "code-review", args: "--fix" })(no level)
- Observe the skill's returned instructions: they either redirect to
Workflow({ name: "code-review", args: "xhigh" }), or render the inlinexhigh effort → 5+5 angles × 8 candidates …depth spec — in both cases ignoring the requestedlow/medium. - If the redirect is followed, the workflow-backed multi-agent review runs for many minutes on the trivial diff.
Expected: at low/medium the review runs the lighter inline pass sized to the requested level; the default (no level) scales with diff size rather than always being xhigh.
Claude Model
Not sure / Multiple models (reproduced across multiple sessions/models — the behavior is in the skill's effort routing, independent of the session model)
Is this a regression?
I don't know
Claude Code Version
2.1.211 (Claude Code)
Platform
Anthropic API
Operating System
Ubuntu/Debian Linux
Terminal/Shell
Non-interactive/CI environment
Additional Information
Related issues (searched, none is a duplicate of this effort-argument-ignored bug):
- #70876 (closed) — documents the mechanism: at
high/xhigh/max,/code-reviewruns a workflow that "consumes onlylevel+target". Confirms the effort argument is a real, threaded contract, which is what makes ignoring it a bug rather than an unimplemented feature. - #69653 (open) —
ultracode=xhigh+ workflow orchestration; adjacent labeling/transparency concern, different symptom. - #61030 (closed, docs) — confirms
/code-review [effort-level](e.g./code-review high) is a documented, supported argument shape. - #73569, #71382 (open) — workflow-mode cancellation / synthesis hang; different symptoms, same heavyweight-workflow surface.
Impact for automation: skills that drive /code-review at a diff-sized effort tier (small diffs → low/medium) get the xhigh multi-agent workflow regardless, so a churn-based review-depth gate cannot actually reduce cost on small changes — the requested level is the lever, and it is inert.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗