+AddedallowRead sandbox filesystem setting to re-allow read access within `denyRead` regions
~Increased default maximum output token limits for Claude Opus 4.6 to 64k tokens, and the upper bound for Opus 4.6 and Sonnet 4.6 models to 128k tokens
~/copy now accepts an optional index: `/copy N` copies the Nth-latest assistant response
~Background bash tasks are now killed if output exceeds 5GB, preventing runaway processes from filling disk
~Sessions are now auto-named from plan content when you accept a plan
~Show a notice when apiKeyHelper takes longer than 10s, preventing it from blocking the main loop
~The Agent tool no longer accepts a `resume` parameter — use `SendMessage({to: agentId})` to continue a previously spawned agent
~SendMessage now auto-resumes stopped agents in the background instead of returning an error
~Renamed/fork to `/branch` (`/fork` still works as an alias)
~VSCodeWhen option+click doesn't trigger native selection on macOS, the footer now points to the `macOptionClickForcesSelection` setting
↑Faster startup on macOS (~60ms) by reading keychain credentials in parallel with module loading
↑Faster --resume on fork-heavy and very large sessions — up to 45% faster loading and ~100-150MB less peak memory
↑Improved Esc to abort in-flight non-streaming API requests
↑Improvedclaude plugin validate to check skill, agent, and command frontmatter plus `hooks/hooks.json`, catching YAML parse errors and schema violations
↑Improved headless mode plugin installation to compose correctly with `CLAUDE_CODE_PLUGIN_SEED_DIR`
↑VSCodeImproved plan preview tab titles to use the plan's heading instead of "Claude's Plan"
✓Fixed"Always Allow" on compound bash commands (e.g. `cd src && npm test`) saving a single rule for the full string instead of per-subcommand, leading to dead rules and repeated permission prompts
✓Fixed auto-updater starting overlapping binary downloads when the slash-command overlay repeatedly opened and closed, accumulating tens of gigabytes of memory
✓Fixed--resume silently truncating recent conversation history due to a race between memory-extraction writes and the main transcript
+Addedworktree.sparsePaths setting for `claude --worktree` in large monorepos to check out only the directories you need via git sparse-checkout
+AddedPostCompact hook that fires after compaction completes
+Added/effort slash command to set model effort level
+Added session quality survey — enterprise admins can configure the sample rate via the `feedbackSurveyRate` setting
~Updated--plugin-dir to only accept one path to support subcommands — use repeated `--plugin-dir` for multiple directories
↑Improved--worktree startup performance by reading git refs directly and skipping redundant `git fetch` when the remote branch is already available locally
↑Improved background agent behavior — killing a background agent now preserves its partial results in the conversation context
↑Improved model fallback notifications — now always visible instead of hidden behind verbose mode, with human-friendly model names
↑Improved blockquote readability on dark terminal themes — text is now italic with a left bar instead of dim
↑Improved stale worktree cleanup — worktrees left behind after an interrupted parallel run are now automatically cleaned up
↑ImprovedRemote Control session titles — now derived from your first prompt instead of showing "Interactive session"
↑Improved/voice to show your dictation language on enable and warn when your `language` setting isn't supported for voice input
✓Fixed deferred tools (loaded via `ToolSearch`) losing their input schemas after conversation compaction, causing array and number parameters to be rejected with type errors
✓Fixed slash commands showing "Unknown skill"
✓Fixed plan mode asking for re-approval after the plan was already accepted
✓Fixed voice mode swallowing keypresses while a permission dialog or plan editor was open
✓Fixed/voice not working on Windows when installed via npm
✓Fixed spurious "Context limit reached" when invoking a skill with `model:` frontmatter on a 1M-context session
✓Fixed"adaptive thinking is not supported on this model" error when using non-standard model strings
✓FixedBash(cmd:*) permission rules not matching when a quoted argument contains `#`
+Added last-modified timestamps to memory files, helping Claude reason about which memories are fresh vs. stale
+Added hook source display (settings/plugin/skill) in permission prompts when a hook requires confirmation
~Suppressed async hook completion messages by default (visible with `--verbose` or transcript mode)
−Breaking changeRemoved deprecated Windows managed settings fallback at `C:\ProgramData\ClaudeCode\managed-settings.json` — use `C:\Program Files\ClaudeCode\managed-settings.json`
↑Improved startup performance on macOS non-MDM machines by skipping unnecessary subprocess spawns
✓Fixed voice mode not activating correctly on fresh installs without toggling `/voice` twice
✓Fixed the Claude Code header not updating the displayed model name after switching models with `/model` or Option+P
✓Fixed session crash when an attachment message computation returns undefined values
✓Fixed Bash tool mangling ! in piped commands (e.g., `jq 'select(.x != .y)'` now works correctly)
✓Fixed managed-disabled plugins showing up in the `/plugin` Installed tab — plugins force-disabled by your organization are now hidden
✓Fixed token estimation over-counting for thinking and `tool_use` blocks, preventing premature context compaction
✓Fixed corrupted marketplace config path handling
✓Fixed/resume losing session names after resuming a forked or continued session
+Added actionable suggestions to `/context` command — identifies context-heavy tools, memory bloat, and capacity warnings with specific optimization tips
+AddedautoMemoryDirectory setting to configure a custom directory for auto-memory storage
~Changed--plugin-dir so local dev copies now override installed marketplace plugins with the same name (unless that plugin is force-enabled by managed settings)
↑VSCodeImproved scroll wheel responsiveness in the integrated terminal with terminal-aware acceleration
✓Fixed memory leak where streaming API response buffers were not released when the generator was terminated early, causing unbounded RSS growth on the Node.js/npm code path
✓Fixed managed policy ask rules being bypassed by user `allow` rules or skill `allowed-tools`
✓Fixed full model IDs (e.g., claude-opus-4-5) being silently ignored in agent frontmatter `model:` field and `--agents` JSON config — agents now accept the same model values as `--model`
✓FixedMCP OAuth authentication hanging when the callback port is already in use
✓FixedMCP OAuth refresh never prompting for re-auth after the refresh token expires, for OAuth servers that return errors with HTTP 200 (e.g. Slack)
✓Fixed voice mode silently failing on the macOS native binary for users whose terminal had never been granted microphone permission — the binary now includes the `audio-input` entitlement so macOS prompts correctly
✓FixedSessionEnd hooks being killed after 1.5 s on exit regardless of `hook.timeout` — now configurable via `CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS`
✓Fixed/plugin install failing inside the REPL for marketplace plugins with local sources
↑Improved clipboard image pasting performance on macOS
↑Improved/effort to work while Claude is responding, matching `/model` behavior
↑Improved voice mode to automatically retry transient connection failures during rapid push-to-talk re-press
↑Improved the Remote Control spawn mode selection prompt with better context
✓Fixed freezes and 100% CPU loops triggered by permission prompts for complex bash commands
✓Fixed a deadlock that could freeze Claude Code when many skill files changed at once (e.g. during `git pull` in a repo with a large `.claude/skills/` directory)
✓Fixed Bash tool output being lost when running multiple Claude Code sessions in the same project directory
✓Fixed subagents with model: opus/`sonnet`/`haiku` being silently downgraded to older model versions on Bedrock, Vertex, and Microsoft Foundry
✓Fixed background bash processes spawned by subagents not being cleaned up when the agent exits
✓Fixed/resume showing the current session in the picker
✓Fixed/ide crashing with `onInstall is not defined` when auto-installing the extension
✓Fixed/loop not being available on Bedrock/Vertex/Foundry and when telemetry was disabled
~Restored the model parameter on the Agent tool for per-invocation model overrides
~Simplified effort levels to low/medium/high (removed max) with new symbols (○ ◐ ●) and a brief notification instead of a persistent icon. Use `/effort auto` to reset to default
~ChangedCLAUDE.md HTML comments (`<!-- ... -->`) to be hidden from Claude when auto-injected. Comments remain visible when read with the Read tool
↑Improved/config — Escape now cancels changes, Enter saves and closes, Space toggles settings
↑Improved up-arrow history to show current session's messages first when running multiple concurrent sessions
↑Improved voice input transcription accuracy for repo names and common dev terms (regex, OAuth, JSON)
↑Improved bash command parsing by switching to a native module — faster initialization and no memory leak
↑Reduced bundle size by ~510 KB
↑Improved marketplace clone failure messages to show diagnostic info even when git produces no stderr
↑Improved CPU utilization in long sessions
✓Fixed tool search to activate even with `ANTHROPIC_BASE_URL` as long as `ENABLE_TOOL_SEARCH` is set.
✓Fixed slow exits when background tasks or hooks were slow to respond
✓Fixed agent task progress stuck on "Initializing…"
✓Fixed skill hooks firing twice per event when a hooks-enabled skill is invoked by the model
✓Fixed several voice mode issues: occasional input lag, false "No speech detected" errors after releasing push-to-talk, and stale transcripts re-filling the prompt after submission
✓Fixed--continue not resuming from the most recent point after `--compact`
✓Fixed bash security parsing edge cases
✓Fixedseveral plugin issues: installation failing on Windows with `EEXIST` error in OneDrive folders, marketplace blocking user-scope installs when a project-scope install exists, `CLAUDE_CODE_PLUGIN_CACHE_DIR` creating literal `~` directories, and `plugin.json` with marketplace-only fields failing to load
+Added/loop command to run a prompt or slash command on a recurring interval (e.g. `/loop 5m check the deploy`)
+Added cron scheduling tools for recurring prompts within a session
+Addedvoice:pushToTalk keybinding to make the voice activation key rebindable in `keybindings.json` (default: space) — modifier+letter combos like `meta+k` have zero typing interference
+Addedfmt, `comm`, `cmp`, `numfmt`, `expr`, `test`, `printf`, `getconf`, `seq`, `tsort`, and `pr` to the bash auto-approval allowlist
~Updated/debug to toggle debug logging on mid-session, since debug logs are no longer written by default
−Removed startup notification noise for unauthenticated org-registered claude.ai connectors
↑Improved startup time by deferring native image processor loading to first use
↑Improved bridge session reconnection to complete within seconds after laptop wake from sleep, instead of waiting up to 10 minutes
↑Improved/plugin uninstall to disable project-scoped plugins in `.claude/settings.local.json` instead of modifying `.claude/settings.json`, so changes don't affect teammates
↑Improved plugin-provided MCP server deduplication — servers that duplicate a manually-configured server (same command/URL) are now skipped, preventing duplicate connections and tool sets. Suppressions are shown in the `/plugin` menu.
✓Fixed stdin freeze in long-running sessions where keystrokes stop being processed but the process stays alive
✓Fixed a 5–8 second startup freeze for users with voice mode enabled, caused by CoreAudio initialization blocking the main thread after system wake
✓Fixed startup UI freeze when many claude.ai proxy connectors refresh an expired OAuth token simultaneously
✓Fixed forked conversations (/fork) sharing the same plan file, which caused plan edits in one fork to overwrite the other
✓Fixed the Read tool putting oversized images into context when image processing failed, breaking subsequent turns in long image-heavy sessions
+VSCodeAdded spark icon in VS Code activity bar that lists all Claude Code sessions, with sessions opening as full editors
+VSCodeAdded full markdown document view for plans in VS Code, with support for adding comments to provide feedback
+VSCodeAdded native MCP server management dialog — use `/mcp` in the chat panel to enable/disable servers, reconnect, and manage OAuth authentication without switching to the terminal
↑Improved error message when microphone captures silence to distinguish from "no speech detected"
↑Improved compaction to preserve images in the summarizer request, allowing prompt cache reuse for faster and cheaper compaction
↑Improved/rename to work while Claude is processing, instead of being silently queued
↑Reduced prompt input re-renders during turns by ~74%
↑Reduced startup memory by ~426KB for users without custom CA certificates
↑Reduced Remote Control /poll rate to once per 10 minutes while connected (was 1–2s), cutting server load ~300×. Reconnection is unaffected — transport loss immediately wakes fast polling.
✓FixedAPI 400 errors when using `ANTHROPIC_BASE_URL` with a third-party gateway — tool search now correctly detects proxy endpoints and disables `tool_reference` blocks
✓FixedAPI Error: 400 This model does not support the effort parameter when using custom Bedrock inference profiles or other model identifiers not matching standard Claude naming patterns
✓Fixed empty model responses immediately after `ToolSearch` — the server renders tool schemas with system-prompt-style tags at the prompt tail, which could confuse models into stopping early
✓Fixed prompt-cache bust when an MCP server with `instructions` connects after the first turn
✓Fixed Enter inserting a newline instead of submitting when typing over a slow SSH connection
✓Fixed clipboard corrupting non-ASCII text (CJK, emoji) on Windows/WSL by using PowerShell `Set-Clipboard`
✓Fixed extra VS Code windows opening at startup on Windows when running from the VS Code integrated terminal
✓Fixed voice mode failing on Windows native binary with "native audio module could not be loaded"
+Added optional name argument to `/remote-control` and `claude remote-control` (`/remote-control My Project` or `--name "My Project"`) to set a custom session title visible in claude.ai/code
+AddedVoice STT support for 10 new languages (20 total) — Russian, Polish, Turkish, Dutch, Ukrainian, Greek, Czech, Danish, Swedish, Norwegian
+Added effort level display (e.g., "with low effort") to the logo and spinner, making it easier to see which effort setting is active
+Added agent name display in terminal title when using `claude --agent`
+Addedsandbox.enableWeakerNetworkIsolation setting (macOS only) to allow Go programs like `gh`, `gcloud`, and `terraform` to verify TLS certificates when using a custom MITM proxy with `httpProxyPort`
+AddedincludeGitInstructions setting (and `CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` env var) to remove built-in commit and PR workflow instructions from Claude's system prompt
+Added/reload-plugins command to activate pending plugin changes without restarting
+Added a one-time startup prompt suggesting Claude Code Desktop on macOS and Windows (max 3 showings, dismissible)
~ChangedSonnet 4.5 users on Pro/Max/Team Premium to be automatically migrated to Sonnet 4.6
~Changed the /resume picker to show your most recent prompt instead of the first one. This also resolves some titles appearing as `(session)`.
~Changed claude.ai MCP connector failures to show a notification instead of silently disappearing from the tool list
~Changed example command suggestions to be generated deterministically instead of calling Haiku
~Changed resuming after compaction to no longer produce a preamble recap before continuing
~SDKChanged task creation to no longer require the `activeForm` field — the spinner falls back to the task subject
~VSCodeThe permission mode picker now respects `permissions.disableBypassPermissionsMode` from your effective Claude Code settings (including managed/policy settings) — when set to `disable`, bypass permissions mode is hidden from the picker
↑Improved spinner performance by isolating the 50ms animation loop from the surrounding shell, reducing render and CPU overhead during turns
↑Improved UI rendering performance in native binaries with React Compiler
↑Improved--worktree startup by eliminating a git subprocess on the startup path
↑Improved macOS startup by eliminating redundant settings-file reloads when managed settings resolve
↑Improved macOS startup for Claude.ai enterprise/team users by skipping an unnecessary keychain lookup
↑Improved MCP -p startup by pipelining claude.ai config fetch with local connections and using a concurrency pool instead of sequential batching
↑Improved voice startup by removing imperceptible warmup pulse animations that were causing re-render stutter
↑ImprovedMCP binary content handling: tools returning PDFs, Office documents, or audio now save decoded bytes to disk with the correct file extension instead of dumping raw base64 into the conversation context. WebFetch also saves binary responses alongside its summary.
✓Fixed a security issue where nested skill discovery could load skills from gitignored directories like `node_modules`
✓Fixed trust dialog silently enabling all `.mcp.json` servers on first run. You'll now see the per-server approval dialog as expected
✓Fixedclaude remote-control crashing immediately on npm installs with "bad option: --sdk-url" (anthropics/claude-code#28334)
✓Fixed--model claude-opus-4-0 and `--model claude-opus-4-1` resolving to deprecated Opus versions instead of current
✓Fixed macOS keychain corruption when using multiple OAuth MCP servers. Large OAuth metadata blobs could overflow the `security -i` stdin buffer, silently leaving stale credentials behind and causing repeated `/login` prompts.
✓Fixed.credentials.json losing `subscriptionType` (showing "Claude API" instead of "Claude Pro"/"Claude Max") when the profile endpoint transiently fails during token refresh (anthropics/claude-code#30185)
✓Fixed ghost dotfiles (.bashrc, `HEAD`, etc.) appearing as untracked files in the working directory after sandboxed Bash commands on Linux
✓Fixed Shift+Enter printing [27;2;13~ instead of inserting a newline in Ghostty over SSH
~Opus 4.6 now defaults to medium effort for Max and Team subscribers. Medium effort works well for most tasks — it's the sweet spot between speed and thoroughness. You can change this anytime with `/model`
~Re-introduced the "ultrathink" keyword to enable high effort for the next turn
−RemovedOpus 4 and 4.1 from Claude Code on the first-party API — users with these models pinned are automatically moved to Opus 4.6
+Added manual URL paste fallback during MCP OAuth authentication. If the automatic localhost redirect doesn't work, you can paste the callback URL to complete authentication.
+Added"Always copy full response" option to the `/copy` picker. When selected, future `/copy` commands will skip the code block picker and copy the full response directly.
+VSCodeAdded session rename and remove actions to the sessions list
~Project configs & auto memory now shared across git worktrees of the same repository
↑Improved/model command to show the currently active model in the slash command menu
↑Improved memory usage in long sessions with subagents by stripping heavy progress message payloads during context compaction
✓Fixed local slash command output like /cost appearing as user-sent messages instead of system messages in the UI
✓Fixed listener leak in bridge polling loop
✓Fixed listener leak in MCP OAuth flow cleanup
✓Fixed memory leak when navigating hooks configuration menu
✓Fixed listener leak in interactive permission handler during auto-approvals
+Added/copy command to show an interactive picker when code blocks are present, allowing selection of individual code blocks or the full response.
~Claude automatically saves useful context to auto-memory. Manage with /memory
↑Improved"always allow" prefix suggestions for compound bash commands (e.g. `cd /tmp && git fetch && git push`) to compute smarter per-subcommand prefixes instead of treating the whole command as one