Claude Code · Source-level changelog

Version 2.1.63

This is a substantial release with several major additions: a new /batch command for parallelized large-scale codebase changes, fully functional HTTP hooks (previously disabled), MCP elicitation hook support, and the renaming of the Task tool to Agent. It also ships a new /simplify code review command, git sparse-checkout support for marketplace plugins, enhanced shell security checks for Zsh, and makes claude.ai MCP servers enabled by default.

Package @anthropic-ai/claude-code Diff v2.1.62 → v2.1.63
24
Features & Changes
3
Bug Fixes
0
In Development
0
Env Vars / Flags

Changes

20 items

/batch Command #

What

New slash command that researches and plans a large-scale change, then executes it in parallel across 5–30 isolated git worktree agents that each open a PR.

Usage
/batch migrate from react to vue
/batch replace all uses of lodash with native equivalents
/batch add type annotations to all JavaScript files
Details
  • Requires a git repository (spawns agents in isolated worktrees)
  • Each agent independently implements its portion and opens a PR
  • User-invocable only (disableModelInvocation: true) — the model cannot invoke this on its own
  • Operates in two phases: first plans in plan mode, then spawns parallel workers after approval
Evidence

Slash command registration (search for name: "batch", "Research and plan a large-scale change")

/simplify Command #

What

New slash command that reviews changed code for reuse, quality, and efficiency, then fixes any issues found.

Usage
/simplify
Details
  • Runs a 3-agent parallel review process: Code Reuse Review, Quality Review, and Efficiency Review
  • Examines all changed files (via git diff)
  • User-invocable only
Evidence

Slash command registration (search for name: "simplify", "Review changed code for reuse, quality, and efficiency")

HTTP Hooks (Now Functional) #

What

HTTP hooks, previously stubbed with "HTTP hooks are not yet supported," are now fully implemented and operational.

Usage
{
  "hooks": {
    "PostToolUse": [{
      "matcher": "Write",
      "hooks": [{
        "type": "http",
        "url": "https://hooks.example.com/on-write",
        "headers": { "Authorization": "Bearer $MY_TOKEN" },
        "allowedEnvVars": ["MY_TOKEN"]
      }]
    }]
  }
}
Details
  • Sends POST requests with hook input as JSON body
  • Supports environment variable interpolation in headers via $VAR_NAME or ${VAR_NAME} syntax
  • SSRF protection: private/link-local addresses are blocked; loopback (127.0.0.1, ::1) is allowed for local development
  • New managed setting allowedHttpHookUrls for organization-level URL allowlisting with wildcard support (e.g., "https://hooks.example.com/*")
  • New managed setting httpHookAllowedEnvVars restricts which environment variables hooks can interpolate, intersecting with per-hook allowedEnvVars
  • Responses must be valid JSON
Evidence

HTTP hook execution code (search for "Hooks: HTTP hook POST to", "ERR_HTTP_HOOK_BLOCKED_ADDRESS", "allowedHttpHookUrls")

MCP Elicitation Hooks #

What

Two new hook events that let hooks intercept MCP server elicitation requests (when an MCP server asks the user for input).

Details
  • Elicitation hook fires when an MCP server requests user input. Hook can accept, decline, cancel, or provide content to auto-respond.
  • ElicitationResult hook fires after the user responds to an elicitation. Hook can override the response action or content.
  • Supports both form-based and URL-based elicitation modes
  • If a hook declines, the elicitation is blocked with "Elicitation denied by hook"
Evidence

Hook event definitions (search for "Elicitation" and "ElicitationResult" near hook_event_name)

Task Tool Renamed to Agent #

What

The Task tool has been renamed to Agent to better reflect its purpose. Task is kept as a backward-compatible alias.

Details
  • Tool name changed from "Task" to "Agent"
  • Description changed from "Launch a new task" to "Launch a new agent"
  • "Task" remains as an alias — existing CLAUDE.md files and permissions referencing "Task" will continue to work
  • Hook event descriptions updated from "Task tool call" to "Agent tool call"
Evidence

Tool definition (search for var tq = "Agent", aliases: containing "Task")

Git Sparse-Checkout for Marketplace Plugins #

What

New --sparse CLI option and sparsePaths config field for marketplace plugin installation, enabling cone-mode sparse-checkout for monorepo plugin sources.

Usage
claude plugin marketplace add my-marketplace --sparse .claude-plugin plugins
Details
  • Uses git sparse-checkout in cone mode to clone only specified directories
  • Useful for monorepos where the marketplace lives in a subdirectory
  • Combines --filter=blob:none for blobless clones with sparse-checkout for minimal disk usage
  • If sparsePaths is removed from config but the repo is already sparse, triggers a re-clone for full checkout
Evidence

CLI option definition (search for "--sparse <paths...>", "sparse-checkout", "sparsePaths")

