Back to BlogAgentic 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.

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:
- Create
~/.claude/skills/my-skill/directory - Write and save
SKILL.mdfile - Immediately usable in Claude Code (no restart required)
- 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-analysisdescription: Analyze code quality in isolated contextcontext: forkagent: Explore---
Supported agent types:
Explore: Codebase exploration and analysisPlan: Planning and architecture designgeneral-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:
| Key | Function | Description |
|---|---|---|
; | f/t repeat | Move to next matching character |
, | f/t reverse repeat | Move to previous matching character |
yy / Y | Line yank | Copy current line or to end of line |
p | Paste | Paste after cursor |
P | Paste before | Paste before cursor |
>> | Indent | Indent current line |
<< | Outdent | Outdent current line |
J | Join lines | Join multiple lines into one |
Text objects:
| Object | Description |
|---|---|
iw / aw | inner word / a word |
iW / aW | inner 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 /config5. Unified Backgrounding
Pressing
Ctrl+B simultaneously moves all running foreground tasks (both Bash
commands and agents) to the background.How it works:
- Request background execution to Claude Code or press
Ctrl+B - Background tasks run in separate shells with unique IDs
- You can monitor output, check status, and terminate tasks
- Tmux users need to press
Ctrl+Btwice (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 notificationnotifications/prompts/list_changed: Prompt list change notificationnotifications/resources/list_changed: Resource list change notification
How it works:
- MCP server sends tool change notification
- Claude Code automatically refreshes tool list from that server
- Changes are immediately reflected in
/mcpmenu
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:
| Hook | Description |
|---|---|
PreToolUse | Runs before tool call (can block) |
PermissionRequest | Runs when permission dialog is shown (allow/deny) |
PostToolUse | Runs after tool call completes |
UserPromptSubmit | When user submits prompt (before Claude processes) |
Notification | When Claude Code sends notification |
Stop | When Claude Code completes response |
SubagentStop | When sub-agent task completes |
PreCompact | Before Claude Code executes compact operation |
SessionStart | When new session starts or existing session resumes |
SessionEnd | When Claude Code session ends |
New features:
once: truesetting to specify Hooks that run only once per session- YAML-style list support in
allowed-toolsfield 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-operationshooks:PreToolUse:- matcher: "Bash"hooks:- type: commandcommand: "./scripts/security-check.sh"---
once: true usage example:
YAML
hooks:- type: commandcommand: "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 npmBash(* install) # All commands ending with installBash(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:
Denyrules: Completely block tool usageAskrules: Take precedence over Allow rulesAllowrules: 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:
- Start work on the web
- Move task to background
- 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_REMOTEenvironment 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
-cor--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 pluginallowed-toolsfrontmatter
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: falseto 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
| Setting | Description |
|---|---|
CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS | Override default file read token limit |
CLAUDE_CODE_SHELL | Override automatic shell detection |
language | Configure response language |
respectGitignore | Project-specific gitignore control for file picker |
fileSuggestion | Custom @ file search command |
IS_DEMO | Hide 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.mdinstead)
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 scriptcurl -fsSL https://claude.ai/install.sh | sh