Back to Blog
Agentic Coding

Claude Code 2.1.0 Major Update - From Skill Hot-Reload to Enhanced Vim Motions

12.415min
Claude CodeRelease NotesAnthropicAI CodingDeveloper ToolsAgentic AI

Claude Code 2.1.0 has been released with over 30 new features and 50+ bug fixes, including Skill Hot-Reload, Forked Sub-Agent Context, enhanced Vim motions, and unified backgrounding.

Claude Code 2.1.0 Major Update - From Skill Hot-Reload to Enhanced Vim Motions
Anthropic officially released Claude Code 2.1.0 on January 7, 2026. This update is a major release containing over 30 new features and 50+ bug fixes. Key capabilities that significantly boost developer productivity have been added, including improved Skill development workflows, enhanced agent orchestration, and better Vim user experience.

Key New Features

1. Skill Hot-Reload

Skills created or modified in ~/.claude/skills or .claude/skills are now reflected immediately without session restart. This greatly simplifies the Skill development workflow.
How to use:
  1. Create ~/.claude/skills/my-skill/ directory
  2. Write and save SKILL.md file
  3. Immediately usable in Claude Code (no restart required)
  4. Changes are reflected in real-time
Limitations:
  • Skill loading fails if YAML frontmatter has errors
  • Filename must be exactly SKILL.md (case-sensitive)
  • First line must start with --- (no blank lines before it)

2. Forked Sub-Agent Context

Execution in a separated sub-agent context is now possible through context: fork and agent fields in Skill frontmatter. This supports complex agent orchestration scenarios.
Frontmatter example:
YAML
---
name: code-analysis
description: Analyze code quality in isolated context
context: fork
agent: Explore
---
Supported agent types:
  • Explore: Codebase exploration and analysis
  • Plan: Planning and architecture design
  • general-purpose: General-purpose tasks (default)
  • Custom: Agents defined in .claude/agents/
Use cases:
  • Execute complex multi-step tasks without mixing into main conversation
  • Perform specialized analysis in a separate context
  • Maintain independent conversation history per sub-agent

3. Language Configuration

A language setting has been added to settings.json to configure Claude's response language.
Configuration example:
JSON
{
"language": "Korean"
}
CJK language support improvements:
  • Option+Arrow word navigation treats CJK text as word boundaries rather than entire sequences
  • Removed extra blank lines in multiline prompts containing CJK characters
  • IME (Input Method Editor) support improved: composition window displays accurately at cursor position
  • Word deletion (opt+delete) and word navigation work correctly with non-Latin text including Cyrillic, Greek, Arabic, Hebrew, Thai, and Chinese

4. Enhanced Vim Motions

