[BUG] /code-review ignores requested low/medium effort argument, always runs/renders xhigh workflow tier

Status Open
Reported on v2.1.211
Maintainer reply None cached
Activity 2 comments · opened Jul 16, 2026

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 /effort slider, 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:

  1. 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).

  1. 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 medium should run the lighter inline review (fewer, high-confidence findings) — NOT redirect to, or render, the xhigh workflow tier.
  • /code-review / /code-review --fix with no explicit level should pick a sensible default that scales with diff size, not unconditionally default to xhigh.
  • The args/--effort value the caller passes should be threaded into the Workflow({ name: "code-review", args: <level> }) handoff (and into the inline depth spec), instead of a fixed xhigh literal.

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

  1. 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).
  2. Request a low-cost review at an explicit level, any of these forms:
  • /code-review medium
  • /code-review low
  • Skill({ 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)
  1. Observe the skill's returned instructions: they either redirect to Workflow({ name: "code-review", args: "xhigh" }), or render the inline xhigh effort → 5+5 angles × 8 candidates … depth spec — in both cases ignoring the requested low/medium.
  2. 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-review runs a workflow that "consumes only level + 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.

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