- Shipped 27 hours after 2.1.117, Claude Code 2.1.118 adds vim visual mode in the prompt, a new `claude plugin tag` command for cutting release tags, a stricter DISABLE_UPDATES env var, unified /usage menu, named custom themes, and hooks that can invoke MCP tools directly.
- CLI surface grew by 1 command, 6 options, 3 env vars, 1 model.
TL;DR
Claude Code 2.1.118 landed roughly 27 hours after 2.1.117 with a mix of editor UX and plugin-ecosystem work. Biggest headline items: vim visual mode (v / V) in the prompt, a new claude plugin tag command for cutting validated release tags, a stricter DISABLE_UPDATES env var that blocks even manual claude update, merged /cost+/stats into /usage, named custom themes in ~/.claude/themes/, and hooks that can invoke MCP tools directly via type: "mcp_tool". Bundle size up +263.6 kB (+0.7%), prompt token count unchanged.
What's new
- Vim visual mode in the prompt — character selection with
v, line selection withV, operators, visual feedback. /usagereplaces/costand/stats. Old names still work as shortcuts to the right tab.- Named custom themes — create and switch via
/theme, or hand-edit JSON in~/.claude/themes/. Plugins can ship athemes/directory. - Hooks can invoke MCP tools directly with
type: "mcp_tool"— no more shelling out. claude plugin tag— new CLI command to create release git tags for plugins, with version validation.DISABLE_UPDATESenv var — stricter thanDISABLE_AUTOUPDATER, blocksclaude updatetoo.- WSL policy:
wslInheritsWindowsSettingslets WSL inherit Windows-side managed settings. - Auto mode: include
"$defaults"inautoMode.allow/soft_deny/environmentto extend the built-in list instead of replacing it. "Don't ask again" option added to the auto-mode opt-in prompt. --continue/--resumenow find sessions that added the current directory via/add-dir./colornow syncs the session accent to claude.ai/code when Remote Control is connected.
Technical facts
CLI surface deltas pulled from the public changelog mirror:
| Surface | Before (2.1.117) | After (2.1.118) | Delta |
|---|---|---|---|
| Commands | 33 | 34 | +1 (tag) |
| Options | 72 | 78 | +6 |
| Env vars | 560 | 563 | +3 |
| Models | 95 | 96 | +1 (claude-desktop-3p) |
| Bundle size | — | — | +263.6 kB (+0.7%) |
| Prompt files | — | — | +0 |
| Prompt tokens | — | — | +0 (100% system-reminder) |
New options: --dry-run, -m, --message <msg>, --push, --remote <name>, -f, --force. New env vars: CLAUDE_BRIDGE_REATTACH_SEQ, CLAUDE_BRIDGE_REATTACH_SESSION, DISABLE_UPDATES. The claude-desktop-3p model entry isn't separately documented — likely a desktop-app integration model, not a general inference target.
Why it matters
2.1.117 was an infrastructure polish release — concurrent MCP connects, reactive OAuth refresh, a native bfs/ugrep swap-in for Glob/Grep on macOS and Linux, and a fix for Opus 4.7 computing context against a 200K window instead of its native 1M. 2.1.118 pivots to plugin-ecosystem ergonomics and editor UX. If you write plugins, the claude plugin tag command with --push, --remote, --dry-run, -m, and -f replaces the usual git tag + git push --tags dance with one validated step. If you deploy Claude Code in managed environments, DISABLE_UPDATES=1 now locks the version hard — no more users running claude update to bypass your pin.
Use cases
- Plugin authors:
claude plugin tag -m "v1.2.0" --push --remote originto cut a release.--dry-runpreviews before pushing. - Enterprise / managed deploys: set
DISABLE_UPDATES=1to pin a specific version. Combine with WSLwslInheritsWindowsSettingsso Windows and WSL share the same policy. - Terminal power users:
V+dto cut a line in the prompt,v+cto change a selection — real modal editing. - Theme tweakers: ship a themed plugin, or just drop JSON into
~/.claude/themes/. - Hook authors: fire MCP tools from hooks directly with
type: "mcp_tool".
Notable fixes
2.1.118 also closes a long tail of OAuth and plugin bugs: MCP OAuth refresh without cross-process lock, macOS keychain race overwriting refreshed tokens, credential-save crash on Linux/Windows corrupting ~/.claude/.credentials.json, /login being a no-op when launched with CLAUDE_CODE_OAUTH_TOKEN, /fork writing the full parent conversation per fork (now a pointer), and subagents resumed via SendMessage losing their explicit cwd.
What's next
Sub-daily release cadence is normal now — the community mirror has logged 159+ versions since 2.0.14. Expect 2.1.119 within a day or two, likely with follow-up fixes for anything reported on vim visual mode or the new plugin tag flow. Update with claude update (or npm i -g @anthropic-ai/claude-code), unless you've already set DISABLE_UPDATES=1.
Sources: anthropics/claude-code CHANGELOG, marckrenn CLI-surface diff, release v2.1.118.