Major improvements have been made for Vim users. New motions, operators, and text objects significantly boost productivity.
New motions and operators:
KeyFunctionDescription
;f/t repeatMove to next matching character
,f/t reverse repeatMove to previous matching character
yy / YLine yankCopy current line or to end of line
pPastePaste after cursor
PPaste beforePaste before cursor
>>IndentIndent current line
<<OutdentOutdent current line
JJoin linesJoin multiple lines into one
Text objects:
ObjectDescription
iw / awinner word / a word
iW / aWinner WORD / a WORD
i" / a"inner double quotes / around quotes
i' / a'inner single quotes / around quotes
i( / a(inner parentheses / around parens
i[ / a[inner square brackets / around brackets
i{ / a{inner curly braces / around braces
Vim mode activation: /vim command or permanent setting via /config

5. Unified Backgrounding

Pressing Ctrl+B simultaneously moves all running foreground tasks (both Bash commands and agents) to the background.
How it works:
  1. Request background execution to Claude Code or press Ctrl+B
  2. Background tasks run in separate shells with unique IDs
  3. You can monitor output, check status, and terminate tasks
  4. Tmux users need to press Ctrl+B twice (due to tmux prefix key)
Use cases:
  • Continue development while monitoring servers, builds, and other processes
  • Send long-running tests to background and work on other features
  • Run agents in background while performing other tasks
2.1.0 improvements:
  • Clean completion messages shown when background tasks finish (noisy output removed)
  • Automatic truncation to 30K characters when producing large output to prevent API context overflow

6. MCP list_changed Notifications

MCP (Model Context Protocol) servers can now dynamically update tools, prompts, and resources without reconnection through list_changed notifications.
Supported notification types:
  • notifications/tools/list_changed: Tool list change notification
  • notifications/prompts/list_changed: Prompt list change notification
  • notifications/resources/list_changed: Resource list change notification
How it works:
  1. MCP server sends tool change notification
  2. Claude Code automatically refreshes tool list from that server
  3. Changes are immediately reflected in /mcp menu
Previous version issues:
  • Claude Code didn't respond even when notifications were sent
  • Dynamic prompt updates didn't appear in UI, requiring restart
  • Custom MCP commands didn't appear when added to .claude/commands/
This is a very useful improvement for MCP server developers.

7. /plan Command Shortcut

Typing /plan in the prompt now enters plan mode directly. The complex entry process has been simplified. Additionally, permission prompts have been removed when entering plan mode for faster access.

8. Slash Command Improvements

Autocomplete is now activated when typing / anywhere, not just at the start of input. The --tools flag allows limiting tools available to Claude in interactive mode.
Tool restriction example:
Bash
claude --tools Read,Grep,Bash

9. Significantly Enhanced Hooks

The Hook system has been greatly enhanced to support more use cases. Hooks can now be defined in agents, Skills, and slash commands.
10 Hook events:
HookDescription
PreToolUseRuns before tool call (can block)
PermissionRequestRuns when permission dialog is shown (allow/deny)
PostToolUseRuns after tool call completes
UserPromptSubmitWhen user submits prompt (before Claude processes)
NotificationWhen Claude Code sends notification
StopWhen Claude Code completes response
SubagentStopWhen sub-agent task completes
PreCompactBefore Claude Code executes compact operation
SessionStartWhen new session starts or existing session resumes
SessionEndWhen Claude Code session ends
New features:
  • once: true setting to specify Hooks that run only once per session
  • YAML-style list support in allowed-tools field in frontmatter
  • Support for prompt and agent hook types in plugins (previously only command hooks were supported)
  • PreToolUse, PostToolUse, Stop Hook support in agent frontmatter
  • Hook support in Skill and slash command frontmatter
Hook definition example:
YAML
---
name: secure-operations
hooks:
PreToolUse:
- matcher: "Bash"
hooks:
- type: command
command: "./scripts/security-check.sh"
---
once: true usage example:
YAML
hooks:
- type: command
command: "echo 'Session initialized'"
once: true
Use cases:
  • Notifications: Custom alerts when Claude Code is waiting for input
  • Auto-formatting: Run prettier, gofmt, etc. after file edits
  • Logging: Track executed commands for compliance/debugging
  • Feedback: Provide automatic feedback on code rules
  • Custom permissions: Block modifications to production files or sensitive directories
Warning:
Hooks run automatically during the agent loop with your environment's credentials. Malicious Hook code can exfiltrate data, so always review implementations before registering Hooks.

10. Agent Control

You can now disable specific agents using Task(AgentName) syntax in permission settings in settings.json or with the --disallowedTools CLI flag.
Configuration example:
JSON
{
"permissions": {
"deny": ["Task(Plan)", "Task(Explore)"]
}
}

11. Bash Wildcard Patterns

Wildcard pattern matching is now supported in Bash tool permissions. The * symbol can be used at any position.
Pattern examples:
Plain Text
Bash(npm *) # All commands starting with npm
Bash(* install) # All commands ending with install
Bash(git * main) # Any command between git and main
:* syntax:
Bash(npm:*) allows all npm subcommands: npm install, npm run dev, npm clean, etc.
Configuration example:
JSON
{
"permissions": {
"allow": [
"Bash(npm:*)",
"Bash(git status)",
"Bash(git diff)",
"Bash(git add *)",
"Bash(git commit *)"
],
"ask": ["Bash(npm install *)"]
}
}
Permission priority:
  1. Deny rules: Completely block tool usage
  2. Ask rules: Take precedence over Allow rules
  3. Allow rules: Automatically permit
Best practices:
  • Start restrictive and expand permissions as needed
  • Configure project-specific tools in .claude/settings.local.json
  • Configure common tools (npm, git, python, etc.) in ~/.claude/settings.json

12. Remote Session Support

For claude.ai subscribers, /teleport and /remote-env slash commands have been added. You can resume and configure remote sessions.
/teleport command:
  • Seamless movement between browser version and CLI tool
  • Chat history and context are copied together
  • --teleport <session-id> flag available in CLI
Workflow example:
  1. Start work on the web
  2. Move task to background
  3. Teleport session in CLI to continue work
/remote-env command:
  • Configure remote session environment
  • Hooks can be configured in repository's .claude/settings.json
  • By default, all Hooks run in both local and remote environments
  • Check CLAUDE_CODE_REMOTE environment variable to run only in specific environments
Network access:
  • Remote environments run behind HTTP/HTTPS network proxy for security
  • Network access is limited to allowlisted domains by default
Current limitations:
  • Session teleport is currently one-directional only: Claude Code on the web → local CLI
  • No way to continue local sessions to remote machines (e.g., AWS instances)

Terminal Improvements

Shift+Enter Support

Shift+Enter now works out of the box in iTerm2, WezTerm, Ghostty, and Kitty without modifying terminal settings.

Keyboard Fixes

  • Alt+B and Alt+F (word movement) now work correctly in iTerm2, Ghostty, Kitty, and WezTerm
  • Terminal keyboard mode resets correctly on exit in Ghostty, iTerm2, Kitty, and WezTerm
  • Removed unnecessary blank lines in multiline prompts containing CJK characters (Korean, Japanese, Chinese)

Image Pasting

Images can be pasted with Cmd+V in iTerm2 (mapped to Ctrl+V). macOS TIFF format screenshot pasting stability has been improved.

Security Fixes

A security issue where sensitive data (OAuth tokens, API keys, passwords) could be exposed in debug logs has been fixed. All users are strongly recommended to update as soon as possible.

Performance Improvements

Startup Performance

Numerous startup performance optimizations have been applied. Initial loading time has been reduced.

Terminal Rendering

Terminal rendering performance has been improved when using native installers or Bun. Emoji, ANSI code, and Unicode character processing is now faster.

Jupyter Notebooks

Performance has been improved when reading Jupyter notebooks with many cells.

Stability Improvements

  • Improved pipe input stability (cat refactor.md | claude)
  • Improved AskQuestion tool stability
  • Improved compaction stability
  • sed in-place edit commands now render as file edits with diff preview
  • Automatically continues when response is truncated by output token limit (instead of error message)
  • Sub-agents (Task tool) continue working after permission denial, enabling alternative approach attempts

Major Bug Fixes

Session Management

  • Files and Skills are correctly discovered when resuming sessions with -c or --resume
  • Fixed pasted content loss when replaying prompts from history with up arrow or Ctrl+R search
  • OAuth token refresh triggers even when server reports and local expiration checks don't match
  • Fixed session persistence race conditions and 409 conflicts

File Operations

  • Write tool now respects system umask instead of hardcoded 0o600 permissions
  • Skip symlink resolution when reading FIFO files to prevent hangs

Command Execution

  • $() command substitution executes without parsing errors
  • Multiline bash commands with backslash continuation are processed correctly
  • Subcommands after global options are correctly identified (git -C /path log, etc.)

Image Processing

  • Large pasted images are processed without "Image was too large" error

AWS/Cloud

  • AWS Bedrock sub-agents inherit EU/APAC cross-region inference model configuration, resolving 403 errors
  • Large output from background tasks is truncated to 30K characters with file path reference provided

Other

  • Fixed background tasks failing with 'git repository not found' error in repositories with dots in names
  • Claude Code support for Chrome in WSL environments
  • Fixed ${CLAUDE_PLUGIN_ROOT} substitution in plugin allowed-tools frontmatter

SDK and Extension Changes

SDK

  • Minimum zod peer dependency changed to ^4.0.0 (Breaking change)

VSCode Extension

  • Current selected model name displayed in context menu
  • Added descriptive labels to auto-accept permission buttons (e.g., "Yes, allow npm for this project")
  • Paragraph breaks render correctly in markdown content
  • Fixed parent iframe scrolling when scrolling in extension

Windows

  • Fixed improper rendering issues
  • Fixed native installer silently failing when executable creation fails

UI/UX Improvements

  • Progress display shown during Skill execution (shown whenever tool use occurs)
  • Skills in /skills/ directory are shown by default in slash command menu (user-invocable: false to exclude)
  • Skill suggestions prioritize recent and frequently used Skills
  • Improved spinner feedback when waiting for first response token
  • Background agent tokens included in spinner token count
  • Improved permission prompt UX (Tab hint moved to footer, clean Yes/No labels)
  • Removed permission prompt when entering plan mode
  • "Interrupted" message color changed to be less alarming
  • Skills displayed as separate category in context visualization

New Environment Variables and Settings

SettingDescription
CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENSOverride default file read token limit
CLAUDE_CODE_SHELLOverride automatic shell detection
languageConfigure response language
respectGitignoreProject-specific gitignore control for file picker
fileSuggestionCustom @ file search command
IS_DEMOHide email and organization in UI for streaming/recording

Breaking Changes and Removals

  • Minimum zod peer dependency changed to ^4.0.0 (SDK)
  • Removed permission prompt when entering plan mode
  • Removed # shortcut for quick memory input (use /edit CLAUDE.md instead)

Impact and Expected Effects

This update has the following impact on Claude Code users.
Improved Development Productivity
Skill Hot-Reload and enhanced Vim motions greatly improve the development workflow. Particularly useful for users who frequently modify Skills and Vim users.
Enhanced Agent Orchestration
Forked Sub-Agent Context and agent control features enable implementation of complex automation scenarios. MCP list_changed notifications are an essential improvement for MCP server developers.
Mature Hook System
The Hook system has become more powerful with 10 Hook events and various new features. It supports diverse use cases including automation, logging, and security enhancement.
Improved Terminal Experience
Keyboard behavior has been improved in major terminals. Multiline prompt issue resolution and IME support improvements are particularly welcome for Korean, Japanese, and Chinese users.
Enhanced Security
Security has been strengthened with the fix for sensitive data exposure. All users are recommended to update as soon as possible.

How to Update

To update to Claude Code 2.1.0, run the following command.
Bash
claude update
# Or re-run the installation script
curl -fsSL https://claude.ai/install.sh | sh

References