Copy Full Response Setting #

What

New copyFullResponse boolean config option that makes /copy always copy the full response, skipping the block-picker dialog.

Usage
  • Enable via /config → "Always copy full response (skip /copy picker)"
  • Or toggle from the /copy picker itself: "Skip this picker in the future (revert via /config)"
Details
  • Default: false (existing block-picker behavior preserved)
  • When enabled, /copy immediately copies the entire last response
  • Reversible via /config at any time
Evidence

Config definition (search for "copyFullResponse", "Always copy full response")

--permission-mode CLI Flag #

What

New top-level CLI flag for controlling permission handling in sessions.

Usage
claude --permission-mode acceptEdits
claude remote-control --permission-mode bypassPermissions
Details
  • Applies both as a general CLI option and specifically in claude remote-control
  • Available modes correspond to existing permission modes (e.g., acceptEdits, bypassPermissions)
  • Used when spawning sub-sessions and for remote control configuration
Evidence

CLI argument definition (search for "--permission-mode")

Marketplace Seed Directory Support #

What

New CLAUDE_CODE_PLUGIN_SEED_DIR environment variable for pre-populating marketplace plugins in managed/enterprise environments.

Details
  • Reads known_marketplaces.json from the seed directory
  • Syncs seed marketplaces into the user's configuration with autoUpdate: false
  • Supports seed-managed plugin caches and external plugin caching
  • Seed-managed marketplaces are marked read-only and cannot be overwritten by user operations
Evidence

Seed directory function (search for "CLAUDE_CODE_PLUGIN_SEED_DIR", "marketplace(s) from seed dir")

claude.ai MCP Servers Enabled by Default #

The claude.ai MCP server integration has changed from opt-in to enabled by default (still GrowthBook-gated for rollout). Users who previously had to set ENABLE_CLAUDEAI_MCP_SERVERS=true no longer need to. To opt out, set ENABLE_CLAUDEAI_MCP_SERVERS=false.

Evidence

Changed message from "require ENABLE_CLAUDEAI_MCP_SERVERS=true" (v2.1.62) to "enabled by default (GrowthBook-gated). To opt out, set ENABLE_CLAUDEAI_MCP_SERVERS=false" (v2.1.63)

/model Command Shows Current Model #

The /model command description is now dynamic, displaying the currently active model: "Set the AI model for Claude Code (currently Claude Sonnet 4.6)" instead of the previous static "Set the AI model for Claude Code".

Evidence

Changed from static description: to get description() getter (search for "Set the AI model for Claude Code (currently")

Improved Escape Key UX #

The Escape key behavior has been refined with clearer feedback:

  • Status line now shows "ctrl+c to interrupt · Esc again to clear" during response generation
  • A "keep holding…" animation appears when holding Escape
  • Replaces the previous simpler "Esc to clear again" text
Evidence

New UI strings (search for "ctrl+c to interrupt · Esc again to clear", "keep holding")

Stricter SSH Host Key Checking #

Git clone operations for marketplace plugins now use StrictHostKeyChecking=yes instead of the previous StrictHostKeyChecking=accept-new. This means new host keys are no longer automatically trusted — the user must explicitly add them first. Improved error messages now provide specific remediation steps:

  • For changed host keys: shows ssh-keygen -R <host> command
  • For unknown hosts: shows ssh -T git@<host> command
  • Detects REMOTE HOST IDENTIFICATION HAS CHANGED and Host key verification failed scenarios
Evidence

SSH config change (search for "StrictHostKeyChecking=yes", "SSH host key has changed")

Enhanced Shell Security Checks #

