← Back to daily report

CHANGELOG.md.md

Changed on 2026-01-10 20:25:36 EST

+3 lines added
-0 lines removed
Visual Diff
# Changelog¶

## 2.1.4¶

- Added `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` environment variable to disable all background task functionality including auto-backgrounding and the Ctrl+B shortcut¶
- Fixed "Help improve Claude" setting fetch to refresh OAuth and retry when it fails due to a stale OAuth token¶

## 2.1.3¶

- Merged slash commands and skills, simplifying the mental model with no change in behavior¶
- Added release channel (`stable` or `latest`) toggle to `/config`¶
- Added detection and warnings for unreachable permission rules, with warnings in `/doctor` and after saving rules that include the source of each rule and actionable fix guidance¶
- Fixed plan files persisting across `/clear` commands, now ensuring a fresh plan file is used after clearing a conversation¶
- Fixed false skill duplicate detection on filesystems with large inodes (e.g., ExFAT) by using 64-bit precision for inode values¶
- Fixed mismatch between background task count in status bar and items shown in tasks dialog¶
- Fixed sub-agents using the wrong model during conversation compaction¶
- Fixed web search in sub-agents using incorrect model¶
- Fixed trust dialog acceptance when running from the home directory not enabling trust-requiring features like hooks during the session¶
- Improved terminal rendering stability by preventing uncontrolled writes from corrupting cursor state¶
- Improved slash command suggestion readability by truncating long descriptions to 2 lines¶
- Changed tool hook execution timeout from 60 seconds to 10 minutes¶
- [VSCode] Added clickable destination selector for permission requests, allowing you to choose where settings are saved (this project, all projects, shared with team, or session only)¶

## 2.1.2¶

- Added source path metadata to images dragged onto the terminal, helping Claude understand where images originated¶
- Added clickable hyperlinks for file paths in tool output in terminals that support OSC 8 (like iTerm)¶
- Added support for Windows Package Manager (winget) installations with automatic detection and update instructions¶
- Added Shift+Tab keyboard shortcut in plan mode to quickly select "auto-accept edits" option¶
- Added `FORCE_AUTOUPDATE_PLUGINS` environment variable to allow plugin autoupdate even when the main auto-updater is disabled¶
- Added `agent_type` to SessionStart hook input, populated if `--agent` is specified¶
- Fixed a command injection vulnerability in bash command processing where malformed input could execute arbitrary commands¶
- Fixed a memory leak where tree-sitter parse trees were not being freed, causing WASM memory to grow unbounded over long sessions¶
- Fixed binary files (images, PDFs, etc.) being accidentally included in memory when using `@include` directives in CLAUDE.md files¶
- Fixed updates incorrectly claiming another installation is in progress¶
- Fixed crash when socket files exist in watched directories (defense-in-depth for EOPNOTSUPP errors)¶
- Fixed remote session URL and teleport being broken when using `/tasks` command¶
- Fixed MCP tool names being exposed in analytics events by sanitizing user-specific server configurations¶
- Improved Option-as-Meta hint on macOS to show terminal-specific instructions for native CSIu terminals like iTerm2, Kitty, and WezTerm¶
- Improved error message when pasting images over SSH to suggest using `scp` instead of the unhelpful clipboard shortcut hint¶
- Improved permission explainer to not flag routine dev workflows (git fetch/rebase, npm install, tests, PRs) as medium risk¶
- Changed large bash command outputs to be saved to disk instead of truncated, allowing Claude to read the full content¶
- Changed large tool outputs to be persisted to disk instead of truncated, providing full output access via file references¶
- Changed `/plugins` installed tab to unify plugins and MCPs with scope-based grouping¶
- Deprecated Windows managed settings path `C:\ProgramData\ClaudeCode\managed-settings.json` - administrators should migrate to `C:\Program Files\ClaudeCode\managed-settings.json`¶
- [SDK] Changed minimum zod peer dependency to ^4.0.0¶
- [VSCode] Fixed usage display not updating after manual compact¶

## 2.1.0¶

- 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")¶
- Changed Shift+Enter to work out of the box in iTerm2, WezTerm, Ghostty, and Kitty without modifying terminal configs¶
- 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¶
- 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¶
- Reduced permission prompts for complex bash commands¶
- 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¶
- Improved CLI help output to display options and subcommands in alphabetical order for easier navigation¶
- 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¶
- 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¶
- Multiple optimizations to improve startup performance¶
- 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¶
- 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¶
- Removed permission prompt when entering plan mode - users can now enter plan mode without approval¶
- Removed underline styling from image reference links¶
- [SDK] Changed minimum zod peer dependency to ^4.0.0¶
- [VSCode] Added currently selected model name to the context menu¶
- [VSCode] Added descriptive labels on auto-accept permission button (e.g., "Yes, allow npm for this project" instead of "Yes, and don't ask again")¶
- [VSCode] Fixed paragraph breaks not rendering in markdown content¶
- [VSCode] Fixed scrolling in the extension inadvertently scrolling the parent iframe¶
- [Windows] Fixed issue with improper rendering¶

## 2.0.76¶

- Fixed issue with macOS code-sign warning when using Claude in Chrome integration¶

## 2.0.75¶

- Minor bugfixes¶

## 2.0.74¶

- Added LSP (Language Server Protocol) tool for code intelligence features like go-to-definition, find references, and hover documentation¶
- Added `/terminal-setup` support for Kitty, Alacritty, Zed, and Warp terminals¶
- Added ctrl+t shortcut in `/theme` to toggle syntax highlighting on/off¶
- Added syntax highlighting info to theme picker¶
- Added guidance for macOS users when Alt shortcuts fail due to terminal configuration¶
- Fixed skill `allowed-tools` not being applied to tools invoked by the skill¶
- Fixed Opus 4.5 tip incorrectly showing when user was already using Opus¶
- Fixed a potential crash when syntax highlighting isn't initialized correctly¶
- Fixed visual bug in `/plugins discover` where list selection indicator showed while search box was focused¶
- Fixed macOS keyboard shortcuts to display 'opt' instead of 'alt'¶
- Improved `/context` command visualization with grouped skills and agents by source, slash commands, and sorted token count¶
- [Windows] Fixed issue with improper rendering¶
- [VSCode] Added gift tag pictogram for year-end promotion message¶

## 2.0.73¶

- Added clickable `[Image #N]` links that open attached images in the default viewer¶
- Added alt-y yank-pop to cycle through kill ring history after ctrl-y yank¶
- Added search filtering to the plugin discover screen (type to filter by name, description, or marketplace)¶
- Added support for custom session IDs when forking sessions with `--session-id` combined with `--resume` or `--continue` and `--fork-session`¶
- Fixed slow input history cycling and race condition that could overwrite text after message submission¶
- Improved `/theme` command to open theme picker directly¶
- Improved theme picker UI¶
- Improved search UX across resume session, permissions, and plugins screens with a unified SearchBox component¶
- [VSCode] Added tab icon badges showing pending permissions (blue) and unread completions (orange)¶

## 2.0.72¶

