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.

🔗 Official announcement →

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

  • alwaysLoad for MCP servers

    MCP server configs accept alwaysLoad: true to make all tools from that server bypass tool-search deferral and stay loaded for the whole session.

  • claude plugin prune for orphaned dependencies

    Auto-installed plugin dependencies left behind after their parent was removed used to linger. claude plugin prune removes orphaned dependencies, and plugin uninstall --prune cascades the cleanup at uninstall time.

  • /skills filter search

    Long skill lists were hard to navigate. /skills now has a type-to-filter search box.

  • PostToolUse output replacement for all tools

    hookSpecificOutput.updatedToolOutput was previously MCP-only. PostToolUse hooks can now replace tool output for any tool.

  • --dangerously-skip-permissions skips writes to .claude/skills, .claude/agents, .claude/commands

    Permission prompts no longer fire in this mode for skill/agent/command files.

  • CLAUDE_CODE_FORK_SUBAGENT=1 in SDK and claude -p

    Forked subagents now work in non-interactive sessions.

  • Vertex AI: X.509 mTLS Workload Identity Federation

    Support for certificate-based ADC (Application Default Credentials).

  • /terminal-setup enables iTerm2 clipboard

    iTerm2’s “Applications in terminal may access clipboard” setting is now flipped on, so /copy works 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 language setting.

  • Claude.ai connector deduplication

    Connectors with the same upstream URL are deduplicated instead of appearing twice.

  • SDK mcp_authenticate accepts redirectUri

    For custom-scheme completion and claude.ai connectors.

Improvements

  • OpenTelemetry on LLM request spans — added stop_reason, gen_ai.response.finish_reasons, and user_system_prompt (gated behind OTEL_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] /context opens a native token-usage dialog.
  • [VSCode] voice dictation honors accessibility.voice.speechLanguage when no Claude Code language is configured.
  • Reduced peak file descriptor usage during find in 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.
  • --resume startup crash on external builds — fixed.
  • --resume failing 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 prompt parameter.
  • 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.
  • /usage content 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_PROXY via managed-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.json file.
  • /usage returning “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_AGENT env for subprocesses — set so gh can attribute traffic to Claude Code (carryover noted).

Notes

  • alwaysLoad is 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 prune is destructive in the “remove unreferenced files” sense. Run after a series of plugin uninstalls; review with claude plugin list first 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 PostToolUse updatedToolOutput change widens the surface a hook can mutate. Audit project hooks that expected MCP-only behavior.