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.