TL;DR
Claude Code 2.1.120 ships claude ultrareview [target], a non-interactive CLI subcommand that runs the cloud-based multi-agent code review from CI pipelines or scripts. JSON output, exit code 0 on success and 1 on failure — drop it straight into a GitHub Actions step. The rest of the release is a stability sweep: ten fixes (including a serious find-tool bug that was crashing entire macOS/Linux hosts), one perf bump, and Windows users no longer need Git for Windows installed.
What's new: ultrareview leaves the REPL
The headline change is small in surface area but big in consequence. /ultrareview — the slash command Anthropic shipped earlier this year that hands your branch off to a fleet of cloud-hosted agents for a deep, multi-perspective code review — was previously interactive only. You had to be in a Claude Code session to use it.
2.1.120 adds claude ultrareview [target] as a top-level subcommand. With no argument, it reviews the diff between your current branch and the default branch, including any uncommitted or staged work. Pass a GitHub PR number and it reviews that PR instead. Output goes to stdout (use --json for the machine-readable form), and the process exits 0 on completion or 1 on failure.
That's the entire change, but it's the change that turns ultrareview from "a thing I run before pushing" into "a thing my CI runs every PR."
Why it matters
Most AI code-review tools today live inside an editor or a chat UI. They assume a human is in front of the screen, reading findings, deciding what to act on. Headless invocation with deterministic exit codes is the boring plumbing that turns AI review into infrastructure — something a YAML file can require, gate on, and audit.
The implications:
- Pre-merge gating. Add
claude ultrareview $PR_NUMBER --jsonas a required GitHub Actions check. Parse the JSON, fail the build on critical findings. - Nightly hygiene. Cron a review against
main, post results to Slack. - Solo developers. Script-trigger ultrareview before
git pushso the agents catch what a co-reviewer would — without needing a co-reviewer.
Technical facts
The full 2.1.120 surface area, by category:
| Area | Count | Notable |
|---|---|---|
| New features | 1 | claude ultrareview CLI subcommand |
| Fixes | 10 | find-tool fd exhaustion (host crash), stdio MCP Esc regression |
| Improvements | 1 | Faster start with many claude.ai connectors |
| Other changes | ~12 | Windows PowerShell fallback, ${CLAUDE_EFFORT} in skills |
Highlights worth pulling out:
- Critical fix:
findin the Bash tool was exhausting open file descriptors on large directory trees, causing host-wide crashes on macOS/Linux native builds. If you've been seeing inexplicable system freezes, this is your culprit. - Regression fix: pressing Esc during a stdio MCP tool call no longer kills the entire server connection — a regression that landed in 2.1.105 and survived roughly 15 patch releases.
- Telemetry honor fix:
DISABLE_TELEMETRYandCLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFICnow actually suppress usage metrics for API and enterprise users. - False-positive fix: "Dangerous rm operation" prompts in auto mode no longer fire on multi-line bash with both a pipe and a redirect.
- Windows: Git for Windows / Git Bash is no longer required. When absent, Claude Code falls back to PowerShell as the shell tool.
- Skills: new
${CLAUDE_EFFORT}template variable inside skill content, exposing the current effort level. - Subprocess attribution: a new
AI_AGENTenvironment variable is set soghcan attribute traffic to Claude Code. - Plugins:
claude plugin validatenow accepts$schema,version, anddescriptionat the top ofmarketplace.json, plus$schemainplugin.json. - VSCode:
/usageopens the native Account & Usage dialog instead of a plain-text dump; voice dictation respects the language setting in~/.claude/settings.json.
Comparison vs 2.1.119 and the field
2.1.119 was a feature-heavy release: settings persistence in ~/.claude/settings.json, custom prUrlTemplate, --from-pr support for GitLab/Bitbucket/GitHub Enterprise. 2.1.120 is the inverse — one focused capability and a stability pass. The cadence (multiple versions per week) tells its own story.
Compared to other AI coding CLIs — Cursor CLI, Aider, Codex CLI — exposing a multi-agent cloud review as a headless subcommand with JSON output and exit semantics is unusual. Most stop at interactive review inside the tool. This is one of the first AI review surfaces that fits cleanly into a "pre-merge" GitHub Actions step.
Use cases
- CI gate: required check on every PR, blocking merge on critical findings.
- Nightly main-branch sweep: catch issues that landed during the day before they compound.
- Pre-push hook for solo devs:
git pushhook running ultrareview, holding the push if findings are above threshold. - Fresh Windows machines: install Claude Code without installing Git for Windows first.
- Privacy-sensitive teams: telemetry env vars now actually do what they say — finally safe to deploy on regulated workloads.
Limitations & pricing
/ultrareview (and therefore claude ultrareview) is billed as extra usage, not part of your plan's included quota. Pro and Max subscribers get 3 trial runs — one-time, no refresh, expiring 2026-05-05. After that, every run costs.
Other constraints:
- A single review takes 5–10 minutes wall time (cloud agents).
- Not a replacement for human review — the agents don't know your product, users, or the why behind a tradeoff.
- The
findhost-crash fix only applies to macOS/Linux native builds, not the Node distribution. - The PowerShell fallback on Windows kicks in only when Git Bash is absent.
- Claude Code itself stays free to install via
npm install -g @anthropic-ai/claude-code; this release doesn't change base pricing.
What's next
The interesting trajectory here is "every interactive command eventually becomes headless." If ultrareview got the CI treatment in 2.1.120, expect /plan, /security-review, and similar to follow. The Windows polish pass also signals real attention to non-Mac users — Git Bash dependency removal was a long-standing complaint.
For the immediate term: if you're on Pro or Max, burn at least one of your three free ultrareview runs before May 5. And if you're on macOS or Linux native builds and have ever seen weird system instability while running Claude Code in big repos, update today — that find bug was no joke.
Sources: Claude Code CHANGELOG, ultrareview docs, @ClaudeCodeLog announcement.