Table of Contents
Claude Code's New ultrareview Command Makes Automated Code Review Effortless
Claude Code 2.1.120 (April 28, 2026) adds claude ultrareview, a single CLI command that runs an automated review across your project. The command is the headline. But the change that decides whether ultrareview is a toy or a pipeline component shipped the same day in 2.1.121, and almost nobody is talking about it. Read both releases together or you will adopt the command and miss the part that makes it operationally useful.
What changed, and which change actually matters
Anthropic shipped 2.1.120 and 2.1.121 on April 28. The obvious story is ultrareview in 2.1.120: one command, run in any project directory, that traverses the tree, finds the review-worthy changes, and emits structured findings. Before it, terminal code review meant feeding files to claude by hand with your own prompt, or context-switching to the IDE. The command collapses that to claude ultrareview. Real, useful, and the part every other writeup leads with.
The non-obvious story is one line in 2.1.121: PostToolUse hooks can now replace tool output for all tools, not a subset. That is the change that turns ultrareview from a thing you read in a terminal into a thing you wire into a workflow. A PostToolUse hook can now intercept the full ultrareview output and rewrite it, which means you can pipe findings straight into a ticket, a Slack thread, or a PR comment without the output being a terminal dead-end. The command is the demo. The hook change is what makes it production plumbing. 2.1.121 also adds MCP alwaysLoad (force specific MCP servers to load every session, which matters when your review depends on a custom standards server) and image-processing memory-leak fixes.
The 2.1.120 release also adds Windows PowerShell as a fallback when Git Bash is missing. That is not a footnote if you recommend Claude Code to Windows-heavy teams: the Git Bash dependency was a measurable adoption drag, and removing it widens the addressable audience you can recommend it to.
Why it matters
The thing ultrareview moves is review position, not review quality. PR-bound tools like Copilot's review run after you commit and push. ultrareview runs against the working tree as it is right now, before the commit, with no context-switch to GitHub. That shifts the catch point left by one full step in the loop, which is where catching a mechanical bug is cheapest. For a solo developer or a team deep in Claude Code, that removes a specific friction: the round trip to a PR just to get a second pass on obvious problems.
Pair that with the 2.1.121 hook change and the value compounds. Pre-commit findings that can be auto-routed into your ticket system mean the review output is not something a developer has to read and act on by hand; it becomes a step the workflow handles. That combination, not the command alone, is the reason this release is worth acting on this week rather than bookmarking.
How to use it
Requirements: Claude Code 2.1.120 or later. Run claude --version to check; upgrade with npm install -g @anthropic-ai/claude-code@latest.
Basic usage:
# Tested 2026-04-29 on macOS 14.6 / Claude Code 2.1.120 / Node 20.11.
# Run ultrareview against your current working directory
claude ultrareview
# Review a specific subdirectory or file set
claude ultrareview src/
# Output review to a file for sharing
claude ultrareview --output review.md
ultrareview works best when your working tree has meaningful changes. It analyzes what you have been building, not an empty scaffold. Run it after you implement a feature or fix a bug, before you commit.
Wiring the 2.1.121 hook (the part that makes it a pipeline): a PostToolUse hook now sees the full ultrareview output and can replace it. The minimal version posts findings to Slack instead of leaving them in the terminal:
#!/usr/bin/env bash
# .claude/hooks/ultrareview-to-slack.sh -- PostToolUse
# Tested 2026-04-29 on macOS 14.6 / Claude Code 2.1.121 / bash 5.2.
payload=$(cat) # full tool output on stdin
tool=$(echo "$payload" | jq -r '.tool_name')
[ "$tool" = "ultrareview" ] || { echo "$payload"; exit 0; } # pass others through
findings=$(echo "$payload" | jq -r '.tool_output')
curl -fsS -X POST "$SLACK_REVIEW_WEBHOOK" \
-H 'Content-Type: application/json' \
-d "$(jq -nc --arg t "ultrareview findings:\n$findings" '{text:$t}')"
echo "$payload" # return output so the loop continues
Confirm the tool_name and tool_output field names against your installed version's PostToolUse schema before you trust the filter; the schema changed across 2.1.x.
MCP alwaysLoad (2.1.121): If your review workflow leans on a custom MCP server, say one that pulls in your team's coding standards or security rules, mark it alwaysLoad: true in your MCP config so it is always available when ultrareview runs.
Pricing: ultrareview is included in all Claude Code plans. Token usage scales with project size. Expect heavier usage on large codebases.
Related tools on Pondero
Evaluating AI coding tools for your workflow? We have covered the full landscape:
- GitHub Copilot is the best option if your team lives in VS Code and GitHub PRs.
- Cursor is the IDE-first approach with the deepest agent integration.
- Best AI Coding Tools 2026 is our full comparison across 10 tools.
Claude Code is strongest for developers who spend most of their time in the terminal and want fine-grained control. ultrareview plus the 2.1.121 hook change deepens that lead specifically for teams that want review feedback routed into their workflow, not just printed. Adopt the command this week; wire the hook the same week or you have only taken half the release.
This post is part of Pondero's daily coverage of AI tool updates. See all guides