Skip to content
AI Primer
release

Claude Code 2.1.118 adds Vim visual mode, MCP hooks, and DISABLE_UPDATES

Anthropic shipped Claude Code 2.1.118 with Vim v and V selection, hooks that can invoke MCP tools, merged usage commands, and an environment variable that blocks updates. The CLI gains tighter terminal editing and better fleet control for teams that pin versions or manage plugin and MCP behavior.

3 min read
Claude Code 2.1.118 adds Vim visual mode, MCP hooks, and DISABLE_UPDATES
Claude Code 2.1.118 adds Vim visual mode, MCP hooks, and DISABLE_UPDATES

TL;DR

You can read the official changelog, skim the release diff summary, and drill into the CLI surface changes. The weirdly useful bit is that $defaults now merges custom auto-mode rules with built-ins instead of replacing them, per ClaudeCodeLog's release post. Another small but real quality-of-life ship is that plugin themes can now live in a themes/ directory, according to ClaudeCodeLog's changelog thread.

Vim visual mode

Claude Code now supports Vim visual mode with v and visual-line mode with V, plus selection operators and visual feedback.

That is a narrow feature, but it hits a daily paper cut. Claude Code already lived in terminal-heavy workflows, and this closes one of the more obvious editing gaps versus tools that lean harder into modal keyboard control.

MCP hooks and auto mode

The most consequential config change is hidden below the headline features. According to ClaudeCodeLog's changelog thread, hooks can now invoke MCP tools directly with type: "mcp_tool", and auto mode now accepts $defaults inside allow, soft_deny, and environment so teams can extend the built-in rules instead of replacing them.

This lands next to a large MCP auth cleanup in the same release. The changelog lists fixes for transient 401 loops, missing expires_in fields, step-up consent handling, refresh locking, revoked tokens, and credential corruption on Linux and Windows, all in the official changelog.

DISABLE_UPDATES and /usage

Anthropic also added a harder version-pinning switch. ClaudeCodeLog's changelog thread says DISABLE_UPDATES blocks all update paths, including manual claude update, and is stricter than DISABLE_AUTOUPDATER.

The same release merges /cost and /stats into /usage, while keeping the old commands as shortcuts, according to LLMpsycho's summary and the official changelog. Custom themes also move into first-class CLI territory through /theme, with JSON files stored under ~/.claude/themes/ and plugin-shipped themes supported in a themes/ directory, per ClaudeCodeLog's changelog thread.

CLI surface

The release also quietly expands the command surface. ClaudeCodeLog's additional updates lists a new tag command, new flags including --dry-run, --message, --push, and --remote, plus new env vars for bridge reattachment and updates.

That same diff says 2.1.118 landed about 1 day and 3 hours after 2.1.117, grew the bundle by 263.6 kB, or 0.7%, and left prompt files and prompt-token counts unchanged in the tracked metadata ClaudeCodeLog's additional updates.