New Zsh-specific and general shell security checks for the Bash tool:

  • Zsh process substitution =() — detected and flagged
  • Zsh glob qualifiers with command execution (+ — detected and flagged
  • Zsh try/always constructs } always { — detected and flagged
  • Dangerous Zsh builtins (zmodload, zpty, ztcp, zsocket, zf_rm, etc.) — blocked
  • fc -e command detection — prevents arbitrary command execution via editor
  • Backslash-escaped operators — detects \;, \|, \&, \<, \> outside quotes that can hide command structure
  • Comment quote desync — detects quote characters inside # comments that can confuse quote tracking
  • Tilde expansion variants (~user, ~+, ~-) — require manual approval
  • Compound cd + git commands — flagged to prevent bare repository attacks
Evidence

Security check functions (search for "Zsh process substitution", "backslash-escaped operators", "comment quote desync", "fc -e")

Config File Write Protection #

A new safety mechanism prevents concurrent config writes from wiping authentication data in ~/.claude.json. Before writing, the system re-reads the file and refuses to proceed if the disk version is missing oauthAccount or hasCompletedOnboarding data that exists in the in-memory cache. This addresses a race condition reported in GitHub issue #3117.

Evidence

Config lock function (search for "saveConfigWithLock", "re-read config is missing auth that cache has")

Transcript Sharing Prompts #

New session transcript sharing feature that occasionally prompts users: "Can Anthropic look at your session transcript to help us improve Claude Code?" with three options: Yes, No, and "Don't ask again." A frustration-triggered variant also exists. Selecting "Don't ask again" permanently suppresses the prompt via a transcriptShareDismissed config flag.

Evidence

Transcript sharing dialog (search for "Can Anthropic look at your session transcript", "Don't ask again")

WSL Voice Mode Guard #

Voice mode now detects WSL (Windows Subsystem for Linux) and provides a clear error message explaining that audio devices are unavailable, suggesting users run Claude Code in native Windows instead.

Evidence

WSL detection guard (search for "Voice mode is not supported in WSL")

Fast Mode Cooldown State #

Fast mode now has a three-state model: "on", "off", and "cooldown" (after a rate limit). Network errors show a temporary unavailability message rather than fully disabling fast mode. The fast_mode_state field is now included in API response schemas.

Evidence

Fast mode state function (search for "Fast mode is temporarily unavailable due to a network error")

SubagentStart / SubagentStop Hook Event Descriptions #

The SubagentStart and SubagentStop hook event descriptions have been updated from "Task tool call" to "Agent tool call" to match the Task→Agent rename. The events themselves are unchanged.

Evidence

Hook event descriptions (search for "subagent (Agent tool call)")

Opus 4.6 Launch Promo Removed #

The Opus 4.6 launch promotional banner, extra usage promo text ("$50 free extra usage", "/extra-usage to enable"), and associated feed display logic have been cleaned up. The tengu_copper_lantern and tengu_silver_lantern feature flag checks and related UI components are removed.

Evidence

Removed functions (search for removed strings "Opus 4.6 is here", "$50 free extra usage")

Bug Fixes

3 items
  • Fixed race condition where concurrent config writes could wipe authentication data from ~/.claude.json (search for "See GH #3117")
  • Improved OAuth callback handling with better error message when the redirect URL is missing the authorization code (search for "Invalid callback URL: missing authorization code")
  • Fixed "Prompt cancelled by user" error propagation when prompts are cancelled during hook flows (search for "Prompt cancelled by user")
  • Improved orphaned version cleanup with better error handling for stat failures (search for "Failed to stat orphaned marker")
  • MCP server .mcp.json writes now use atomic datasync + rename pattern with proper file permission preservation, replacing the previous simpler write approach

Tool Result Summarization [Gradual Rollout] #

Fix
What

A feature that instructs the model to preserve important information from tool results in its response text, since original tool results may be cleared later (for context window management).

Status

Feature-flagged via tengu_summarize_tool_results (default false)

Details
  • When enabled, appends a system instruction: "When working with tool results, write down any important information you might need later in your response, as the original tool result may be cleared later."
  • Prepares for a future where tool results are more aggressively pruned from context
Evidence

Gated by tengu_summarize_tool_results flag (search for "tengu_summarize_tool_results")

Asciicast Terminal Recording [Internal] #

Fix
What

Infrastructure for recording terminal sessions in asciicast v2 format (.cast files).

Status

Internal infrastructure — no user-facing command to enable or control recording.

Details
  • Monkey-patches process.stdout.write to capture all terminal output with timestamps
  • Recordings stored under ~/.claude/projects/<project>/ as .cast files
  • Supports flushing and renaming recordings for session management
  • File permissions set to owner read/write only (mode 384)
Evidence

Recording infrastructure (search for "[asciicast] Recording to", "[asciicast] Renamed recording")

Custom Subagent Definitions [In Development] #

Fix
What

Schema support for defining custom subagent types that can be invoked via the Agent tool.

Status

Schema definitions exist but no user-facing documentation or invocation path found.

Details
  • New schema field: "Definition for a custom subagent that can be invoked via the Agent tool"
  • Includes fields for agent type identifier, description, model alias, and tool availability
  • Suggests future ability to define custom agent types in configuration
Evidence

Schema descriptions (search for "Definition for a custom subagent", "Agent type identifier")

Notes

4 items
  • Task → Agent migration: If you have CLAUDE.md files, hooks, or permissions referencing the Task tool by name, they will continue to work — Task is retained as an alias. However, new documentation and tool output will use Agent.
  • HTTP hook security: Organizations deploying HTTP hooks should review the new allowedHttpHookUrls and httpHookAllowedEnvVars managed settings to restrict which URLs hooks can call and which environment variables can be interpolated.
  • SSH host key change: The switch to StrictHostKeyChecking=yes means marketplace plugin installations via SSH may fail if the host key isn't already in known_hosts. Run ssh -T git@<host> once manually to add it, or use HTTPS URLs for public repos.
  • /todos removed: The /todos slash command has been removed. The TodoWrite tool for in-session task tracking remains available.