- Added Claude in Chrome (Beta) feature that works with the Chrome extension (https://claude.ai/chrome) to let you control your browser directly from Claude Code¶
- Reduced terminal flickering¶
- Added scannable QR code to mobile app tip for quick app downloads¶
- Added loading indicator when resuming conversations for better feedback¶
- Fixed `/context` command not respecting custom system prompts in non-interactive mode¶
- Fixed order of consecutive Ctrl+K lines when pasting with Ctrl+Y¶
- Improved @ mention file suggestion speed (~3x faster in git repositories)¶
- Improved file suggestion performance in repos with `.ignore` or `.rgignore` files¶
- Improved settings validation errors to be more prominent¶
- Changed thinking toggle from Tab to Alt+T to avoid accidental triggers¶

## 2.0.71¶

- Added /config toggle to enable/disable prompt suggestions¶
- Added `/settings` as an alias for the `/config` command¶
- Fixed @ file reference suggestions incorrectly triggering when cursor is in the middle of a path¶
- Fixed MCP servers from `.mcp.json` not loading when using `--dangerously-skip-permissions`¶
- Fixed permission rules incorrectly rejecting valid bash commands containing shell glob patterns (e.g., `ls *.txt`, `for f in *.png`)¶
- Bedrock: Environment variable `ANTHROPIC_BEDROCK_BASE_URL` is now respected for token counting and inference profile listing¶
- New syntax highlighting engine for native build¶

## 2.0.70¶

- Added Enter key to accept and submit prompt suggestions immediately (tab still accepts for editing)¶
- Added wildcard syntax `mcp__server__*` for MCP tool permissions to allow or deny all tools from a server¶
- Added auto-update toggle for plugin marketplaces, allowing per-marketplace control over automatic updates¶
- Added `current_usage` field to status line input, enabling accurate context window percentage calculations¶
- Fixed input being cleared when processing queued commands while the user was typing¶
- Fixed prompt suggestions replacing typed input when pressing Tab¶
- Fixed diff view not updating when terminal is resized¶
- Improved memory usage by 3x for large conversations¶
- Improved resolution of stats screenshots copied to clipboard (Ctrl+S) for crisper images¶
- Removed # shortcut for quick memory entry (tell Claude to edit your CLAUDE.md instead)¶
- Fix thinking mode toggle in /config not persisting correctly¶
- Improve UI for file creation permission dialog¶

## 2.0.69¶

- Minor bugfixes¶

## 2.0.68¶

- Fixed IME (Input Method Editor) support for languages like Chinese, Japanese, and Korean by correctly positioning the composition window at the cursor¶
- Fixed a bug where disallowed MCP tools were visible to the model¶
- Fixed an issue where steering messages could be lost while a subagent is working¶
- Fixed Option+Arrow word navigation treating entire CJK (Chinese, Japanese, Korean) text sequences as a single word instead of navigating by word boundaries¶
- Improved plan mode exit UX: show simplified yes/no dialog when exiting with empty or missing plan instead of throwing an error¶
- Add support for enterprise managed settings. Contact your Anthropic account team to enable this feature.¶

## 2.0.67¶

- Thinking mode is now enabled by default for Opus 4.5¶
- Thinking mode configuration has moved to /config¶
- Added search functionality to `/permissions` command with `/` keyboard shortcut for filtering rules by tool name¶
- Show reason why autoupdater is disabled in `/doctor`¶
- Fixed false "Another process is currently updating Claude" error when running `claude update` while another instance is already on the latest version¶
- Fixed MCP servers from `.mcp.json` being stuck in pending state when running in non-interactive mode (`-p` flag or piped input)¶
- Fixed scroll position resetting after deleting a permission rule in `/permissions`¶
- Fixed word deletion (opt+delete) and word navigation (opt+arrow) not working correctly with non-Latin text such as Cyrillic, Greek, Arabic, Hebrew, Thai, and Chinese¶
- Fixed `claude install --force` not bypassing stale lock files¶
- Fixed consecutive @~/ file references in CLAUDE.md being incorrectly parsed due to markdown strikethrough interference¶
- Windows: Fixed plugin MCP servers failing due to colons in log directory paths¶

## 2.0.65¶

- Added ability to switch models while writing a prompt using alt+p (linux, windows), option+p (macos).¶
- Added context window information to status line input¶
- Added `fileSuggestion` setting for custom `@` file search commands¶
- Added `CLAUDE_CODE_SHELL` environment variable to override automatic shell detection (useful when login shell differs from actual working shell)¶
- Fixed prompt not being saved to history when aborting a query with Escape¶
- Fixed Read tool image handling to identify format from bytes instead of file extension¶

## 2.0.64¶

- Made auto-compacting instant¶
- Agents and bash commands can run asynchronously and send messages to wake up the main agent¶
- /stats now provides users with interesting CC stats, such as favorite model, usage graph, usage streak¶
- Added named session support: use `/rename` to name sessions, `/resume <name>` in REPL or `claude --resume <name>` from the terminal to resume them¶
- Added support for .claude/rules/`. See https://code.claude.com/docs/en/memory for details.¶
- Added image dimension metadata when images are resized, enabling accurate coordinate mappings for large images¶
- Fixed auto-loading .env when using native installer¶
- Fixed `--system-prompt` being ignored when using `--continue` or `--resume` flags¶
- Improved `/resume` screen with grouped forked sessions and keyboard shortcuts for preview (P) and rename (R)¶
- VSCode: Added copy-to-clipboard button on code blocks and bash tool inputs¶
- VSCode: Fixed extension not working on Windows ARM64 by falling back to x64 binary via emulation¶
- Bedrock: Improve efficiency of token counting¶
- Bedrock: Add support for `aws login` AWS Management Console credentials¶
- Unshipped AgentOutputTool and BashOutputTool, in favor of a new unified TaskOutputTool¶

## 2.0.62¶

- Added "(Recommended)" indicator for multiple-choice questions, with the recommended option moved to the top of the list¶
- Added `attribution` setting to customize commit and PR bylines (deprecates `includeCoAuthoredBy`)¶
- Fixed duplicate slash commands appearing when ~/.claude is symlinked to a project directory¶
- Fixed slash command selection not working when multiple commands share the same name¶
- Fixed an issue where skill files inside symlinked skill directories could become circular symlinks¶
- Fixed running versions getting removed because lock file incorrectly going stale¶
- Fixed IDE diff tab not closing when rejecting file changes¶

## 2.0.61¶

- Reverted VSCode support for multiple terminal clients due to responsiveness issues.¶

## 2.0.60¶

- Added background agent support. Agents run in the background while you work¶
- Added --disable-slash-commands CLI flag to disable all slash commands¶
- Added model name to "Co-Authored-By" commit messages¶
- Enabled "/mcp enable [server-name]" or "/mcp disable [server-name]" to quickly toggle all servers¶
- Updated Fetch to skip summarization for pre-approved websites¶
- VSCode: Added support for multiple terminal clients connecting to the IDE server simultaneously¶

## 2.0.59¶

- Added --agent CLI flag to override the agent setting for the current session¶
- Added `agent` setting to configure main thread with a specific agent's system prompt, tool restrictions, and model¶
- VS Code: Fixed .claude.json config file being read from incorrect location¶

## 2.0.58¶

- Pro users now have access to Opus 4.5 as part of their subscription!¶
- Fixed timer duration showing "11m 60s" instead of "12m 0s"¶
- Windows: Managed settings now prefer `C:\Program Files\ClaudeCode` if it exists. Support for `C:\ProgramData\ClaudeCode` will be removed in a future version.¶

## 2.0.57¶

- Added feedback input when rejecting plans, allowing users to tell Claude what to change¶
- VSCode: Added streaming message support for real-time response display¶

## 2.0.56¶

- Added setting to enable/disable terminal progress bar (OSC 9;4)¶
- VSCode Extension: Added support for VS Code's secondary sidebar (VS Code 1.97+), allowing Claude Code to be displayed in the right sidebar while keeping the file explorer on the left. Requires setting sidebar as Preferred Location in the config.¶

## 2.0.55¶

- Fixed proxy DNS resolution being forced on by default. Now opt-in via `CLAUDE_CODE_PROXY_RESOLVES_HOSTS=true` environment variable¶
- Fixed keyboard navigation becoming unresponsive when holding down arrow keys in memory location selector¶
- Improved AskUserQuestion tool to auto-submit single-select questions on the last question, eliminating the extra review screen for simple question flows¶
- Improved fuzzy matching for `@` file suggestions with faster, more accurate results¶

## 2.0.54¶

- Hooks: Enable PermissionRequest hooks to process 'always allow' suggestions and apply permission updates¶
- Fix issue with excessive iTerm notifications¶

## 2.0.52¶

- Fixed duplicate message display when starting Claude with a command line argument¶
- Fixed `/usage` command progress bars to fill up as usage increases (instead of showing remaining percentage)¶
- Fixed image pasting not working on Linux systems running Wayland (now falls back to wl-paste when xclip is unavailable)¶
- Permit some uses of `$!` in bash commands¶

## 2.0.51¶

- Added Opus 4.5! https://www.anthropic.com/news/claude-opus-4-5¶
- Introducing Claude Code for Desktop: https://claude.com/download¶
- To give you room to try out our new model, we've updated usage limits for Claude Code users. See the Claude Opus 4.5 blog for full details¶
- Pro users can now purchase extra usage for access to Opus 4.5 in Claude Code¶
- Plan Mode now builds more precise plans and executes more thoroughly¶
- Usage limit notifications now easier to understand¶
- Switched `/usage` back to "% used"¶
- Fixed handling of thinking errors¶
- Fixed performance regression¶

## 2.0.50¶

- Fixed bug preventing calling MCP tools that have nested references in their input schemas¶
- Silenced a noisy but harmless error during upgrades¶
- Improved ultrathink text display¶
- Improved clarity of 5-hour session limit warning message¶

## 2.0.49¶

- Added readline-style ctrl-y for pasting deleted text¶
- Improved clarity of usage limit warning message¶
- Fixed handling of subagent permissions¶

## 2.0.47¶

- Improved error messages and validation for `claude --teleport`¶
- Improved error handling in `/usage`¶
- Fixed race condition with history entry not getting logged at exit¶
- Fixed Vertex AI configuration not being applied from `settings.json`¶

## 2.0.46¶

- Fixed image files being reported with incorrect media type when format cannot be detected from metadata¶

## 2.0.45¶

- Added support for Microsoft Foundry! See https://code.claude.com/docs/en/azure-ai-foundry¶
- Added `PermissionRequest` hook to automatically approve or deny tool permission requests with custom logic¶
- Send background tasks to Claude Code on the web by starting a message with `&`¶

## 2.0.43¶

- Added `permissionMode` field for custom agents¶
- Added `tool_use_id` field to `PreToolUseHookInput` and `PostToolUseHookInput` types¶
- Added skills frontmatter field to declare skills to auto-load for subagents¶
- Added the `SubagentStart` hook event¶
- Fixed nested `CLAUDE.md` files not loading when @-mentioning files¶
- Fixed duplicate rendering of some messages in the UI¶
- Fixed some visual flickers¶
- Fixed NotebookEdit tool inserting cells at incorrect positions when cell IDs matched the pattern `cell-N`¶

## 2.0.42¶

- Added `agent_id` and `agent_transcript_path` fields to `SubagentStop` hooks.¶

## 2.0.41¶

- Added `model` parameter to prompt-based stop hooks, allowing users to specify a custom model for hook evaluation¶
- Fixed slash commands from user settings being loaded twice, which could cause rendering issues¶
- Fixed incorrect labeling of user settings vs project settings in command descriptions¶
- Fixed crash when plugin command hooks timeout during execution¶
- Fixed: Bedrock users no longer see duplicate Opus entries in the /model picker when using `--model haiku`¶
- Fixed broken security documentation links in trust dialogs and onboarding¶
- Fixed issue where pressing ESC to close the diff modal would also interrupt the model¶
- ctrl-r history search landing on a slash command no longer cancels the search¶
- SDK: Support custom timeouts for hooks¶
- Allow more safe git commands to run without approval¶
- Plugins: Added support for sharing and installing output styles¶
- Teleporting a session from web will automatically set the upstream branch¶

## 2.0.37¶

- Fixed how idleness is computed for notifications¶
- Hooks: Added matcher values for Notification hook events¶
- Output Styles: Added `keep-coding-instructions` option to frontmatter¶

## 2.0.36¶

- Fixed: DISABLE_AUTOUPDATER environment variable now properly disables package manager update notifications¶
- Fixed queued messages being incorrectly executed as bash commands¶
- Fixed input being lost when typing while a queued message is processed¶

## 2.0.35¶

- Improve fuzzy search results when searching commands¶
- Improved VS Code extension to respect `chat.fontSize` and `chat.fontFamily` settings throughout the entire UI, and apply font changes immediately without requiring reload¶
- Added `CLAUDE_CODE_EXIT_AFTER_STOP_DELAY` environment variable to automatically exit SDK mode after a specified idle duration, useful for automated workflows and scripts¶
- Migrated `ignorePatterns` from project config to deny permissions in the localSettings.¶
- Fixed menu navigation getting stuck on items with empty string or other falsy values (e.g., in the `/hooks` menu)¶

## 2.0.34¶

- VSCode Extension: Added setting to configure the initial permission mode for new conversations¶
- Improved file path suggestion performance with native Rust-based fuzzy finder¶
- Fixed infinite token refresh loop that caused MCP servers with OAuth (e.g., Slack) to hang during connection¶
- Fixed memory crash when reading or writing large files (especially base64-encoded images)¶

## 2.0.33¶

- Native binary installs now launch quicker.¶
- Fixed `claude doctor` incorrectly detecting Homebrew vs npm-global installations by properly resolving symlinks¶
- Fixed `claude mcp serve` exposing tools with incompatible outputSchemas¶

## 2.0.32¶

- Un-deprecate output styles based on community feedback¶
- Added `companyAnnouncements` setting for displaying announcements on startup¶
- Fixed hook progress messages not updating correctly during PostToolUse hook execution¶

## 2.0.31¶

- Windows: native installation uses shift+tab as shortcut for mode switching, instead of alt+m¶
- Vertex: add support for Web Search on supported models¶
- VSCode: Adding the respectGitIgnore configuration to include .gitignored files in file searches (defaults to true)¶
- Fixed a bug with subagents and MCP servers related to "Tool names must be unique" error¶
- Fixed issue causing `/compact` to fail with `prompt_too_long` by making it respect existing compact boundaries¶
- Fixed plugin uninstall not removing plugins¶

## 2.0.30¶

- Added helpful hint to run `security unlock-keychain` when encountering API key errors on macOS with locked keychain¶
- Added `allowUnsandboxedCommands` sandbox setting to disable the dangerouslyDisableSandbox escape hatch at policy level¶
- Added `disallowedTools` field to custom agent definitions for explicit tool blocking¶
- Added prompt-based stop hooks¶
- VSCode: Added respectGitIgnore configuration to include .gitignored files in file searches (defaults to true)¶
- Enabled SSE MCP servers on native build¶
- Deprecated output styles. Review options in `/output-style` and use --system-prompt-file, --system-prompt, --append-system-prompt, CLAUDE.md, or plugins instead¶
- Removed support for custom ripgrep configuration, resolving an issue where Search returns no results and config discovery fails¶
- Fixed Explore agent creating unwanted .md investigation files during codebase exploration¶
- Fixed a bug where `/context` would sometimes fail with "max_tokens must be greater than thinking.budget_tokens" error message¶
- Fixed `--mcp-config` flag to correctly override file-based MCP configurations¶
- Fixed bug that saved session permissions to local settings¶
- Fixed MCP tools not being available to sub-agents¶
- Fixed hooks and plugins not executing when using --dangerously-skip-permissions flag¶
- Fixed delay when navigating through typeahead suggestions with arrow keys¶
- VSCode: Restored selection indicator in input footer showing current file or code selection status¶

## 2.0.28¶

- Plan mode: introduced new Plan subagent¶
- Subagents: claude can now choose to resume subagents¶
- Subagents: claude can dynamically choose the model used by its subagents¶
- SDK: added --max-budget-usd flag¶
- Discovery of custom slash commands, subagents, and output styles no longer respects .gitignore¶
- Stop `/terminal-setup` from adding backslash to `Shift + Enter` in VS Code¶
- Add branch and tag support for git-based plugins and marketplaces using fragment syntax (e.g., `owner/repo#branch`)¶
- Fixed a bug where macOS permission prompts would show up upon initial launch when launching from home directory¶
- Various other bug fixes¶

## 2.0.27¶

- New UI for permission prompts¶
- Added current branch filtering and search to session resume screen for easier navigation¶
- Fixed directory @-mention causing "No assistant message found" error¶
- VSCode Extension: Add config setting to include .gitignored files in file searches¶
- VSCode Extension: Bug fixes for unrelated 'Warmup' conversations, and configuration/settings occasionally being reset to defaults¶

## 2.0.25¶

- Removed legacy SDK entrypoint. Please migrate to @anthropic-ai/claude-agent-sdk for future SDK updates: https://platform.claude.com/docs/en/agent-sdk/migration-guide¶

## 2.0.24¶

- Fixed a bug where project-level skills were not loading when --setting-sources 'project' was specified¶
- Claude Code Web: Support for Web -> CLI teleport¶
- Sandbox: Releasing a sandbox mode for the BashTool on Linux & Mac¶
- Bedrock: Display awsAuthRefresh output when auth is required¶

## 2.0.22¶

- Fixed content layout shift when scrolling through slash commands¶
- IDE: Add toggle to enable/disable thinking.¶
- Fix bug causing duplicate permission prompts with parallel tool calls¶
- Add support for enterprise managed MCP allowlist and denylist¶

## 2.0.21¶

- Support MCP `structuredContent` field in tool responses¶
- Added an interactive question tool¶
- Claude will now ask you questions more often in plan mode¶
- Added Haiku 4.5 as a model option for Pro users¶
- Fixed an issue where queued commands don't have access to previous messages' output¶

## 2.0.20¶

- Added support for Claude Skills¶

## 2.0.19¶

- Auto-background long-running bash commands instead of killing them. Customize with BASH_DEFAULT_TIMEOUT_MS¶
- Fixed a bug where Haiku was unnecessarily called in print mode¶

## 2.0.17¶

- Added Haiku 4.5 to model selector!¶
- Haiku 4.5 automatically uses Sonnet in plan mode, and Haiku for execution (i.e. SonnetPlan by default)¶
- 3P (Bedrock and Vertex) are not automatically upgraded yet. Manual upgrading can be done through setting `ANTHROPIC_DEFAULT_HAIKU_MODEL`¶
- Introducing the Explore subagent. Powered by Haiku it'll search through your codebase efficiently to save context!¶
- OTEL: support HTTP_PROXY and HTTPS_PROXY¶
- `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` now disables release notes fetching¶

## 2.0.15¶

- Fixed bug with resuming where previously created files needed to be read again before writing¶
- Fixed bug with `-p` mode where @-mentioned files needed to be read again before writing¶

## 2.0.14¶

- Fix @-mentioning MCP servers to toggle them on/off¶
- Improve permission checks for bash with inline env vars¶
- Fix ultrathink + thinking toggle¶
- Reduce unnecessary logins¶
- Document --system-prompt¶
- Several improvements to rendering¶
- Plugins UI polish¶

## 2.0.13¶

- Fixed `/plugin` not working on native build¶

## 2.0.12¶

- **Plugin System Released**: Extend Claude Code with custom commands, agents, hooks, and MCP servers from marketplaces¶
- `/plugin install`, `/plugin enable/disable`, `/plugin marketplace` commands for plugin management¶
- Repository-level plugin configuration via `extraKnownMarketplaces` for team collaboration¶
- `/plugin validate` command for validating plugin structure and configuration¶
- Plugin announcement blog post at https://www.anthropic.com/news/claude-code-plugins¶
- Plugin documentation available at https://code.claude.com/docs/en/plugins¶
- Comprehensive error messages and diagnostics via `/doctor` command¶
- Avoid flickering in `/model` selector¶
- Improvements to `/help`¶
- Avoid mentioning hooks in `/resume` summaries¶
- Changes to the "verbose" setting in `/config` now persist across sessions¶

## 2.0.11¶

- Reduced system prompt size by 1.4k tokens¶
- IDE: Fixed keyboard shortcuts and focus issues for smoother interaction¶
- Fixed Opus fallback rate limit errors appearing incorrectly¶
- Fixed /add-dir command selecting wrong default tab¶

## 2.0.10¶

- Rewrote terminal renderer for buttery smooth UI¶
- Enable/disable MCP servers by @mentioning, or in /mcp¶
- Added tab completion for shell commands in bash mode¶
- PreToolUse hooks can now modify tool inputs¶
- Press Ctrl-G to edit your prompt in your system's configured text editor¶
- Fixes for bash permission checks with environment variables in the command¶

## 2.0.9¶

- Fix regression where bash backgrounding stopped working¶

## 2.0.8¶

- Update Bedrock default Sonnet model to `global.anthropic.claude-sonnet-4-5-20250929-v1:0`¶
- IDE: Add drag-and-drop support for files and folders in chat¶
- /context: Fix counting for thinking blocks¶
- Improve message rendering for users with light themes on dark terminals¶
- Remove deprecated .claude.json allowedTools, ignorePatterns, env, and todoFeatureEnabled config options (instead, configure these in your settings.json)¶

## 2.0.5¶

- IDE: Fix IME unintended message submission with Enter and Tab¶
- IDE: Add "Open in Terminal" link in login screen¶
- Fix unhandled OAuth expiration 401 API errors¶
- SDK: Added SDKUserMessageReplay.isReplay to prevent duplicate messages¶

## 2.0.1¶

- Skip Sonnet 4.5 default model setting change for Bedrock and Vertex¶
- Various bug fixes and presentation improvements¶

## 2.0.0¶

- New native VS Code extension¶
- Fresh coat of paint throughout the whole app¶
- /rewind a conversation to undo code changes¶
- /usage command to see plan limits¶
- Tab to toggle thinking (sticky across sessions)¶
- Ctrl-R to search history¶
- Unshipped claude config command¶
- Hooks: Reduced PostToolUse 'tool_use' ids were found without 'tool_result' blocks errors¶
- SDK: The Claude Code SDK is now the Claude Agent SDK¶
- Add subagents dynamically with `--agents` flag¶

## 1.0.126¶

- Enable /context command for Bedrock and Vertex¶
- Add mTLS support for HTTP-based OpenTelemetry exporters¶

## 1.0.124¶

- Set `CLAUDE_BASH_NO_LOGIN` environment variable to 1 or true to to skip login shell for BashTool¶
- Fix Bedrock and Vertex environment variables evaluating all strings as truthy¶
- No longer inform Claude of the list of allowed tools when permission is denied¶
- Fixed security vulnerability in Bash tool permission checks¶
- Improved VSCode extension performance for large files¶

## 1.0.123¶

- Bash permission rules now support output redirections when matching (e.g., `Bash(python:*)` matches `python script.py > output.txt`)¶
- Fixed thinking mode triggering on negation phrases like "don't think"¶
- Fixed rendering performance degradation during token streaming¶
- Added SlashCommand tool, which enables Claude to invoke your slash commands. https://code.claude.com/docs/en/slash-commands#SlashCommand-tool¶
- Enhanced BashTool environment snapshot logging¶
- Fixed a bug where resuming a conversation in headless mode would sometimes enable thinking unnecessarily¶
- Migrated --debug logging to a file, to enable easy tailing & filtering¶

## 1.0.120¶

- Fix input lag during typing, especially noticeable with large prompts¶
- Improved VSCode extension command registry and sessions dialog user experience¶
- Enhanced sessions dialog responsiveness and visual feedback¶
- Fixed IDE compatibility issue by removing worktree support check¶
- Fixed security vulnerability where Bash tool permission checks could be bypassed using prefix matching¶

## 1.0.119¶

- Fix Windows issue where process visually freezes on entering interactive mode¶
- Support dynamic headers for MCP servers via headersHelper configuration¶
- Fix thinking mode not working in headless sessions¶
- Fix slash commands now properly update allowed tools instead of replacing them¶

## 1.0.117¶

- Add Ctrl-R history search to recall previous commands like bash/zsh¶
- Fix input lag while typing, especially on Windows¶
- Add sed command to auto-allowed commands in acceptEdits mode¶
- Fix Windows PATH comparison to be case-insensitive for drive letters¶
- Add permissions management hint to /add-dir output¶

## 1.0.115¶

- Improve thinking mode display with enhanced visual effects¶
- Type /t to temporarily disable thinking mode in your prompt¶
- Improve path validation for glob and grep tools¶
- Show condensed output for post-tool hooks to reduce visual clutter¶
- Fix visual feedback when loading state completes¶
- Improve UI consistency for permission request dialogs¶

## 1.0.113¶

- Deprecated piped input in interactive mode¶
- Move Ctrl+R keybinding for toggling transcript to Ctrl+O¶

## 1.0.112¶

- Transcript mode (Ctrl+R): Added the model used to generate each assistant message¶
- Addressed issue where some Claude Max users were incorrectly recognized as Claude Pro users¶
- Hooks: Added systemMessage support for SessionEnd hooks¶
- Added `spinnerTipsEnabled` setting to disable spinner tips¶
- IDE: Various improvements and bug fixes¶

## 1.0.111¶

- /model now validates provided model names¶
- Fixed Bash tool crashes caused by malformed shell syntax parsing¶

## 1.0.110¶

- /terminal-setup command now supports WezTerm¶
- MCP: OAuth tokens now proactively refresh before expiration¶
- Fixed reliability issues with background Bash processes¶

## 1.0.109¶

- SDK: Added partial message streaming support via `--include-partial-messages` CLI flag¶

## 1.0.106¶

- Windows: Fixed path permission matching to consistently use POSIX format (e.g., `Read(//c/Users/...)`)¶

## 1.0.97¶

- Settings: /doctor now validates permission rule syntax and suggests corrections¶

## 1.0.94¶

- Vertex: add support for global endpoints for supported models¶
- /memory command now allows direct editing of all imported memory files¶
- SDK: Add custom tools as callbacks¶
- Added /todos command to list current todo items¶

## 1.0.93¶

- Windows: Add alt + v shortcut for pasting images from clipboard¶
- Support NO_PROXY environment variable to bypass proxy for specified hostnames and IPs¶

## 1.0.90¶

- Settings file changes take effect immediately - no restart required¶

## 1.0.88¶

- Fixed issue causing "OAuth authentication is currently not supported"¶
- Status line input now includes `exceeds_200k_tokens`¶
- Fixed incorrect usage tracking in /cost.¶
- Introduced `ANTHROPIC_DEFAULT_SONNET_MODEL` and `ANTHROPIC_DEFAULT_OPUS_MODEL` for controlling model aliases opusplan, opus, and sonnet.¶
- Bedrock: Updated default Sonnet model to Sonnet 4¶

## 1.0.86¶

- Added /context to help users self-serve debug context issues¶
- SDK: Added UUID support for all SDK messages¶
- SDK: Added `--replay-user-messages` to replay user messages back to stdout¶

## 1.0.85¶

- Status line input now includes session cost info¶
- Hooks: Introduced SessionEnd hook¶

## 1.0.84¶

- Fix tool_use/tool_result id mismatch error when network is unstable¶
- Fix Claude sometimes ignoring real-time steering when wrapping up a task¶
- @-mention: Add ~/.claude/\* files to suggestions for easier agent, output style, and slash command editing¶
- Use built-in ripgrep by default; to opt out of this behavior, set USE_BUILTIN_RIPGREP=0¶

## 1.0.83¶

- @-mention: Support files with spaces in path¶
- New shimmering spinner¶

## 1.0.82¶

- SDK: Add request cancellation support¶
- SDK: New additionalDirectories option to search custom paths, improved slash command processing¶
- Settings: Validation prevents invalid fields in .claude/settings.json files¶
- MCP: Improve tool name consistency¶
- Bash: Fix crash when Claude tries to automatically read large files¶

## 1.0.81¶

- Released output styles, including new built-in educational output styles "Explanatory" and "Learning". Docs: https://code.claude.com/docs/en/output-styles¶
- Agents: Fix custom agent loading when agent files are unparsable¶

## 1.0.80¶

- UI improvements: Fix text contrast for custom subagent colors and spinner rendering issues¶

## 1.0.77¶

- Bash tool: Fix heredoc and multiline string escaping, improve stderr redirection handling¶
- SDK: Add session support and permission denial tracking¶
- Fix token limit errors in conversation summarization¶
- Opus Plan Mode: New setting in `/model` to run Opus only in plan mode, Sonnet otherwise¶

## 1.0.73¶

- MCP: Support multiple config files with `--mcp-config file1.json file2.json`¶
- MCP: Press Esc to cancel OAuth authentication flows¶
- Bash: Improved command validation and reduced false security warnings¶
- UI: Enhanced spinner animations and status line visual hierarchy¶
- Linux: Added support for Alpine and musl-based distributions (requires separate ripgrep installation)¶

## 1.0.72¶

- Ask permissions: have Claude Code always ask for confirmation to use specific tools with /permissions¶

## 1.0.71¶

- Background commands: (Ctrl-b) to run any Bash command in the background so Claude can keep working (great for dev servers, tailing logs, etc.)¶
- Customizable status line: add your terminal prompt to Claude Code with /statusline¶

## 1.0.70¶

- Performance: Optimized message rendering for better performance with large contexts¶
- Windows: Fixed native file search, ripgrep, and subagent functionality¶
- Added support for @-mentions in slash command arguments¶

## 1.0.69¶

- Upgraded Opus to version 4.1¶

## 1.0.68¶

- Fix incorrect model names being used for certain commands like `/pr-comments`¶
- Windows: improve permissions checks for allow / deny tools and project trust. This may create a new project entry in `.claude.json` - manually merge the history field if desired.¶
- Windows: improve sub-process spawning to eliminate "No such file or directory" when running commands like pnpm¶
- Enhanced /doctor command with CLAUDE.md and MCP tool context for self-serve debugging¶
- SDK: Added canUseTool callback support for tool confirmation¶
- Added `disableAllHooks` setting¶
- Improved file suggestions performance in large repos¶

## 1.0.65¶

- IDE: Fixed connection stability issues and error handling for diagnostics¶
- Windows: Fixed shell environment setup for users without .bashrc files¶

## 1.0.64¶

- Agents: Added model customization support - you can now specify which model an agent should use¶
- Agents: Fixed unintended access to the recursive agent tool¶
- Hooks: Added systemMessage field to hook JSON output for displaying warnings and context¶
- SDK: Fixed user input tracking across multi-turn conversations¶
- Added hidden files to file search and @-mention suggestions¶

## 1.0.63¶

- Windows: Fixed file search, @agent mentions, and custom slash commands functionality¶

## 1.0.62¶

- Added @-mention support with typeahead for custom agents. @<your-custom-agent> to invoke it¶
- Hooks: Added SessionStart hook for new session initialization¶
- /add-dir command now supports typeahead for directory paths¶
- Improved network connectivity check reliability¶

## 1.0.61¶

- Transcript mode (Ctrl+R): Changed Esc to exit transcript mode rather than interrupt¶
- Settings: Added `--settings` flag to load settings from a JSON file¶
- Settings: Fixed resolution of settings files paths that are symlinks¶
- OTEL: Fixed reporting of wrong organization after authentication changes¶
- Slash commands: Fixed permissions checking for allowed-tools with Bash¶
- IDE: Added support for pasting images in VSCode MacOS using ⌘+V¶
- IDE: Added `CLAUDE_CODE_AUTO_CONNECT_IDE=false` for disabling IDE auto-connection¶
- Added `CLAUDE_CODE_SHELL_PREFIX` for wrapping Claude and user-provided shell commands run by Claude Code¶

## 1.0.60¶

- You can now create custom subagents for specialized tasks! Run /agents to get started¶

## 1.0.59¶

- SDK: Added tool confirmation support with canUseTool callback¶
- SDK: Allow specifying env for spawned process¶
- Hooks: Exposed PermissionDecision to hooks (including "ask")¶
- Hooks: UserPromptSubmit now supports additionalContext in advanced JSON output¶
- Fixed issue where some Max users that specified Opus would still see fallback to Sonnet¶

## 1.0.58¶

- Added support for reading PDFs¶
- MCP: Improved server health status display in 'claude mcp list'¶
- Hooks: Added CLAUDE_PROJECT_DIR env var for hook commands¶

## 1.0.57¶

- Added support for specifying a model in slash commands¶
- Improved permission messages to help Claude understand allowed tools¶
- Fix: Remove trailing newlines from bash output in terminal wrapping¶

## 1.0.56¶

- Windows: Enabled shift+tab for mode switching on versions of Node.js that support terminal VT mode¶
- Fixes for WSL IDE detection¶
- Fix an issue causing awsRefreshHelper changes to .aws directory not to be picked up¶

## 1.0.55¶

- Clarified knowledge cutoff for Opus 4 and Sonnet 4 models¶
- Windows: fixed Ctrl+Z crash¶
- SDK: Added ability to capture error logging¶
- Add --system-prompt-file option to override system prompt in print mode¶

## 1.0.54¶

- Hooks: Added UserPromptSubmit hook and the current working directory to hook inputs¶
- Custom slash commands: Added argument-hint to frontmatter¶
- Windows: OAuth uses port 45454 and properly constructs browser URL¶
- Windows: mode switching now uses alt + m, and plan mode renders properly¶
- Shell: Switch to in-memory shell snapshot to fix file-related errors¶

## 1.0.53¶

- Updated @-mention file truncation from 100 lines to 2000 lines¶
- Add helper script settings for AWS token refresh: awsAuthRefresh (for foreground operations like aws sso login) and awsCredentialExport (for background operation with STS-like response).¶

## 1.0.52¶

- Added support for MCP server instructions¶

## 1.0.51¶

- Added support for native Windows (requires Git for Windows)¶
- Added support for Bedrock API keys through environment variable AWS_BEARER_TOKEN_BEDROCK¶
- Settings: /doctor can now help you identify and fix invalid setting files¶
- `--append-system-prompt` can now be used in interactive mode, not just --print/-p.¶
- Increased auto-compact warning threshold from 60% to 80%¶
- Fixed an issue with handling user directories with spaces for shell snapshots¶
- OTEL resource now includes os.type, os.version, host.arch, and wsl.version (if running on Windows Subsystem for Linux)¶
- Custom slash commands: Fixed user-level commands in subdirectories¶
- Plan mode: Fixed issue where rejected plan from sub-task would get discarded¶

## 1.0.48¶

- Fixed a bug in v1.0.45 where the app would sometimes freeze on launch¶
- Added progress messages to Bash tool based on the last 5 lines of command output¶
- Added expanding variables support for MCP server configuration¶
- Moved shell snapshots from /tmp to ~/.claude for more reliable Bash tool calls¶
- Improved IDE extension path handling when Claude Code runs in WSL¶
- Hooks: Added a PreCompact hook¶
- Vim mode: Added c, f/F, t/T¶

## 1.0.45¶

- Redesigned Search (Grep) tool with new tool input parameters and features¶
- Disabled IDE diffs for notebook files, fixing "Timeout waiting after 1000ms" error¶
- Fixed config file corruption issue by enforcing atomic writes¶
- Updated prompt input undo to Ctrl+\_ to avoid breaking existing Ctrl+U behavior, matching zsh's undo shortcut¶
- Stop Hooks: Fixed transcript path after /clear and fixed triggering when loop ends with tool call¶
- Custom slash commands: Restored namespacing in command names based on subdirectories. For example, .claude/commands/frontend/component.md is now /frontend:component, not /component.¶

## 1.0.44¶

- New /export command lets you quickly export a conversation for sharing¶
- MCP: resource_link tool results are now supported¶
- MCP: tool annotations and tool titles now display in /mcp view¶
- Changed Ctrl+Z to suspend Claude Code. Resume by running `fg`. Prompt input undo is now Ctrl+U.¶

## 1.0.43¶

- Fixed a bug where the theme selector was saving excessively¶
- Hooks: Added EPIPE system error handling¶

## 1.0.42¶

- Added tilde (`~`) expansion support to `/add-dir` command¶

## 1.0.41¶

- Hooks: Split Stop hook triggering into Stop and SubagentStop¶
- Hooks: Enabled optional timeout configuration for each command¶
- Hooks: Added "hook_event_name" to hook input¶
- Fixed a bug where MCP tools would display twice in tool list¶
- New tool parameters JSON for Bash tool in `tool_decision` event¶

## 1.0.40¶

- Fixed a bug causing API connection errors with UNABLE_TO_GET_ISSUER_CERT_LOCALLY if `NODE_EXTRA_CA_CERTS` was set¶

## 1.0.39¶

- New Active Time metric in OpenTelemetry logging¶

## 1.0.38¶

- Released hooks. Special thanks to community input in https://github.com/anthropics/claude-code/issues/712. Docs: https://code.claude.com/docs/en/hooks¶

## 1.0.37¶

- Remove ability to set `Proxy-Authorization` header via ANTHROPIC_AUTH_TOKEN or apiKeyHelper¶

## 1.0.36¶

- Web search now takes today's date into context¶
- Fixed a bug where stdio MCP servers were not terminating properly on exit¶

## 1.0.35¶

- Added support for MCP OAuth Authorization Server discovery¶

## 1.0.34¶

- Fixed a memory leak causing a MaxListenersExceededWarning message to appear¶

## 1.0.33¶

- Improved logging functionality with session ID support¶
- Added prompt input undo functionality (Ctrl+Z and vim 'u' command)¶
- Improvements to plan mode¶

## 1.0.32¶

- Updated loopback config for litellm¶
- Added forceLoginMethod setting to bypass login selection screen¶

## 1.0.31¶

- Fixed a bug where ~/.claude.json would get reset when file contained invalid JSON¶

## 1.0.30¶

- Custom slash commands: Run bash output, @-mention files, enable thinking with thinking keywords¶
- Improved file path autocomplete with filename matching¶
- Added timestamps in Ctrl-r mode and fixed Ctrl-c handling¶
- Enhanced jq regex support for complex filters with pipes and select¶

## 1.0.29¶

- Improved CJK character support in cursor navigation and rendering¶

## 1.0.28¶

- Slash commands: Fix selector display during history navigation¶
- Resizes images before upload to prevent API size limit errors¶
- Added XDG_CONFIG_HOME support to configuration directory¶
- Performance optimizations for memory usage¶
- New attributes (terminal.type, language) in OpenTelemetry logging¶

## 1.0.27¶

- Streamable HTTP MCP servers are now supported¶
- Remote MCP servers (SSE and HTTP) now support OAuth¶
- MCP resources can now be @-mentioned¶
- /resume slash command to switch conversations within Claude Code¶

## 1.0.25¶

- Slash commands: moved "project" and "user" prefixes to descriptions¶
- Slash commands: improved reliability for command discovery¶
- Improved support for Ghostty¶
- Improved web search reliability¶

## 1.0.24¶

- Improved /mcp output¶
- Fixed a bug where settings arrays got overwritten instead of merged¶

## 1.0.23¶

- Released TypeScript SDK: import @anthropic-ai/claude-code to get started¶
- Released Python SDK: pip install claude-code-sdk to get started¶

## 1.0.22¶

- SDK: Renamed `total_cost` to `total_cost_usd`¶

## 1.0.21¶

- Improved editing of files with tab-based indentation¶
- Fix for tool_use without matching tool_result errors¶
- Fixed a bug where stdio MCP server processes would linger after quitting Claude Code¶

## 1.0.18¶

- Added --add-dir CLI argument for specifying additional working directories¶
- Added streaming input support without require -p flag¶
- Improved startup performance and session storage performance¶
- Added CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR environment variable to freeze working directory for bash commands¶
- Added detailed MCP server tools display (/mcp)¶
- MCP authentication and permission improvements¶
- Added auto-reconnection for MCP SSE connections on disconnect¶
- Fixed issue where pasted content was lost when dialogs appeared¶

## 1.0.17¶

- We now emit messages from sub-tasks in -p mode (look for the parent_tool_use_id property)¶
- Fixed crashes when the VS Code diff tool is invoked multiple times quickly¶
- MCP server list UI improvements¶
- Update Claude Code process title to display "claude" instead of "node"¶

## 1.0.11¶

- Claude Code can now also be used with a Claude Pro subscription¶
- Added /upgrade for smoother switching to Claude Max plans¶
- Improved UI for authentication from API keys and Bedrock/Vertex/external auth tokens¶
- Improved shell configuration error handling¶
- Improved todo list handling during compaction¶

## 1.0.10¶

- Added markdown table support¶
- Improved streaming performance¶

## 1.0.8¶

- Fixed Vertex AI region fallback when using CLOUD_ML_REGION¶
- Increased default otel interval from 1s -> 5s¶
- Fixed edge cases where MCP_TIMEOUT and MCP_TOOL_TIMEOUT weren't being respected¶
- Fixed a regression where search tools unnecessarily asked for permissions¶
- Added support for triggering thinking non-English languages¶
- Improved compacting UI¶

## 1.0.7¶

- Renamed /allowed-tools -> /permissions¶
- Migrated allowedTools and ignorePatterns from .claude.json -> settings.json¶
- Deprecated claude config commands in favor of editing settings.json¶
- Fixed a bug where --dangerously-skip-permissions sometimes didn't work in --print mode¶
- Improved error handling for /install-github-app¶
- Bugfixes, UI polish, and tool reliability improvements¶

## 1.0.6¶

- Improved edit reliability for tab-indented files¶
- Respect CLAUDE_CONFIG_DIR everywhere¶
- Reduced unnecessary tool permission prompts¶
- Added support for symlinks in @file typeahead¶
- Bugfixes, UI polish, and tool reliability improvements¶

## 1.0.4¶

- Fixed a bug where MCP tool errors weren't being parsed correctly¶

## 1.0.1¶

- Added `DISABLE_INTERLEAVED_THINKING` to give users the option to opt out of interleaved thinking.¶
- Improved model references to show provider-specific names (Sonnet 3.7 for Bedrock, Sonnet 4 for Console)¶
- Updated documentation links and OAuth process descriptions¶

## 1.0.0¶

- Claude Code is now generally available¶
- Introducing Sonnet 4 and Opus 4 models¶

## 0.2.125¶

- Breaking change: Bedrock ARN passed to `ANTHROPIC_MODEL` or `ANTHROPIC_SMALL_FAST_MODEL` should no longer contain an escaped slash (specify `/` instead of `%2F`)¶
- Removed `DEBUG=true` in favor of `ANTHROPIC_LOG=debug`, to log all requests¶

## 0.2.117¶

- Breaking change: --print JSON output now returns nested message objects, for forwards-compatibility as we introduce new metadata fields¶
- Introduced settings.cleanupPeriodDays¶
- Introduced CLAUDE_CODE_API_KEY_HELPER_TTL_MS env var¶
- Introduced --debug mode¶

## 0.2.108¶

- You can now send messages to Claude while it works to steer Claude in real-time¶
- Introduced BASH_DEFAULT_TIMEOUT_MS and BASH_MAX_TIMEOUT_MS env vars¶
- Fixed a bug where thinking was not working in -p mode¶
- Fixed a regression in /cost reporting¶
- Deprecated MCP wizard interface in favor of other MCP commands¶
- Lots of other bugfixes and improvements¶

## 0.2.107¶

- CLAUDE.md files can now import other files. Add @path/to/file.md to ./CLAUDE.md to load additional files on launch¶

## 0.2.106¶

- MCP SSE server configs can now specify custom headers¶
- Fixed a bug where MCP permission prompt didn't always show correctly¶

## 0.2.105¶

- Claude can now search the web¶
- Moved system & account status to /status¶
- Added word movement keybindings for Vim¶
- Improved latency for startup, todo tool, and file edits¶

## 0.2.102¶

- Improved thinking triggering reliability¶
- Improved @mention reliability for images and folders¶
- You can now paste multiple large chunks into one prompt¶

## 0.2.100¶

- Fixed a crash caused by a stack overflow error¶
- Made db storage optional; missing db support disables --continue and --resume¶

## 0.2.98¶

- Fixed an issue where auto-compact was running twice¶

## 0.2.96¶

- Claude Code can now also be used with a Claude Max subscription (https://claude.ai/upgrade)¶

## 0.2.93¶

- Resume conversations from where you left off from with "claude --continue" and "claude --resume"¶
- Claude now has access to a Todo list that helps it stay on track and be more organized¶

## 0.2.82¶

- Added support for --disallowedTools¶
- Renamed tools for consistency: LSTool -> LS, View -> Read, etc.¶

## 0.2.75¶

- Hit Enter to queue up additional messages while Claude is working¶
- Drag in or copy/paste image files directly into the prompt¶
- @-mention files to directly add them to context¶
- Run one-off MCP servers with `claude --mcp-config <path-to-file>`¶
- Improved performance for filename auto-complete¶

## 0.2.74¶

- Added support for refreshing dynamically generated API keys (via apiKeyHelper), with a 5 minute TTL¶
- Task tool can now perform writes and run bash commands¶

## 0.2.72¶

- Updated spinner to indicate tokens loaded and tool usage¶

## 0.2.70¶

- Network commands like curl are now available for Claude to use¶
- Claude can now run multiple web queries in parallel¶
- Pressing ESC once immediately interrupts Claude in Auto-accept mode¶

## 0.2.69¶

- Fixed UI glitches with improved Select component behavior¶
- Enhanced terminal output display with better text truncation logic¶

## 0.2.67¶

- Shared project permission rules can be saved in .claude/settings.json¶

## 0.2.66¶

- Print mode (-p) now supports streaming output via --output-format=stream-json¶
- Fixed issue where pasting could trigger memory or bash mode unexpectedly¶

## 0.2.63¶

- Fixed an issue where MCP tools were loaded twice, which caused tool call errors¶

## 0.2.61¶

- Navigate menus with vim-style keys (j/k) or bash/emacs shortcuts (Ctrl+n/p) for faster interaction¶
- Enhanced image detection for more reliable clipboard paste functionality¶
- Fixed an issue where ESC key could crash the conversation history selector¶

## 0.2.59¶

- Copy+paste images directly into your prompt¶
- Improved progress indicators for bash and fetch tools¶
- Bugfixes for non-interactive mode (-p)¶

## 0.2.54¶

- Quickly add to Memory by starting your message with '#'¶
- Press ctrl+r to see full output for long tool results¶
- Added support for MCP SSE transport¶

## 0.2.53¶

- New web fetch tool lets Claude view URLs that you paste in¶
- Fixed a bug with JPEG detection¶

## 0.2.50¶

- New MCP "project" scope now allows you to add MCP servers to .mcp.json files and commit them to your repository¶

## 0.2.49¶

- Previous MCP server scopes have been renamed: previous "project" scope is now "local" and "global" scope is now "user"¶

## 0.2.47¶

- Press Tab to auto-complete file and folder names¶
- Press Shift + Tab to toggle auto-accept for file edits¶
- Automatic conversation compaction for infinite conversation length (toggle with /config)¶

## 0.2.44¶

- Ask Claude to make a plan with thinking mode: just say 'think' or 'think harder' or even 'ultrathink'¶

## 0.2.41¶

- MCP server startup timeout can now be configured via MCP_TIMEOUT environment variable¶
- MCP server startup no longer blocks the app from starting up¶

## 0.2.37¶

- New /release-notes command lets you view release notes at any time¶
- `claude config add/remove` commands now accept multiple values separated by commas or spaces¶

## 0.2.36¶

- Import MCP servers from Claude Desktop with `claude mcp add-from-claude-desktop`¶
- Add MCP servers as JSON strings with `claude mcp add-json <n> <json>`¶

## 0.2.34¶

- Vim bindings for text input - enable with /vim or /config¶

## 0.2.32¶

- Interactive MCP setup wizard: Run "claude mcp add" to add MCP servers with a step-by-step interface¶
- Fix for some PersistentShell issues¶

## 0.2.31¶

- Custom slash commands: Markdown files in .claude/commands/ directories now appear as custom slash commands to insert prompts into your conversation¶
- MCP debug mode: Run with --mcp-debug flag to get more information about MCP server errors¶

## 0.2.30¶

- Added ANSI color theme for better terminal compatibility¶
- Fixed issue where slash command arguments weren't being sent properly¶
- (Mac-only) API keys are now stored in macOS Keychain¶

## 0.2.26¶

- New /approved-tools command for managing tool permissions¶
- Word-level diff display for improved code readability¶
- Fuzzy matching for slash commands¶

## 0.2.21¶

- Fuzzy matching for /commands¶

Unified Diff

--- a/CHANGELOG.md.md
+++ b/CHANGELOG.md.md
@@ -1,4 +1,9 @@
 # Changelog
+
+## 2.1.4
+
+- Added `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` environment variable to disable all background task functionality including auto-backgrounding and the Ctrl+B shortcut
+- Fixed "Help improve Claude" setting fetch to refresh OAuth and retry when it fails due to a stale OAuth token
 
 ## 2.1.3