Release notes

Claude Code 2.1.0

· 28 new· 54 fixed

Added28

  • Added automatic skill hot-reload - skills created or modified in `~/.claude/skills` or `.claude/skills` are now immediately available without restarting the session
  • Added support for running skills and slash commands in a forked sub-agent context using `context: fork` in skill frontmatter
  • Added support for `agent` field in skills to specify agent type for execution
  • Added `language` setting to configure Claude's response language (e.g., language: "japanese")
  • Added `respectGitignore` support in `settings.json` for per-project control over @-mention file picker behavior
  • Added `IS_DEMO` environment variable to hide email and organization from the UI, useful for streaming or recording sessions
  • Added wildcard pattern matching for Bash tool permissions using `*` at any position in rules (e.g., `Bash(npm *)`, `Bash(* install)`, `Bash(git * main)`)
  • Added unified Ctrl+B backgrounding for both bash commands and agents - pressing Ctrl+B now backgrounds all running foreground tasks simultaneously
  • Added support for MCP `list_changed` notifications, allowing MCP servers to dynamically update their available tools, prompts, and resources without requiring reconnection
  • Added `/teleport` and `/remote-env` slash commands for claude.ai subscribers, allowing them to resume and configure remote sessions
  • Added support for disabling specific agents using `Task(AgentName)` syntax in settings.json permissions or the `--disallowedTools` CLI flag
  • Added hooks support to agent frontmatter, allowing agents to define PreToolUse, PostToolUse, and Stop hooks scoped to the agent's lifecycle
  • Added hooks support for skill and slash command frontmatter
  • Added new Vim motions: `;` and `,` to repeat f/F/t/T motions, `y` operator for yank with `yy`/`Y`, `p`/`P` for paste, text objects (`iw`, `aw`, `iW`, `aW`, `i"`, `a"`, `i'`, `a'`, `i(`, `a(`, `i[`, `a[`, `i{`, `a{`), `>>` and `<<` for indent/dedent, and `J` to join lines
  • Added `/plan` command shortcut to enable plan mode directly from the prompt
  • Added slash command autocomplete support when `/` appears anywhere in input, not just at the beginning
  • Added `--tools` flag support in interactive mode to restrict which built-in tools Claude can use during interactive sessions
  • Added `CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS` environment variable to override the default file read token limit
  • Added support for `once: true` config for hooks
  • Added support for YAML-style lists in frontmatter `allowed-tools` field for cleaner skill declarations
  • Added support for prompt and agent hook types from plugins (previously only command hooks were supported)
  • Added Cmd+V support for image paste in iTerm2 (maps to Ctrl+V)
  • Added left/right arrow key navigation for cycling through tabs in dialogs
  • Added real-time thinking block display in Ctrl+O transcript mode
  • Added filepath to full output in background bash task details dialog
  • Added Skills as a separate category in the context visualization
  • vscodeAdded currently selected model name to the context menu
  • vscodeAdded descriptive labels on auto-accept permission button (e.g., "Yes, allow npm for this project" instead of "Yes, and don't ask again")

Improved19

  • Improved CLI help output to display options and subcommands in alphabetical order for easier navigation
  • Improved terminal rendering performance when using native installer or Bun, especially for text with emoji, ANSI codes, and Unicode characters
  • Improved performance when reading Jupyter notebooks with many cells
  • Improved reliability for piped input like `cat refactor.md | claude`
  • Improved reliability for AskQuestion tool
  • Improved sed in-place edit commands to render as file edits with diff preview
  • Improved Claude to automatically continue when response is cut off due to output token limit, instead of showing an error message
  • Improved compaction reliability
  • Improved subagents (Task tool) to continue working after permission denial, allowing them to try alternative approaches
  • Improved skills to show progress while executing, displaying tool uses as they happen
  • Improved skills from `/skills/` directories to be visible in the slash command menu by default (opt-out with `user-invocable: false` in frontmatter)
  • Improved skill suggestions to prioritize recently and frequently used skills
  • Improved spinner feedback when waiting for the first response token
  • Improved token count display in spinner to include tokens from background agents
  • Improved incremental output for async agents to give the main thread more control and visibility
  • Improved permission prompt UX with Tab hint moved to footer, cleaner Yes/No input labels with contextual placeholders
  • Improved the Claude in Chrome notification with shortened help text and persistent display until dismissed
  • Improved macOS screenshot paste reliability with TIFF format support
  • Improved `/stats` output

Changed6

  • Changed Shift+Enter to work out of the box in iTerm2, WezTerm, Ghostty, and Kitty without modifying terminal configs
  • Reduced permission prompts for complex bash commands
  • Multiple optimizations to improve startup performance
  • Updated Atlassian MCP integration to use a more reliable default configuration (streamable HTTP)
  • Changed "Interrupted" message color from red to grey for a less alarming appearance
  • sdkChanged minimum zod peer dependency to ^4.0.0

