Claude Code v2.1.118 adds vim modes, unified `/usage`, and custom themes
Claude Code `v2.1.118` ships vim visual mode support, merges `/cost` and `/stats` into `/usage`, introduces named custom themes, and resolves a large batch of MCP OAuth and plugin bugs.
Score breakdown
Developers using Claude Code should update to `v2.1.118` to benefit from MCP OAuth reliability fixes, the new `DISABLE_UPDATES` control for managed environments, and hook-level MCP tool invocation that enables richer agentic automation pipelines.
- 01Vim visual mode (`v`) and visual-line mode (`V`) with selection, operators, and visual feedback are now supported.
- 02The `/cost` and `/stats` commands are merged into `/usage`; both remain as shortcuts opening the relevant tab.
- 03Named custom themes can be created and switched from `/theme`, stored as JSON in `~/.claude/themes/`, or shipped by plugins via a `themes/` directory.
Claude Code `v2.1.118`, authored by ashwin-ant, introduces several notable quality-of-life improvements. Vim visual mode (`v`) and visual-line mode (`V`) arrive with full selection, operators, and visual feedback. The `/cost` and `/stats` commands are unified under `/usage`, though both old commands remain as typing shortcuts that open the relevant tab. Custom theming is now a first-class feature: users can create and switch named themes from `/theme`, hand-edit JSON files in `~/.claude/themes/`, or receive themes bundled in a plugin's `themes/` directory. Hooks gain the ability to invoke MCP tools directly using `type: "mcp_tool"`. Auto mode becomes more flexible with `"$defaults"` support in `autoMode.allow`, `autoMode.soft_deny`, and `autoMode.environment`, letting users add custom rules alongside built-in defaults rather than replacing them. WSL on Windows can now inherit managed settings from the Windows side via the `wslInheritsWindowsSettings` policy key, and a new `DISABLE_UPDATES` env var blocks all update paths — including manual `claude update` — more strictly than `DISABLE_AUTOUPDATER`.
The release resolves a substantial number of MCP OAuth bugs.
The release resolves a substantial number of MCP OAuth bugs. Fixed issues include: OAuth token refresh failing when a server revokes a token before its local expiry, a macOS keychain race condition where concurrent token refreshes could overwrite a freshly-refreshed token, MCP servers whose OAuth response omits `expires_in` requiring re-authentication every hour, step-up authorization silently refreshing instead of prompting for re-consent, and an unhandled promise rejection when an OAuth flow times out or is cancelled. Additional fixes address a credential save crash on Linux and Windows that could corrupt `~/.claude/.credentials.json`, `/login` having no effect when launched with `CLAUDE_CODE_OAUTH_TOKEN`, agent-type hooks failing with "Messages are required for agent hooks" for non-`Stop`/`SubagentStop` events, `prompt` hooks re-firing on tool calls made by a verifier subagent, and `/fork` writing the full parent conversation to disk per fork (now replaced with a pointer-and-hydrate approach). Several keyboard input freezes (`Alt+K`, `Alt+X`, `Alt+^`, `Alt+_`) and UI readability issues were also resolved.
Key facts
- 01Vim visual mode (`v`) and visual-line mode (`V`) with selection, operators, and visual feedback are now supported.
- 02The `/cost` and `/stats` commands are merged into `/usage`; both remain as shortcuts opening the relevant tab.
- 03Named custom themes can be created and switched from `/theme`, stored as JSON in `~/.claude/themes/`, or shipped by plugins via a `themes/` directory.
- 04Hooks can now invoke MCP tools directly using `type: "mcp_tool"`.
- 05New `DISABLE_UPDATES` env var blocks all update paths including manual `claude update`, stricter than `DISABLE_AUTOUPDATER`.
- 06Multiple MCP OAuth bugs fixed, including a macOS keychain race condition, token refresh failures on server-side revocation, and a credential save crash corrupting `~/.claude/.credentials.json` on Linux/Windows.
- 07The `/fork` command no longer writes the full parent conversation to disk per fork — it now writes a pointer and hydrates on read.
Topics
Summary and scoring are generated automatically from the original article. We always link back to the publisher and never republish images or paywalled content. Last processed Apr 23, 2026 · 11:04 UTC. How this works →