Claude Code changelog

Claude Code 2.1.121

This release delivers significant usability and stability enhancements. Key additions include a type-to-filter search for skills and an `alwaysLoad` option for MCP server tools, ensuring faster access. Terminal dialogs are now scrollable with keyboard and mouse, and prompt typing in fullscreen mode no longer auto-scrolls. Critical memory leaks involving image processing, usage reporting, and failing tools have been resolved, providing a more stable and efficient experience. Further improvements enhance MCP server reliability, authentication, and general terminal interaction.

Added

  • Added `alwaysLoad` option to MCP server config — when `true`, all tools from that server skip tool-search deferral and are always available
  • Added `claude plugin prune` to remove orphaned auto-installed plugin dependencies; `plugin uninstall --prune` cascades
  • Added a type-to-filter search box to `/skills` so you can find a skill in long lists without scrolling

Changed

  • 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=1` now works in non-interactive sessions
  • `--dangerously-skip-permissions` no longer prompts for writes to `.claude/skills/`, `.claude/agents/`, and `.claude/commands/`
  • `/terminal-setup` now enables iTerm2's "Applications in terminal may access clipboard" setting so `/copy` works, 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 `language` setting
  • 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_authenticate` now supports `redirectUri` for custom scheme completion and claude.ai connectors
  • OpenTelemetry: added `stop_reason`, `gen_ai.response.finish_reasons`, and `user_system_prompt` (gated behind `OTEL_LOG_USER_PROMPTS`) to LLM request spans
  • Voice dictation now respects the `accessibility.voice.speechLanguage` setting when no Claude Code language is configured
  • `/context` now opens a native token usage dialog
  • Reduced peak file descriptor usage during `find` in the Bash tool on large directory trees

Fixed

  • Fixed unbounded memory growth (multi-GB RSS) when processing many images in a session
  • Fixed `/usage` leaking 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 `--resume` crashing on startup in external builds
  • Fixed `--resume` failing 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 supported` error when using Bedrock application inference profile ARNs
  • Fixed Microsoft 365 MCP OAuth failing with duplicate or unsupported `prompt` parameter
  • 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_PROXY` not being respected for all HTTP clients when set via `managed-settings.json` under the native build
  • Fixed managed settings approval prompt exiting the session even when accepted — now applies settings and continues
  • Fixed `/usage` returning "rate limited" after a stale OAuth token — now refreshes automatically
  • Fixed invalid legacy enum values in `settings.json` invalidating the entire settings file
  • Fixed `/usage` dialog content being clipped when no-flicker mode is off
  • Fixed `/focus` showing "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