Claude Code 2.1.121
MCP `alwaysLoad`, `claude plugin prune`, `/skills` filter search, `PostToolUse` output replacement for all tools, scrollable overflow dialogs, and a large cleanup of memory leaks, scrollback duplication, and resume crashes.
This article is a summary based on official documentation.
What changed
Claude Code 2.1.121 (April 28, 2026) — MCP servers can now opt out of tool-search deferral, plugin dependency cleanup gets a dedicated command, PostToolUse hooks can replace output for any tool (not just MCP), and a long list of memory leaks, scrollback bugs, and resume crashes are fixed.
New features
-
alwaysLoadfor MCP serversMCP server configs accept
alwaysLoad: trueto make all tools from that server bypass tool-search deferral and stay loaded for the whole session. -
claude plugin prunefor orphaned dependenciesAuto-installed plugin dependencies left behind after their parent was removed used to linger.
claude plugin pruneremoves orphaned dependencies, andplugin uninstall --prunecascades the cleanup at uninstall time. -
/skillsfilter searchLong skill lists were hard to navigate.
/skillsnow has a type-to-filter search box. -
PostToolUseoutput replacement for all toolshookSpecificOutput.updatedToolOutputwas previously MCP-only.PostToolUsehooks can now replace tool output for any tool. -
--dangerously-skip-permissionsskips writes to.claude/skills,.claude/agents,.claude/commandsPermission prompts no longer fire in this mode for skill/agent/command files.
-
CLAUDE_CODE_FORK_SUBAGENT=1in SDK andclaude -pForked subagents now work in non-interactive sessions.
-
Vertex AI: X.509 mTLS Workload Identity Federation
Support for certificate-based ADC (Application Default Credentials).
-
/terminal-setupenables iTerm2 clipboardiTerm2’s “Applications in terminal may access clipboard” setting is now flipped on, so
/copyworks inside iTerm2 — including from tmux. -
MCP startup auto-retry
MCP servers that hit a transient error during startup now auto-retry up to 3 times instead of staying disconnected.
-
Terminal tab title localized
The terminal tab session title is now generated in your configured
languagesetting. -
Claude.ai connector deduplication
Connectors with the same upstream URL are deduplicated instead of appearing twice.
-
SDK
mcp_authenticateacceptsredirectUriFor custom-scheme completion and claude.ai connectors.
Improvements
- OpenTelemetry on LLM request spans — added
stop_reason,gen_ai.response.finish_reasons, anduser_system_prompt(gated behindOTEL_LOG_USER_PROMPTS). - Faster startup after upgrade — the Recent Activity panel was removed from the release-notes splash.
- LSP diagnostic summaries expand on click/ctrl+o with a visible expand hint.
[VSCode]/contextopens a native token-usage dialog.[VSCode]voice dictation honorsaccessibility.voice.speechLanguagewhen no Claude Code language is configured.- Reduced peak file descriptor usage during
findin the Bash tool on large directory trees.
Notable fixes
Memory and stability
- Multi-GB image-processing leak — fixed unbounded RSS growth when processing many images in one session.
/usage~2GB leak — fixed on machines with large transcript histories.- Long-running tool memory leak — fixed when tools fail to emit a clear progress event.
Sessions, resume, and Bash
- Bash tool permanently unusable — fixed when the directory Claude was started in is deleted or moved mid-session.
--resumestartup crash on external builds — fixed.--resumefailing on corrupt transcript line — large sessions with a line corrupted by an unclean shutdown now skip the corrupt line instead of failing.
Bedrock and MCP
thinking.type.enabled is not supported— fixed when using Bedrock application inference profile ARNs.- Microsoft 365 MCP OAuth — fixed failure with duplicate or unsupported
promptparameter. - claude.ai MCP connectors silently disappearing — fixed when the connector-list fetch hits a transient auth error at startup.
UI: scrollback, scrolling, dialogs
- Scrollback duplication on Ctrl+L / redraw — fixed in non-fullscreen mode on tmux, GNOME Terminal, Windows Terminal, and Konsole.
- Fullscreen prompt typing snapping scroll back to bottom — fixed; typing no longer pulls you down after you’ve scrolled up.
- Overflowing dialogs not scrollable — dialogs that exceed terminal height are now scrollable with arrow keys, PgUp/PgDn, home/end, and the mouse wheel in both fullscreen and non-fullscreen modes.
- Wrapped URL not clickable across rows — clicking any line of a long URL that wraps in fullscreen mode now opens the full URL.
/usagecontent clipped when no-flicker mode is off — fixed./focus“Unknown command” when fullscreen renderer is off — now explains how to enable it.
Settings, permissions, and remote sessions
- “Always allow” rules for built-in tools — fixed not surviving worker restarts in remote sessions.
NO_PROXYviamanaged-settings.json— fixed not being respected for all HTTP clients on the native build.- Managed-settings approval prompt exiting on accept — now applies settings and continues.
- Invalid legacy enum values — invalid entries no longer invalidate the entire
settings.jsonfile. /usagereturning “rate limited” after stale OAuth token — now refreshes automatically.
Miscellaneous
- Embedded grep/find/rg shell wrappers — fixed failure when the running binary is deleted mid-session; falls back to installed tools.
AI_AGENTenv for subprocesses — set soghcan attribute traffic to Claude Code (carryover noted).
Notes
alwaysLoadis per-server. Use it sparingly — it brings back the pre-tool-search load behavior, which can inflate the model’s tool catalog. Reserve it for servers whose tools you call almost every session.claude plugin pruneis destructive in the “remove unreferenced files” sense. Run after a series of plugin uninstalls; review withclaude plugin listfirst if unsure.- The scrollback-duplication fix targets specific terminals (tmux, GNOME Terminal, Windows Terminal, Konsole). If you saw duplication elsewhere, it may be a different bug.
- The
PostToolUseupdatedToolOutputchange widens the surface a hook can mutate. Audit project hooks that expected MCP-only behavior.