Release notes

FEATURE

Unattended Retry Mode Adds Configurable Usage Limit Wait Threshold

When leaving Claude running extensive tasks in the background overnight, hitting usage limits and idling mid-job is a constant worry. Previously, with unattended retry mode enabled (CLAUDE_CODE_RETRY_WATCHDOG, a background watchdog that automatically retries on errors), hitting a usage limit caused the process to wait indefinitely, even if the reset time was hours away. The new CLAUDE_CODE_RETRY_WATCHDOG_MAX_USAGE_LIMIT_WAIT_MS environment variable decisively terminates the request whenever the reset wait time exceeds your configured millisecond threshold.

FEATURE

Vim Mode Adds Bracket Matching and Key State Switching

For Vim users accustomed to navigating code quickly with terminal shortcuts, handling now feels closer to the native editor. Vim mode introduces the % motion to jump between matching brackets, which also pairs with d, c, and y for delete, change, or yank operations. Previously, pressing Esc on heavily loaded machines could get stuck in INSERT (the state for typing text) without switching. Free-text fields in prompt inputs now support NORMAL (the navigation state for motions and commands). Pressing Esc now drops back to normal mode first, and only cancels when pressed again in normal mode, preventing your typed answer from being wiped out.

FEATURE

OpenTelemetry Tracing Guidance and Expanded Tool Decision Event Attributes

Observability logs now record more detail when tracking why Claude invokes tools in enterprise dashboards. Configuration guidance for OpenTelemetry (an open-source standard for tracking execution traces across systems) is now included in the claude-api skill, covering how to configure export destinations with the ant tool. The tool_decision event adds classifier_verdict and permission_mode fields, helping administrators distinguish classifier decisions in auto mode (the setting allowing Claude to execute autonomously) from existing permission rules. When OTEL_LOG_TOOL_DETAILS=1 is enabled, tool_decision events where the classifier blocks an action also record the triggered built-in rule name in classifier_category.

FEATURE

Mod Extensions Add Multi-Line Input and Standardized Return States

