Change8

v2.1.118

Claude Code
12 features21 fixes1 improvementhooksmcp

Summary

This release introduces significant enhancements to Vim editing support, including visual and visual-line modes, and overhauls theme management by allowing named custom themes and plugin-shipped themes. Additionally, it brings numerous stability fixes, particularly around MCP server authentication, OAuth token handling, and session management across different operating systems.

New Features

  • Added vim visual mode (`v`) and visual-line mode (`V`) with selection, operators, and visual feedback
  • Introduced merged `/cost` and `/stats` into `/usage`, which remain as typing shortcuts that open the relevant tab
  • Enabled creation and switching between named custom themes from `/theme`, allowing hand-editing JSON files in `~/.claude/themes/`, and theme shipping via plugin `themes/` directories
  • Enabled hooks to invoke MCP tools directly via `type: "mcp_tool"`
  • Added `DISABLE_UPDATES` environment variable to completely block all update paths, including manual `claude update`, offering stricter control than `DISABLE_AUTOUPDATER`
  • Enabled WSL on Windows to inherit Windows-side managed settings via the `wslInheritsWindowsSettings` policy key
  • Updated Auto mode to include `"$defaults"` in `autoMode.allow`, `autoMode.soft_deny`, or `autoMode.environment` to add custom rules alongside the built-in list instead of replacing it
  • Added a "Don't ask again" option to the auto mode opt-in prompt
  • Added `claude plugin tag` command to create release git tags for plugins with version validation
  • Enabled `--continue`/`--resume` to find sessions that added the current directory via `/add-dir`
  • Enabled `/color` to sync the session accent color to claude.ai/code when Remote Control is connected
  • Enabled the `/model` picker to honor `ANTHROPIC_DEFAULT_*_MODEL_NAME`/`_DESCRIPTION` overrides when using a custom `ANTHROPIC_BASE_URL` gateway

Bug Fixes

  • Fixed `/mcp` menu hiding OAuth Authenticate/Re-authenticate actions for servers configured with `headersHelper`, and HTTP/SSE MCP servers with custom headers being stuck in "needs authentication" after a transient 401
  • Fixed MCP servers whose OAuth token response omits `expires_in` requiring re-authentication every hour
  • Fixed MCP step-up authorization silently refreshing instead of prompting for re-consent when the server's `insufficient_scope` 403 names a scope the current token already has
  • Fixed an unhandled promise rejection when an MCP server's OAuth flow times out or is cancelled
  • Fixed MCP OAuth refresh proceeding without its cross-process lock under contention
  • Fixed macOS keychain race where a concurrent MCP token refresh could overwrite a freshly-refreshed OAuth token, causing unexpected "Please run /login" prompts
  • Fixed OAuth token refresh failing when the server revokes a token before its local expiry time
  • Fixed credential save crash on Linux/Windows corrupting `~/.claude/.credentials.json`
  • Fixed `/login` having no effect in a session launched with `CLAUDE_CODE_OAUTH_TOKEN`; the environment token is now cleared so disk credentials take effect
  • Fixed unreadable text in the "new messages" scroll pill and `/plugin` badges
  • Fixed plan acceptance dialog offering "auto mode" instead of "bypass permissions" when running with `--dangerously-skip-permissions`
  • Fixed agent-type hooks failing with "Messages are required for agent hooks" when configured for events other than `Stop` or `SubagentStop`
  • Fixed `prompt` hooks re-firing on tool calls made by an agent-hook verifier subagent
  • Fixed `/fork` writing the full parent conversation to disk per fork; it now writes a pointer and hydrates on read
  • Fixed Alt+K / Alt+X / Alt+^ / Alt+_ freezing keyboard input
  • Fixed connecting to a remote session overwriting your local `model` setting in `~/.claude/settings.json`
  • Fixed typeahead showing "No commands match" error when pasting file paths that start with `/`
  • Fixed `plugin install` on an already-installed plugin not re-resolving a dependency installed at the wrong version
  • Fixed unhandled errors from file watcher on invalid paths or fd exhaustion
  • Fixed Remote Control sessions getting archived on transient CCR initialization blips during JWT refresh
  • Fixed subagents resumed via `SendMessage` not restoring the explicit `cwd` they were spawned with

Improvements

  • When auto-update skips a plugin due to another plugin's version constraint, the skip now appears in `/doctor` and the `/plugin` Errors tab

Claude Code Documentation