- PostToolUse hooks now replace tool output for all tools, not just MCP. If you have hooks using
hookSpecificOutput.updatedToolOutput, they now fire on Read, Edit, Bash, and every other built-in tool (more below). - New
alwaysLoadMCP server config skips tool-search deferral. Set"alwaysLoad": trueon any server whose tools you need available on every turn without a ToolSearch call first (more below). claude ultrareviewruns non-interactively from CI or scripts. Prints findings to stdout (--jsonfor structured output), exits 0 on completion or 1 on failure.- Three memory leaks fixed: images,
/usage, and stalled tool progress could each grow sessions past 2 GB. If long sessions have felt sluggish or your machine started swapping, update. - MCP servers auto-retry up to 3 times on transient startup errors. Servers that previously stayed disconnected after a flaky first connection now recover silently.
New in 2.1.121, 2.1.120
2.1.121 (April 28, 2026)
- Added
alwaysLoadoption to MCP server config; whentrue, all tools from that server skip tool-search deferral and are always available - Added
claude plugin pruneto remove orphaned auto-installed plugin dependencies;plugin uninstall --prunecascades - Added a type-to-filter search box to
/skillsso you can find a skill in long lists without scrolling - PostToolUse hooks can now replace tool output for all tools via
hookSpecificOutput.updatedToolOutput(previously MCP-only) - Fullscreen mode: typing into the prompt no longer jumps scroll back to the bottom after you've scrolled up to read earlier output
- Dialogs that overflow the terminal are now scrollable with arrow keys, PgUp/PgDn, home/end, and mouse wheel in both fullscreen and non-fullscreen modes
- Clicking any line of a long URL that wraps across rows in fullscreen mode now opens the full URL
- SDK and
claude -p:CLAUDE_CODE_FORK_SUBAGENT=1now works in non-interactive sessions --dangerously-skip-permissionsno longer prompts for writes to.claude/skills/,.claude/agents/, and.claude/commands//terminal-setupnow enables iTerm2's "Applications in terminal may access clipboard" setting so/copyworks, including from tmux- MCP servers that hit a transient error during startup now auto-retry up to 3 times instead of staying disconnected
- The terminal tab session title is now generated in your configured
languagesetting - Claude.ai connectors with the same upstream URL are now deduplicated instead of appearing as duplicates
- Vertex AI: support X.509 certificate-based Workload Identity Federation (mTLS ADC)
- Faster startup after upgrading: removed the Recent Activity panel from the release-notes splash
- LSP diagnostic summaries now expand on click/ctrl+o and show the expand hint
- SDK:
mcp_authenticatenow supportsredirectUrifor custom scheme completion and claude.ai connectors - OpenTelemetry: added
stop_reason,gen_ai.response.finish_reasons, anduser_system_prompt(gated behindOTEL_LOG_USER_PROMPTS) to LLM request spans - [VSCode] Voice dictation now respects the
accessibility.voice.speechLanguagesetting when no Claude Code language is configured - [VSCode]
/contextnow opens a native token usage dialog - Fixed unbounded memory growth (multi-GB RSS) when processing many images in a session
- Fixed
/usageleaking up to ~2GB of memory on machines with large transcript histories - Fixed memory leak when long-running tools fail to emit a clear progress event
- Fixed Bash tool becoming permanently unusable when the directory Claude was started in is deleted or moved mid-session
- Fixed
--resumecrashing on startup in external builds - Fixed
--resumefailing on large sessions when a transcript line was corrupted by an unclean shutdown; the corrupt line is now skipped - Fixed
thinking.type.enabled is not supportederror when using Bedrock application inference profile ARNs - Fixed Microsoft 365 MCP OAuth failing with duplicate or unsupported
promptparameter - Fixed scrollback duplication when pressing Ctrl+L or triggering a redraw in non-fullscreen mode on tmux, GNOME Terminal, Windows Terminal, and Konsole
- Fixed claude.ai MCP connectors silently disappearing when the connector-list fetch hits a transient auth error at startup
- Fixed "Always allow" rules for built-in tools in remote sessions not surviving worker restarts
- Fixed
NO_PROXYnot being respected for all HTTP clients when set viamanaged-settings.jsonunder the native build - Fixed managed settings approval prompt exiting the session even when accepted; now applies settings and continues
- Fixed
/usagereturning "rate limited" after a stale OAuth token; now refreshes automatically - Fixed invalid legacy enum values in
settings.jsoninvalidating the entire settings file - Fixed
/usagedialog content being clipped when no-flicker mode is off - Fixed
/focusshowing "Unknown command" when the fullscreen renderer is off; now explains how to enable it - Fixed embedded grep/find/rg shell wrappers failing when the running binary is deleted mid-session; now falls back to installed tools
- Reduced peak file descriptor usage during
findin the Bash tool on large directory trees
2.1.120 (April 28, 2026)
- Windows: Git for Windows (Git Bash) is no longer required; when absent, Claude Code uses PowerShell as the shell tool
- Added
claude ultrareview [target]subcommand to run/ultrareviewnon-interactively from CI or scripts; prints findings to stdout (--jsonfor raw output) and exits 0 on completion or 1 on failure - Skills can now reference the current effort level with
${CLAUDE_EFFORT}in their content - Set
AI_AGENTenvironment variable for subprocesses soghcan attribute traffic to Claude Code - Spinner tips that recommend installing the desktop app or creating skills/agents are now hidden when you already have them
- Show a "use PgUp/PgDn to scroll" hint when the terminal sends arrow keys instead of scroll events
- Faster session start when you have many claude.ai connectors configured but not authorized
- The auto mode denial message now links to the configuration docs
claude plugin validatenow accepts$schema,version, anddescriptionat the top level ofmarketplace.jsonand$schemainplugin.json- Auto-compact in auto mode now displays
auto(lowercase, no token count) instead of a misleading token value - Fixed pressing Esc during a stdio MCP tool call closing the entire server connection (regression in 2.1.105)
- Fixed
/rewindand other interactive overlays not responding to keyboard input after launching withclaude --resume - Fixed terminal scrollback duplication in non-fullscreen mode (resize, dialog dismiss, long sessions)
- Fixed
DISABLE_TELEMETRY/CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFICnot suppressing usage metrics telemetry for API and enterprise users - Fixed false-positive "Dangerous rm operation" permission prompts in auto mode for multi-line bash commands containing both a pipe and a redirect
- Fixed long selection menus clipping below the terminal in fullscreen mode; the focused option now stays on screen as you scroll
- Fixed Write tool output collapsing instead of expanding when clicking "+N lines" in fullscreen
- Fixed slash command picker jumping while typing, and improved highlight to only match contiguous substrings in blue
- Fixed
/pluginmarketplace failing to load when one entry uses an unrecognized source format; that entry is shown but installing it prompts you to update - [VSCode]
/usagenow opens the native Account & Usage dialog instead of returning plain-text session cost - [VSCode] Voice dictation now respects the
languagesetting in~/.claude/settings.json - Fixed
findin the Bash tool exhausting open file descriptors on large directory trees, causing host-wide crashes (macOS/Linux native builds)
Notes
PostToolUse hook surface keeps expanding. In 2.1.118, hooks gained the ability to invoke MCP tools directly via type: "mcp_tool". In 2.1.119, PostToolUse inputs started including duration_ms. Now 2.1.121 extends updatedToolOutput from MCP-only to all tools. Anthropic is methodically turning hooks into a full interception layer. If you maintain custom hooks, audit whether your updatedToolOutput handler assumed it would only see MCP tool results, because it will now fire on every tool call.
Third round of memory leak fixes this month. 2.1.101 plugged a leak where long sessions retained dozens of historical message list copies. 2.1.117 fixed an idle re-render loop growing memory on Linux. Now 2.1.121 closes three more paths: image processing, /usage transcript scanning, and stalled tool progress events. Each could individually push RSS past 2 GB. If you run long sessions or process many images, these fixes are cumulative and worth updating for.