Fixed54

  • Fixed security issue where sensitive data (OAuth tokens, API keys, passwords) could be exposed in debug logs
  • Fixed files and skills not being properly discovered when resuming sessions with `-c` or `--resume`
  • Fixed pasted content being lost when replaying prompts from history using up arrow or Ctrl+R search
  • Fixed Esc key with queued prompts to only move them to input without canceling the running task
  • Fixed command search to prioritize exact and prefix matches on command names over fuzzy matches in descriptions
  • Fixed PreToolUse hooks to allow `updatedInput` when returning `ask` permission decision, enabling hooks to act as middleware while still requesting user consent
  • Fixed plugin path resolution for file-based marketplace sources
  • Fixed LSP tool being incorrectly enabled when no LSP servers were configured
  • Fixed background tasks failing with "git repository not found" error for repositories with dots in their names
  • Fixed Claude in Chrome support for WSL environments
  • Fixed Windows native installer silently failing when executable creation fails
  • Fixed OAuth token refresh not triggering when server reports token expired but local expiration check disagrees
  • Fixed session persistence getting stuck after transient server errors by recovering from 409 conflicts when the entry was actually stored
  • Fixed session resume failures caused by orphaned tool results during concurrent tool execution
  • Fixed a race condition where stale OAuth tokens could be read from the keychain cache during concurrent token refresh attempts
  • Fixed AWS Bedrock subagents not inheriting EU/APAC cross-region inference model configuration, causing 403 errors when IAM permissions are scoped to specific regions
  • Fixed API context overflow when background tasks produce large output by truncating to 30K chars with file path reference
  • Fixed a hang when reading FIFO files by skipping symlink resolution for special file types
  • Fixed terminal keyboard mode not being reset on exit in Ghostty, iTerm2, Kitty, and WezTerm
  • Fixed Alt+B and Alt+F (word navigation) not working in iTerm2, Ghostty, Kitty, and WezTerm
  • Fixed `${CLAUDE_PLUGIN_ROOT}` not being substituted in plugin `allowed-tools` frontmatter, which caused tools to incorrectly require approval
  • Fixed files created by the Write tool using hardcoded 0o600 permissions instead of respecting the system umask
  • Fixed commands with `$()` command substitution failing with parse errors
  • Fixed multi-line bash commands with backslash continuations being incorrectly split and flagged for permissions
  • Fixed bash command prefix extraction to correctly identify subcommands after global options (e.g., `git -C /path log` now correctly matches `Bash(git log:*)` rules)
  • Fixed slash commands passed as CLI arguments (e.g., `claude /context`) not being executed properly
  • Fixed pressing Enter after Tab-completing a slash command selecting a different command instead of submitting the completed one
  • Fixed slash command argument hint flickering and inconsistent display when typing commands with arguments
  • Fixed Claude sometimes redundantly invoking the Skill tool when running slash commands directly
  • Fixed skill token estimates in `/context` to accurately reflect frontmatter-only loading
  • Fixed subagents sometimes not inheriting the parent's model by default
  • Fixed model picker showing incorrect selection for Bedrock/Vertex users using `--model haiku`
  • Fixed duplicate Bash commands appearing in permission request option labels
  • Fixed noisy output when background tasks complete - now shows clean completion message instead of raw output
  • Fixed background task completion notifications to appear proactively with bullet point
  • Fixed forked slash commands showing "AbortError" instead of "Interrupted" message when cancelled
  • Fixed cursor disappearing after dismissing permission dialogs
  • Fixed `/hooks` menu selecting wrong hook type when scrolling to a different option
  • Fixed images in queued prompts showing as "[object Object]" when pressing Esc to cancel
  • Fixed images being silently dropped when queueing messages while backgrounding a task
  • Fixed large pasted images failing with "Image was too large" error
  • Fixed extra blank lines in multiline prompts containing CJK characters (Japanese, Chinese, Korean)
  • Fixed ultrathink keyword highlighting being applied to wrong characters when user prompt text wraps to multiple lines
  • Fixed collapsed "Reading X files…" indicator incorrectly switching to past tense when thinking blocks appear mid-stream
  • Fixed Bash read commands (like `ls` and `cat`) not being counted in collapsed read/search groups, causing groups to incorrectly show "Read 0 files"
  • Fixed spinner token counter to properly accumulate tokens from subagents during execution
  • Fixed memory leak in git diff parsing where sliced strings retained large parent strings
  • Fixed race condition where LSP tool could return "no server available" during startup
  • Fixed feedback submission hanging indefinitely when network requests timeout
  • Fixed search mode in plugin discovery and log selector views exiting when pressing up arrow
  • Fixed hook success message showing trailing colon when hook has no output
  • vscodeFixed paragraph breaks not rendering in markdown content
  • vscodeFixed scrolling in the extension inadvertently scrolling the parent iframe
  • [Windows] Fixed issue with improper rendering

Removed2

  • Removed permission prompt when entering plan mode - users can now enter plan mode without approval
  • Removed underline styling from image reference links

Never miss a Claude Code release.

Get a push notification the moment the next version ships.

Get Claude Drops

New to the changelog? Read our guide to reading the Claude Code changelog or browse all releases.