Claude Code v2.1.118 Ships: Vim Mode, /usage, Named Themes, WSL Fix & More
Claude Code v2.1.118 dropped at 00:42 on April 23, landing the largest batch of UX improvements in a single release since the Claude Code 2.0 rollout in February. The headline features — vim visual mode, a unified /usage command, named custom themes, and MCP tool invocation inside hooks — each address long-standing friction points that developers have been requesting in the GitHub issues tracker for weeks. Here is what changed and what it means in practice.
Vim visual mode (v / V)
Claude Code's terminal prompt editor now supports vim visual mode via v (character selection) and V (line selection), with the full standard selection operator set: d delete, y yank, c change, >/< indent. This completes the vim modal editing surface that shipped incrementally over the past three releases — you can now navigate, select, and manipulate prompt text entirely without the mouse in vim normal mode.
Visual mode works best combined with the existing w/b word-motion operators. A pattern like vw (select word forward), then c (change), lets you rewrite individual tokens in a long prompt without reaching for the arrow keys. V followed by y copies the entire current line to the clipboard — useful when you want to re-send a previous prompt with modifications.
/usage: one command instead of two
The /cost and /stats commands are gone. They have been merged into a single /usage command that displays both token consumption and cost in a unified view. The merged output shows the current session's input/output/cache token counts, the running cost in USD, and a per-model breakdown if you have used multiple models in the same session (e.g. switching between Opus and Sonnet for different tasks). This is a minor but welcome reduction in command-surface cognitive load.
Named custom themes via /theme
The /theme command now supports named themes. You can persist a colour scheme by name (e.g. /theme save monokai) and switch between saved themes with /theme monokai. Theme definitions are stored in ~/.claude/themes/ as JSON files, making them portable across machines via dotfile sync. The built-in themes (light, dark, high-contrast) continue to work as before.
DISABLE_UPDATES env var
Setting DISABLE_UPDATES=1 in your environment suppresses the automatic update prompt that appears at Claude Code startup when a newer version is available. This is primarily useful in CI/CD contexts where you want a pinned Claude Code version and do not want the update check to add latency or produce unexpected output in logs. Note that the env var disables the prompt, not the update check itself — Claude Code still checks, it just silently skips the nag when DISABLE_UPDATES=1.
WSL: inherit Windows-managed settings
Claude Code running inside WSL (Windows Subsystem for Linux) can now inherit managed settings from the Windows-side settings.json. Previously, WSL and Windows instances maintained separate configurations — organisations managing Claude Code via fleet tooling had to maintain two config files. With this change, WSL instances automatically inherit the Windows-managed settings block, though WSL-specific overrides remain possible. This matters for teams that manage Claude Code settings centrally through MDM or deployment scripts on Windows fleets with WSL development environments.
/color: sync accent colour to claude.ai/code
The /color command lets you set Claude Code's accent colour and have it synchronised to your claude.ai/code session. If you have multiple Claude interfaces open (terminal + browser), the accent colour now stays consistent across both. Minor quality-of-life feature, but a signal that Anthropic is actively working on the cross-surface identity coherence of the Claude Code product.
Bug fixes worth knowing about
- /fork writing full parent conversation to disk — fixed. Previously,
/forkserialised the entire parent conversation history to a temp file before branching, which caused noticeable pause and disk writes on long sessions. The fix branches in-memory. - Alt+K / Alt+X keyboard freezes — fixed. These shortcuts caused the terminal to stop accepting input in certain terminal emulators (iTerm2, Wezterm, and Alacritty were all affected). If you had workarounds in place for this, they can be removed.
- Remote Control sessions archived on transient errors — fixed. A transient API error during a Remote Control session was incorrectly triggering the session-archival flow, losing the session context. The fix distinguishes transient from terminal errors and only archives on the latter.