Interface and flow control become more precise when authoring a Mod (modules that extend Claude's capabilities). The Input component adds a rows prop for multi-line terminal input, submitting on Enter and inserting newlines on Shift+Enter or backslash. Calling $.model.fork before the initial response finishes in claude -p or cloud sessions no longer throws nothing-to-fork. Prompt tree lists now support Markdown with up to 48 lines across desktop, mobile, and VS Code, while staying at 12 lines in the terminal. The .catch handler on a hook (small programs triggered by specific events) now runs only on thrown exceptions or timeouts, and events generated by internal calls are no longer forwarded back to the hook itself. The $.env.set method for setting or unsetting environment variables now returns {} on successful operations, and { deny } with a reason when writes are skipped.

FEATURE

Model Switching Flow and Long Conversation Auto-Summarization Improvements

Switching mid-conversation to a model with a smaller context window is now much smoother when transferring long dialogs. A context window represents the maximum text volume a model can read at once. When conversations run too long, the original model is asked to summarize them first, resolving an issue where quota was deducted for summarization without asking. When using fable or best aliases through the Anthropic API, organizations without access to the latest Fable release will automatically fall back to the prior version and retry once. Non-Bedrock custom model names that include application-inference-profile no longer mistakenly run awsAuthRefresh and delay hooks. When connecting through a gateway, differing model names returned by the server will no longer cause repeated conversation compression using an unselected model.

BUGFIX

Skill Parameter Hydration Performance and Plugin Permission Attribution Fixes

Invoking commands and confirming permissions is now cleaner and more transparent when projects install numerous custom skills or plugins. Previously, skills (playbooks expanding domain knowledge and commands) and commands with too many or excessively long parameter names stuttered for seconds during invocation. Hydration is now limited to the first 64 names with a maximum of 64 characters each. An issue where skills, commands, and hooks consumed excessive memory while hydrating numerous placeholders has been resolved. The skill catalog no longer vanishes from the model after running /rewind to roll back conversations, and documentation in /claude-api mistakenly claiming the Claude platform on AWS lacks CMEK external key endpoint support has been corrected. When a plugin or skill hook triggers an ask prompt for decisions, the confirmation dialog now clearly labels which plugin or skill originated the hook.

BUGFIX

Account Login and Credential Refresh Fixes

Error messages are clearer when login refresh fails, and running quick commands will no longer cause accidental logouts if they terminate mid-refresh. Previously, when disk space filled up completely, the system failed to refresh login credentials and instead displayed a confusing "Please run /login" error message. It now identifies the exact disk that is out of space and explicitly prompts you to remove files to free up room. When running quick commands like claude auth status or claude plugin list, if the command exited while refreshing a token (an authorization ticket used to verify identity), it previously triggered refresh timeouts and unexpected logouts. These login refresh timeouts and accidental sign-outs are now fixed.

BUGFIX

Artifact Publishing Updates and Mobile Layout Rendering Fixes

Updating content and previewing on phones is now more reliable when asking Claude to produce standalone web pages or document artifacts. In environments configured with PreToolUse hooks that intercept edits or writes, updating artifacts previously met with outright rejection. Claude now edits the file normally before republishing, instead of attempting to modify files directly inside the publishing call. In the mobile app, text on Claude-generated web pages previously bled above the sticky header during scrolling. The top header band now renders solid background fill, preventing scrolled content from showing through.

BUGFIX

File Reading, Search Tools, and Git Operation Fixes

Underlying inspection tools report results more faithfully and safely when auditing source code or comparing version diffs. When search processes crashed unexpectedly, search tools like Grep and Glob previously returned empty results. They now properly throw errors to report the search failure. The Read tool no longer mistakenly ingests binary files such as .xlsm, .parquet, .epub, and .heic as plain text. When exiting Claude Code, Git worktrees (capabilities allowing parallel copies of the same project) created via WorktreeCreate hooks are no longer silently deleted if unpushed commits remain. In Git repositories using the reftable format, the /diff command no longer misses conflicted cherry-pick or revert operations if underlying inspections time out or fail.

BUGFIX

Workflow Automation and Background Command Execution Fixes

Background steps and permission controls are significantly more dependable when orchestrating multi-agent or scripted project automations. When workflow agents encountered framework notes indicating missing user authorization in task descriptions, they previously skipped steps while falsely reporting success, an issue that is now fixed. After running Bash cd to change directories within the same session, reading, editing, or re-running workflow scripts no longer prompts unexpected permission requests or fails with rejections. Tool calls interrupted by incoming mid-turn messages during permission evaluation are no longer falsely reported to the model as user rejections. On Windows, output files from terminated background PowerShell commands that previously missed the trailing [killed] indicator now append it properly.

BUGFIX

Fixes for Terminal Text Artifacts, Table Layout, and Dark Theme Colors

When opening a terminal to run commands, character boundaries and color gradations on screen are now cleaner and easier to read. In environments such as MATE Terminal on RHEL 8 that use older versions of VTE (terminal emulator core component, versions below 0.53), fixes resolve >0q obscuring folder trust prompts and >4m noise appearing upon exit. A bug where leftover GOK text appeared in front of the prompt upon launching certain iTerm2 versions has been fixed. Markdown tables containing only a header row previously failed to render completely when their width exceeded the terminal (including tables appearing in plan approval cards), but they now draw properly. Under dark ANSI themes and 16-color terminals, text inside filled boxes remains dimmed, but it is no longer dimmed under selections and search highlights, and list descriptions are also correctly dimmed like secondary text.

FEATURE

Optimizations for Session Compaction, Prompts, and Subagent Progress Updates

When engaging in lengthy conversations or dispatching subtasks, the interface no longer freezes briefly from heavy data loads. A brief UI stutter caused by rebuilding visible message history when running /compact or automatic compaction in fullscreen mode has now been fixed. During long-running subagent (an agent that independently performs a specific subtask) tasks, progress history now updates incrementally instead of recalculating the entire trail on every render. When resuming a previous session, the compaction prompt bar no longer offers a Ctrl+O shortcut that fails to load history, but instead clearly explains the path where earlier messages are stored, and this prompt now displays properly in fullscreen mode as well. When you interrupt a response midway, a prompt that previously appeared immediately suggesting /clear to clear conversations and save tokens no longer pops up right away to cause disruption. Tokens are units of text used for AI processing and billing.

BUGFIX

Fixes for Self-Hosted Runner Session Retries and Repository Attachment

When integrating team chat apps and using self-hosted runners, session launch and teardown become significantly more reliable. A fix resolves an issue where sessions launched from Slack failed to find or mount repositories when managed settings restricted MCP (Model Context Protocol, a protocol that connects AI to external tools) servers. If specific tools must be disabled, deniedMcpServers can be configured in settings. A bug has been fixed where unrelated environment settings or session failure messages citing missing Git reference wording caused sessions to be misidentified as having a deleted source branch, preventing retries. If a terminating session fails or is rejected while releasing resources, logs no longer promise retries. Repeated failures now display the failure count.

BUGFIX

VS Code Extension Support for Mathematical Formulas and Panel Performance Fixes

Formulas render more cleanly and conversation interactions feel smoother when discussing problems with Claude in the VS Code panel. Claude's responses now support LaTeX mathematical formulas, including standalone paragraph $$, multiline \[ … \], and inline $…$ or \(…\) syntax. In VS Code and JetBrains panels, a "Get more usage" link has been added to the usage limit banner for Pro and Max plans. A fix resolves a vicious cycle where a conversation that crashed or froze the panel was forcefully reopened every time the window reloaded. Panel slowdowns during extended thinking have been resolved by no longer reparsing the entire thinking text on every update. When certain language servers report issues, they no longer display [object Object], correctly showing rule identifiers instead (such as MD013). Environments without dictation, such as non-claude.ai logins or remote windows, no longer load the native audio module to check microphone permissions.

Original changelog

Original changelogUnattended Retry Mode Adds Configurable Usage Limit Wait Threshold
Added `CLAUDE_CODE_RETRY_WATCHDOG_MAX_USAGE_LIMIT_WAIT_MS` so unattended retry mode (`CLAUDE_CODE_RETRY_WATCHDOG`) ends a request at a usage limit that resets too far away instead of waiting
Original changelogVim Mode Adds Bracket Matching and Key State Switching
Added the `%` motion to vim mode: jump to the matching bracket, alone or with d/c/y
Fixed vim mode sometimes staying in INSERT after Escape on a slow or busy machine
Fixed Esc discarding a typed AskUserQuestion answer in vim mode: the free-text field now supports vim NORMAL mode, and Esc cancels only from NORMAL
Original changelogOpenTelemetry Tracing Guidance and Expanded Tool Decision Event Attributes
Added OpenTelemetry tracing guidance to the `claude-api` skill, including setting up trace destinations with the `ant` CLI
Added `classifier_verdict` and `permission_mode` to OpenTelemetry `tool_decision` events, so auto mode classifier decisions can be told apart from permission rules
Added `classifier_category` to OpenTelemetry `tool_decision` events, naming the built-in rule a classifier block matched, when `OTEL_LOG_TOOL_DETAILS=1`
Original changelogMod Extensions Add Multi-Line Input and Standardized Return States
Added `rows` to a mod's `Input`: a text field of several lines in the terminal, where Enter submits and Shift+Enter or a backslash before Enter starts a new line
Fixed a mod's `$.model.fork` returning `nothing-to-fork` when called before the first response of a new Claude Code process had finished, as in `claude -p` runs and cloud sessions
Improved mods: in VS Code and the desktop and mobile apps, a tree drawn above the question dialog can now hold Markdown and up to 48 rows; the terminal keeps 12 plain rows
Changed a mod hook's `.catch` handler to run only when the hook throws or times out; events raised beneath the hook's own calls now skip that hook without asking its `.catch`
Changed a mod's `$.env.set` to resolve with `{}` once the variable is set or unset, or with `{ deny }` saying why when the write is not made
Original changelogModel Switching Flow and Long Conversation Auto-Summarization Improvements
Fixed the `fable` (and `best`) model alias erroring on the Anthropic API when the newest Fable model is not available to your organization: Claude Code now retries once on the previous Fable model
Fixed switching to a model whose name contains `application-inference-profile` running your `awsAuthRefresh` command and delaying model-switch hooks when the provider is not Bedrock
Fixed a case where switching to a model with a smaller context window could spend usage credits on a summary by the previous model without asking first
Fixed conversations being compacted over and over, on a model you didn't pick, behind an LLM gateway whose responses name a different model than the one requested
Improved switching to a model with a smaller context window: a conversation too long for the new model is now summarized by the previous model first
Original changelogSkill Parameter Hydration Performance and Plugin Permission Attribution Fixes
Fixed skills and commands with very many or very long argument names stalling for seconds when invoked; only the first 64 names, each up to 64 characters, are now filled in
Fixed skills, commands and hooks using very large amounts of memory when their arguments fill many placeholders
Fixed the /claude-api skill saying CMEK external-key endpoints aren't available on Claude Platform on AWS
Fixed skills no longer being listed to the model after using `/rewind`
Fixed the permission prompt for a plugin or skill hook's `ask` decision not showing which plugin or skill the hook comes from
Original changelogAccount Login and Credential Refresh Fixes
Fixed a misleading "Please run /login" error when a full disk keeps the login from being refreshed; the error now names the disk and says to delete files
Fixed sign-in refresh timeouts and unexpected sign-outs after a short command such as `claude auth status` or `claude plugin list` exited in the middle of a token refresh
Original changelogArtifact Publishing Updates and Mobile Layout Rendering Fixes
Fixed artifact updates being refused where a PreToolUse hook covers Edit or Write; Claude now edits the file and then republishes instead of changing it in the publish call
Improved artifacts: pages Claude writes now paint the band above a sticky header, so scrolled text no longer shows there in the mobile apps
Original changelogFile Reading, Search Tools, and Git Operation Fixes
Fixed quitting removing a worktree made by a `WorktreeCreate` hook without asking when it may hold unpushed commits
Fixed Grep and Glob reporting no matches when the search program failed unexpectedly before returning any results; they now return an error saying the search failed
Fixed the Read tool reading binary files such as .xlsm, .parquet, .epub and .heic as text
Fixed `/diff` not noticing a conflicted cherry-pick or revert in reftable repositories when one of its git checks timed out or failed
Original changelogWorkflow Automation and Background Command Execution Fixes
Fixed workflow agents sometimes skipping their step, and the run still reporting success, after reading the harness note that their task text carries no user authority
Fixed a tool call cut off by a message sent mid-turn during its permission check being reported to the model as rejected by the user
Fixed workflow scripts asking for permission or being refused when read, edited or re-run after a Bash `cd` in the same session
Windows: Fixed stopped background PowerShell commands missing the closing `[killed]` line in their output file
Original changelogFixes for Terminal Text Artifacts, Table Layout, and Dark Theme Colors
Fixed stray characters such as `>0q` covering the folder trust prompt, and `>4m` before the shell prompt at exit, in terminals built on VTE older than 0.53 such as MATE Terminal on RHEL 8
Fixed stray `GOK` text appearing in the prompt at startup in some versions of iTerm2
Fixed a Markdown table with only a header row drawing nothing when too wide for the terminal, including in plans on the plan approval card
Fixed dim text on the dark ANSI theme and 16-color terminals: faint inside filled boxes, not faint under selection and search highlights, and list descriptions dimmed like other secondary text
Original changelogOptimizations for Session Compaction, Prompts, and Subagent Progress Updates
Fixed the compaction row in a resumed session offering ctrl+o for history that is not loaded; it now says where the earlier messages are saved, and also shows in fullscreen
Fixed the "new task? /clear to save tokens" hint coming back right after you interrupt a response
Fullscreen mode: Fixed `/compact` and auto-compact briefly freezing the UI while the visible transcript is rebuilt
Improved rendering performance while a long-running subagent works: its progress trail now updates incrementally instead of being reprocessed in full on every render
Original changelogFixes for Self-Hosted Runner Session Retries and Repository Attachment
Self-hosted runner: Fixed sessions started from Slack being unable to find or attach a repository when managed settings restrict MCP servers; use `deniedMcpServers` to keep those tools off
Self-hosted runner: Fixed sessions being reported as having a deleted source branch, and not retried, when an unrelated setup or session failure quoted git's missing-ref wording
Self-hosted runner: Fixed the log promising a retry of a failed or declined session release for a session that is ending; repeated failures now show a count
Original changelogVS Code Extension Support for Mathematical Formulas and Panel Performance Fixes
[VSCode] Added LaTeX math rendering in Claude's responses, including `$$` and multi-line `\[ … \]` blocks and inline `$…$` and `\(…\)` math
[VSCode] Added a "Get more usage" link to the usage-limit banner for Pro and Max plans in the VS Code and JetBrains panels
[VSCode] Fixed a conversation that crashes or freezes the panel being reopened on every reload
[VSCode] Fixed the chat panel slowing down during long thinking: it no longer re-parses the whole thinking text on every update
[VSCode] Fixed diagnostics showing "[object Object]" instead of the rule code (e.g. MD013) for some language servers
[VSCode] Fixed the native dictation audio module being loaded, to check microphone permission, where dictation is not offered (non-claude.ai sign-ins, remote windows)