Release notes

BUGFIX

Hooks Block Failed Actions and Close Shielding Gaps During Reloads

When you add custom hooks (small programs triggered by specific events), startup failures can now block actions. Command and HTTP hooks support onFailure: "block", blocking subsequent actions if they fail to start, time out, or return an unexpected exit code. Deeply nested tool inputs are no longer truncated to bypass protections. During plugin hook worker restarts and module reloads, calls that previously bypassed another module's shielding hook with .catch are now rejected. Multi-line JSON printed by async hooks is parsed correctly, and cloud sessions no longer hang when a session.receive hook requests permissions upfront. If a tool execution is rejected by a plugin after running, both Claude and you are informed that the tool executed but its output was intercepted.

BUGFIX

Plugin Marketplace Adds Install Warnings and Fixes Accidental Deletion

When managing extensions, silent configuration load failures can cause unexpected issues. Running claude plugin install, enable, disable, or adding a marketplace now issues a warning if the target configuration file fails to load. Pressing Enter on the /plugin error tab no longer removes the marketplace and its plugins without confirmation. Adding a marketplace is rejected if its name cannot be used to install plugins; adding or refreshing marketplaces with large Git submodules now fetches only submodules containing plugin files. Submodules are separate repositories nested inside a repository. When claude plugin validate finds a README missing install instructions, it prints pasteable suggestions without affecting the exit code, even when using --strict. When a hook module is rejected due to top-level var rebinding, the error message indicates the line number, reason, and remediation.

FEATURE

Richer Module UI Buttons with Upgraded Notification Priorities and Authoring Guidance

When building or using custom UI modules, layout and alerting options are now more flexible. Modules can now deliver native desktop notifications via $.ui.notify respecting system preferences and clearly attributing the source. Button components support text child nodes, allowing labels or secondary details to be rendered within a single clickable button. Toast popups published by your organization are prioritized ahead of other modules. The built-in plugin authoring skill no longer prompts to run commands in sessions without a terminal and only explains sharing flows when asked. When Workflow (a workflow tool) rejects scriptPath, it prompts you to use script to pass inline scripts instead, which works in sessions without Read tools.

BUGFIX

Plugin Hot Reload Captures Missed Saves and Stops Repeated Confirmation Prompts

When modifying extension modules and inspecting changes in real time, missed file saves can leave you looking at outdated code. Hot reload (applying code changes immediately without restarting) has fixed two missed save cases: saving files while /reload-plugins or session startup is reading module files, and saving again within milliseconds of the previous reload. Reload prompts allowed without an explicit selection no longer recur every turn. If an SDK host dismisses prompts before answering, the prompt appears up to three times rather than disabling hot reload for the entire session. Plugin options named constructor or prototype no longer continuously read default values and reload cleanly after edits. Plugins with large UI surfaces no longer cause another plugin to unload when a plugin hook worker stalls.

BUGFIX

Plugin Config Changes Strictly Inspected and Prompt History Cleared of Invalid Entries

When managing session settings or rewriting inputs via plugins, configs and histories should reflect plugin decisions. Using /model, /fast, /output-style, or toggling auto-update channels in /config now consults config.set hooks (small programs triggered by specific events) before persisting settings. After a prompt.submit hook rewrites or discards input, prompt history and session pending prompt logs no longer retain the original input prior to rewriting or discarding. claude plugin test no longer erroneously passes session.append hooks that strip tool calls, tool results, or thinking blocks, which are preserved in real sessions. Headless -p and SDK sessions no longer write generated type definitions to the --plugin-dir folder, writing only to the module location under active development. An issue where hook module code nested thousands of levels deep failed loading or validation with only a stack overflow error has also been fixed.

BUGFIX

Windows Plugin Loading and Install Records Fixed Along with Cache Misclassification

When using plugins on Windows or across multiple connection environments, path and governance misclassifications can arise. An issue where VS Code on Windows failed to load project-scoped plugins due to drive letter casing mismatches has been fixed. Windows operations with plugin install and uninstall in project or local scopes no longer drop install records or add duplicates because of C: versus c: differences. In long-running sessions, hooks no longer falsely report "Plugin directory does not exist" after another session syncs claude.ai plugin updates. On machines where managed configurations list or enable plugins, a bug where a tampered server-managed config cache misclassified personal plugins as organization-managed plugins has also been resolved.

FEATURE

Enterprise Gateway Adds Streaming Timeouts and Restricts Fallback Forwarding by Model List

When enterprises route cloud model requests through a gateway, they can constrain wait times and model destinations. timeouts.upstream_ttfb_ms configures the time-to-first-byte waiting threshold in milliseconds for upstreams like Bedrock, Vertex, and Foundry, switching to fallbacks or returning a 502 on timeout. Each upstream can define a models list to route only listed models, which also constrains fallback routing; a single * in each entry acts as a wildcard. When Amazon Bedrock is located outside AWS US regions, model requests not listed under models: were previously rejected by AWS; the gateway now tries your own region and, if still rejected, identifies which model needs to be added. Background requests prioritize Haiku 4.5, falling back to the session's original model only when the gateway does not provide it.

FEATURE

Enterprise Gateway Enforces Login Redirection and Links Audit Logs to Cloud Requests

Enterprises needing centralized governance over employee login channels and usage trails can configure login destinations and correlate request logs. Machines without managed configurations can add forceLoginMethod: "gateway" and forceLoginGatewayUrl in user settings to direct /login to the designated gateway. Model inference audit logs now include upstream_request_id, and successful response headers append request-id to facilitate cross-referencing between cloud upstreams, gateway logs, and Claude Code telemetry. When a machine has OpenTelemetry (a standard for collecting monitoring data) configured or a session is logged into the gateway, login authentication events are properly exported. If the gateway encounters desktop policy keys not yet recognized by the bundled Claude Desktop schema, it starts with a warning and serves the configuration without requiring a gateway upgrade for new desktop settings.

BUGFIX

Enterprise Gateway Adopts AWS CountTokens and Fixes Spend Limits and Fable Menus

When administrators review gateway usage, sessions moved out of a group no longer retain stale groups or spend limits. The Amazon Bedrock gateway now uses the AWS CountTokens API to calculate tokens (text units used for AI processing and billing) instead of requesting a single token from the model, serving /context and large file reads; this requires granting bedrock:CountTokens permissions. When the PostgreSQL database enters a read-only state, warnings are logged every 30 seconds detailing failed operations and remediation steps. CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC no longer hides gateway spend limits from /usage and the status line, and spend limit requests are routed to the gateway logged into by the current session. For sessions logged into a gateway, Fable models in availableModels are now displayed in the /model menu, replacing modelPicker rows with built-in rows for the same model.

FEATURE

Core Tool Parameter Parsing Loosened and Restricted Modes Strictly Controlled

When having AI execute commands or read files, minor parameter differences no longer break tool invocations. Bash (a tool for running terminal commands) no longer fails when receiving command_description instead of description; Read treats an empty pages parameter as unset. Grep searches now support appending -l, -c, and -r flags without causing call failures. Restrictions from --tools and --restricted apply to built-in tools registered after startup, and deprecated tool names no longer bypass caller toolsets. Bash permission checks for wildcard loops have been fixed. When feature flags (switches controlling whether features are enabled) cannot be retrieved, Claude 3 Opus and Claude 3.x Sonnet sessions are no longer offered tool searches they would otherwise reject.

FEATURE

Smart Fallback for 1-Million Context Requests and Accurate File Change Detection

Communication between the system and models is more resilient when handling massive codebases or very long contexts. When using models tagged with 1-million context ([1m]), if the cloud platform rejects the test flag, the system automatically removes the flag and resends the request so the entire batch does not immediately fail. For file reading and writing, editor tools no longer assume a file has been read in its entirety if the modified timestamp remains unchanged despite content updates, or if a terminal command produces no output. When large file uploads fail without a specified reason, the explanation given to Claude is improved, reporting failure rather than shrinking the file. Issues where web searches and agent hooks (small programs triggered by specific events) took excessively long to evaluate under xhigh and max thinking efforts have been fixed.

BUGFIX

Backoff Reconnection for External Tools and Recovery from Extended Disconnects

Connecting to remote tools in headless mode (an execution mode without a terminal window) or SDK integrations no longer remains permanently offline after a disconnection. An issue where remote MCP (a protocol connecting AI to external tools) servers failed to reconnect after disconnecting for over 15 seconds has been fixed. When connections drop repeatedly right after connecting, reconnection intervals now back off progressively up to 30 seconds. Server error responses containing network error names no longer mistakenly terminate connections, and duplicate pagination cursors no longer fetch the same page repeatedly. Pressing interrupt while awaiting resource lists now terminates the turn without waiting for timeouts. WebSocket transports receiving messages over 16 MiB now skip parsing and close the connection, matching limits on other transports.

BUGFIX

Precise File Type Detection for External Tools and Expanded Tool Description Limits

File formats are now preserved correctly when returning code, style, or icon files through external tools. Previously, CSS, JavaScript, and XML returned by MCP (a protocol connecting AI to external tools) tools were often saved as .bin, causing Read to reject them; now these files as well as fonts and icons receive matching extensions. The description limit loaded by tool search has been expanded from 2,048 to 16,384 characters. Background Bash results in claude mcp serve now state the output filename, and tool descriptions have been corrected to remove promises of notifications that never arrive. In installations that do not fetch feature flags, the claude.ai connector negotiates MCP protocol version 2026-07-28 by default. Feature flags are switches controlling whether capabilities are enabled, and you can opt out of this negotiation change using MCP_PROTOCOL_NEGOTIATION=legacy.

BUGFIX

Transparent Background Task Status for MCP Tools and Reduced Prompts in Non-Interactive Mode

Synchronization of task activity is clearer when running long-running MCP (a protocol connecting AI to external tools) tool calls in the background. If you manually abort a running MCP tool from the task popover or connected client, Claude learns that the tool has stopped. System notifications displayed when tools move to the background now show the full task ID for easy identification. In automated, unattended non-interactive sessions, unnecessary authentication prompts no longer appear when tasks do not require specific MCP servers. In headless mode (an execution mode without a terminal window) and SDK sessions, delayed logins or reconnections no longer mistakenly list MCP servers configured via setMcpServers() as user-provided servers.

BUGFIX

Fixed Subagent Work Environments, Message Passing, and Skill Preloading

When subagents (AI assistants running subtasks in parallel) work in separate worktrees, they no longer mix in Git branches, status, and recent commits from the primary session. A worktree is a parallel copy of the same project. Workflow subagent skill results now return to callers, and initial SendMessage calls between peer agents no longer fail due to unloaded tools. When resuming a terminated session for a second time, Claude is also reminded to use SendMessage to resume background subagents. Custom agents named worker no longer mistakenly appear as "Agent" in auto-mode rejection notices and task detail activity lists. When the Skill tool finishes before the response stream ends, allowed-tools and effort are no longer lost; these fields specify allowed tools and thinking effort, preventing -p Bash commands from being rejected. Subagents preload up to 32 skills once each from skills, and can still invoke remaining skills when the Skill tool is available.

FEATURE

Distinct Background Task Cancellation Actions and Clear Cleanup Notices on Service Stop

When pressing ← to background work while waiting for tools to finish, stopping versus continuing work now yields distinct outcomes. Stopping a turn displays "Backgrounding cancelled", while typing input cancels backgrounding and lets Claude continue in the foreground. CLAUDE_AUTO_BACKGROUND_TASKS no longer eagerly backgrounds tasks when edits or commands remain queued behind a subagent, preventing subsequent calls from starting prematurely. On macOS or Linux without installed services, when claude agents stops alongside the background service, active sessions stop after roughly one minute with a notification; running claude agents again during this window prevents the shutdown. Exiting both no longer inadvertently starts a new service, which previously delayed shutdown or restarted interrupted sessions. Resuming also no longer mistakenly informs Claude that incomplete background workflows may be stopped by TaskStop.

FEATURE

Distinct Shortcuts for Loop Scheduling and Max Wait Times for Unattended Retries

When using /loop for scheduled checks, disconnecting from the session and stopping the loop are separate actions. In a connected background session, pressing Ctrl+C twice at an idle prompt only disconnects the client while preserving pending wakeups; pressing Esc stops the loop and notifies you of cancelled wakeups. An issue where Esc could not stop self-paced /loop tasks moved to the background with ← has been fixed. If the next wakeup expires while the process is stopped, the loop terminates; sessions now display a notification and Claude is informed. Unattended retry mode CLAUDE_CODE_RETRY_WATCHDOG can use the CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS environment variable (configuration provided before starting a program) to cap maximum wait milliseconds upon encountering 429 rate limits or 529 server overloads.

BUGFIX

Strict Dialogue Rewind History Sync and Accurate Restoration of Variables and Schedules

Prompts are no longer lost and stopped tasks are not accidentally restarted when using /rewind to rewind conversations or branch into new topics. Prompts submitted after rewinding are preserved when sessions move to the background or resume after termination, and deleted turns no longer reappear. Stopped schedules no longer restart upon resuming after a rewind, and an issue where schedules were lost when resuming after conversation compaction followed by Esc or rewind has been fixed. Using ↑ or Esc immediately after pressing ← to pull a pending message back into the input box preserves it in prompt history. After running /resume or /branch, variables written to the CLAUDE_ENV_FILE environment file by SessionStart hooks (small programs triggered on session start) are passed to the Bash tool. Unchanged async startup hook context is also no longer repeatedly added to the conversation across resumes.

FEATURE

Terminal Support for Status Protocols and Cleaner Pipeline Output and Text Copying

Status and responses are no longer missed when interacting with Claude or piping output to other programs. Terminals supporting the application status protocol OSC 7501 can display in tabs or status lines whether Claude is working, awaiting input, or finished. /copy allows selecting blockquote text, copying it without >. Bold text directly following dim text in pipelines (passing output to another program) is no longer rendered dim. Commands and hooks in background sessions no longer inherit FORCE_COLOR=3, preventing Claude from reading ANSI color escape codes. When claude -p opens new turns due to background tasks, each turn's response prints when the turn ends, preventing earlier responses from being lost. When remaining open after the final turn ends, explanations of what is being awaited only print if standard error stderr is connected to a terminal.

BUGFIX

Fixed Terminal Cursor Positioning, Safer Links, and Improved Interface Interactions

Cursor and link displays no longer mislead you when typing, pasting special characters, or clicking hyperlinks in the terminal. Pasting text with accented characters from the macOS clipboard into the middle of the prompt no longer moves the cursor an extra cell. In vim (a mode for editing text using keyboard commands), ~ no longer advances the cursor past the end of the line to break subsequent x delete commands, and 3~ no longer spans across to the next line. Raw terminal hyperlink bytes in responses or peer agent messages are no longer rendered as clickable links with hidden URLs, and plaintext URLs are no longer obscured by lingering colors or hidden styling, including table line wraps and question previews. The Max thinking effort in /model is properly labeled as applying only to the current session. Silent exits or raw system errors when /tui fails to restart Claude Code have also been fixed.

BUGFIX

Terminal Freezes on Ultra-Long Responses Fixed, Syntax Highlighting and Layout Alignment Corrected

When Claude generated tens of thousands of lines of output or progressively deepening nested blockquotes, the terminal could become completely unresponsive. Freezes caused by tens of thousands of lines of output, Ctrl+C failures, and multi-second pauses with gigabytes of memory usage from blockquotes deepening every few lines have been fixed. Syntax highlighting (using colors to distinguish code) stalling for seconds to minutes on ultra-long lines, large blocks of consecutive blank lines, unclosed strings, or heredocs is also fixed; a heredoc is a syntax for defining multi-line text blocks. Text containing tabs or bidirectional control characters is no longer clipped at screen edges or overlapping adjacent lines. Tab stops are now calculated from the start of the text, and short outputs with Windows CRLF line endings are no longer collapsed into a single line.

BUGFIX

Remote Control File Transfer Limits Relaxed, macOS Privacy Prompt False Triggers Fixed

When using Remote Control to manage sessions from other devices or running background tasks on macOS, unexpected rejections and permission prompts could occur. An issue where sending more than 256 files at once remotely was rejected with 'could not be vouched for' has been fixed. False warnings reporting that push notifications were not sent when claude remote-control just received a mobile message, had not used the /config toggle, or was started from inside Claude Code are now resolved. When Remote Control, claude.ai, and desktop interfaces await permission confirmation, they display the MCP tool's server and human-readable name instead of internal identifiers. File counting when launched in the macOS home directory or any directory above it no longer triggers false data access prompts for other applications. Background sessions restarted alongside updates no longer occasionally fall outside the stable application bundle and re-trigger folder permission prompts.

BUGFIX

Chrome URL Rule Protections Fixed, Auto-Mode Switching and Cache Cleanup Improved

Several unexpected behaviors when configuring URL block rules, Auto-Mode, or performing disk cleanup have been resolved. The Chrome extension's host:80 blocking rule now correctly applies to standard HTTP pages on that host. After removing disableAutoMode, desktop and SDK programmatic integrations can switch back to Auto-Mode without restarting. Temporary files left in ~/.claude/seed-admin after interrupted /ultrareview uploads are now removed by retention-based cleanup. When an advisor model saved by /advisor is no longer available, the panel opens to 'No advisor', and occasional startup failures loading managed settings after login refreshes are fixed. The rate_limit_event warning in headless mode (an execution mode without a terminal window) clarifies whether the account has additional usage enabled.

FEATURE

Artifact Background Clarity Improved, Permission Confirmations Streamlined Without Telemetry

Viewing interactive Artifacts (standalone web pages or previews of generated programs) generated by Claude offers a smoother visual and operational experience. Artifact pages without custom background colors now render on a pure white background instead of the previous grayish off-white. In environments with diagnostic telemetry disabled, Artifact tool permission prompts are streamlined to the same five core questions as standard setups, avoiding repetitive interruptions when reading others' artifacts or modifying data. Scheduled and Run now routine jobs in telemetry-disabled installations can now publish new private artifacts or update your own artifacts without prompting.

BUGFIX

[VSCode] Click-to-Open Files in Chat Supported, Forked Sessions and Shortcuts Fixed

When collaborating with Claude in VS Code, file navigation and multi-window switching no longer interfere with each other. Files sent by Claude are listed on dedicated lines in the chat; clicking a filename opens it in the editor with a description beneath it, remaining visible in focused views. An issue where using 'Fork conversation from here' or rewind failed to restore after background agent activity or the panel's own status bar, returning 'Message not found in session', has been resolved. In the input box, Ctrl+Shift+Tab, Cmd+Shift+Tab, and Alt+Shift+Tab no longer accidentally toggle permission modes, and Ctrl+Tab no longer unintentionally accepts suggested prompts. When two Claude windows are visible simultaneously, keyboard focus no longer jumps back and forth to send text to the wrong conversation.

BUGFIX

[Cloud sessions] Reconnection History Displays in Batches, Missing Responses After Unarchiving Fixed

Running long-running tasks or schedules in Cloud sessions brings noticeable improvements to reconnection and configuration. An issue where sending messages immediately after unarchiving sometimes produced no response due to container (an isolated environment for running tasks) startup failures is resolved, and legacy routine schedules reliably load pre-saved prompts. When reconnecting after brief network drops, missed conversation history renders on screen as a single batch rather than slowly crawling line by line. The default height of the install script input field in cloud environment settings has been increased, expanding automatically with content while supporting manual drag-resizing.

BUGFIX

[Claude Tag] Slack Collaboration Card Expiration Extended, Channel Relays and Restarts Fixed

When collaborating with @Claude in Slack team channels, several adjustments have been made to confirmation cards and notifications. Setting confirmation cards now remain active for 30 minutes, up from 10 minutes. Notifications for Enterprise Grid (Slack's enterprise plan for multiple workspaces) cross-workspace shared channels applying organization defaults now trigger at most once a month, only when someone mentions Claude. Forked thread continuation cards now render proper channel links and member mentions instead of raw Slack markup. The spinning indicator no longer persists after confirming an @Claude !restart, and @Claude mentions from other apps or bots are no longer dropped after a busy channel stops reading unmentioned messages. When adding channel managers moves members into Custom roles (custom permission roles) and potentially removes other permissions, admins are prompted for confirmation beforehand.

FEATURE

Self-Hosted Large Repository Fetches No Longer Abort, Code Review Lingering Issues Accurately Reported

When running tasks or automated code reviews in self-hosted enterprise environments, large projects previously encountered issues with timeout limits or oversized rules files. An issue where large Git repository fetches aborted while the server was actively reporting progress has been resolved; the CLAUDE_RUNNER_FETCH_SERVER_PROGRESS_CAP_MS environment variable (configuration provided before starting a program) allows adjusting or disabling this timeout. The runner no longer passes CCR_AUTO_MODE_ALLOW, CCR_AUTO_MODE_ENVIRONMENT, or CCR_AUTO_MODE_SOFT_DENY into the session environment. During re-reviews where previously detected issues remain unresolved, review comments accurately report the remaining count rather than falsely claiming zero issues. An issue where code review skipped rules when a pull request modified a large CLAUDE.md project rules file has also been fixed.

Original changelog

Original changelogHooks Block Failed Actions and Close Shielding Gaps During Reloads
Added `onFailure: "block"` for command and HTTP hooks: a hook that can't start, times out, or exits with an unexpected code blocks the action instead of letting it through
Fixed a mod's hook being handed a deeply nested tool input cut short with no error, so a guard could pass content it never saw
Fixed calls a mod makes while it reloads during a plugin hooks worker restart getting past another mod's guard hook that has a `.catch`; such calls are now refused
Fixed an async hook's JSON output being ignored when it is printed over several lines
Fixed cloud sessions hanging when a mod's `session.receive` hook asked for permission before passing a message on
Changed what Claude and you read when a mod denies a tool call after the tool ran: it now says the tool ran and a plugin withheld its result
Original changelogPlugin Marketplace Adds Install Warnings and Fixes Accidental Deletion
Added a warning to `claude plugin install`, `enable`, `disable` and `marketplace add` when the settings file they write to does not load
Added advice to `claude plugin validate` when a plugin's README has no install line: it prints the line to paste and never changes the exit code, even with `--strict`
Fixed `/plugin`'s Errors tab removing a marketplace that failed to load, and uninstalling its plugins, on Enter without asking first
Fixed `claude plugin marketplace add` reporting success for a marketplace whose name no plugin can be installed under; such an add is now refused
Fixed plugin marketplaces whose repository has large git submodules failing to add or refresh: only the submodules that hold plugin files are now fetched
Improved `claude plugin validate` and plugin loading: when a hooks module is refused over a rebound top-level `var`, the error now names the line that rebinds it, the cause, and a fix
Original changelogRicher Module UI Buttons with Upgraded Notification Priorities and Authoring Guidance
Added `$.ui.notify` for mods: raises a native notification through your own notification setting and says which channel sent it
Added children to a mod's `Button`: strings and `Text`, so a row of a list is one pressable with a chip or a dim detail inside
Improved the built-in `plugin-authoring` skill: it no longer tells a session with no terminal to run terminal commands, and explains sharing a mod only when asked
Improved the Workflow tool's `scriptPath` refusal: it now says to pass the script inline via `script`, the route that works in sessions without a Read tool
Changed toasts from your organization's mods to show ahead of other mods' toasts instead of waiting behind them
Original changelogPlugin Hot Reload Captures Missed Saves and Stops Repeated Confirmation Prompts
Fixed plugin options named `constructor` or `prototype` always reading as their default and never reloading the plugin when edited
Fixed a mod's hot reload missing a save made while `/reload-plugins` or session start was reading the mod's files
Fixed the mod hot-reloading question being asked again every turn for the whole session when it is approved without picking an answer
Fixed a mod's hot reload missing a save made within a few milliseconds of its last reload, which left the mod on its old version until the next save
Fixed mod hot-reloading turning off for the whole session when an SDK host closed its enable question before anyone answered; the question is now asked up to three times
Fixed a plugin that adds very large interfaces getting another plugin unloaded when the plugin hooks worker stalls
Original changelogPlugin Config Changes Strictly Inspected and Prompt History Cleared of Invalid Entries
Fixed plugins whose hooks module nests code thousands of levels deep failing to load or validate with a bare stack-overflow message
Fixed `claude plugin test` passing a `session.append` hook that removes tool call, tool result or thinking blocks that a real session keeps
Fixed `/model`, `/fast` and `/output-style` saving their setting without asking a plugin's `config.set` hook
Fixed generated type files being written into a `--plugin-dir` plugin's folder in `-p` and SDK sessions; they are now written only where a mod is being developed
Fixed a prompt that a mod's `prompt.submit` hook rewrote or dropped still being saved as typed to prompt history and to the transcript's queued-prompt records
Fixed changing the auto-update channel in `/config` saving before a plugin's `config.set` hook was asked
Original changelogWindows Plugin Loading and Install Records Fixed Along with Cache Misclassification
Fixed a tampered cache of server-managed settings making a person's own plugin count as organization-managed on machines whose managed settings list or enable plugins
Fixed project-scope plugins not loading in VS Code on Windows due to drive-letter casing (anthropics/claude-code#74612)
Fixed `plugin install` and `uninstall` at project or local scope on Windows missing the install record, or adding a second one, when only the drive letter's case differs
Fixed claude.ai-synced plugin hooks failing with "Plugin directory does not exist" in long-running sessions after another session synced a plugin update
Original changelogEnterprise Gateway Adds Streaming Timeouts and Restricts Fallback Forwarding by Model List
Added support for `timeouts.upstream_ttfb_ms` on the Claude apps gateway's Bedrock, Vertex, Foundry and other cloud upstreams: a value you set now limits how long a stream may take to start there, after which it fails over or gets a 502
Added an optional `models` list to every Claude apps gateway upstream: only the listed models are sent there, on failover too, and one `*` in an entry is a wildcard
Improved background requests behind a Claude apps gateway to use Haiku 4.5 instead of the session's model, falling back to the session's model where the gateway does not serve Haiku 4.5
Improved how the Claude apps gateway handles models not listed under `models:` in Amazon Bedrock regions outside AWS's US geography. AWS always refused those requests; the gateway now tries the model in your own region, and a refusal names the model to add
Original changelogEnterprise Gateway Enforces Login Redirection and Links Audit Logs to Cloud Requests
Added support for `forceLoginMethod: "gateway"` and `forceLoginGatewayUrl` in your own user settings on machines with no managed settings, so `/login` opens on that Claude apps gateway
Added `upstream_request_id` to the Claude apps gateway's `inference` audit event: the request ID from Amazon Bedrock, the Anthropic API or another upstream, for support cases
Added a `request-id` header to the Claude apps gateway's successful inference responses, so `request_id` in Claude Code telemetry matches the gateway's audit log
Fixed the `claude_code.auth` OpenTelemetry login event not being emitted on Claude apps gateway sign-in. The event is exported when OpenTelemetry is configured on the machine or the session is already signed in to the gateway
Changed the Claude apps gateway to start with a warning and serve a `desktop` policy key its bundled Claude Desktop schema doesn't know, so new Desktop settings need no gateway upgrade
Original changelogEnterprise Gateway Adopts AWS CountTokens and Fixes Spend Limits and Fable Menus
Fixed Fable models listed in `availableModels` not appearing in the `/model` picker for sessions signed in to a Claude apps gateway; such a model now shows its built-in row in place of a `modelPicker` row added for the same model
Fixed the Claude apps gateway's admin spend view showing a developer's old groups and group cap after their session stopped carrying groups
Fixed `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` hiding the Claude apps gateway spend limit in `/usage` and the status line. The spend limit request goes to the gateway the session is signed in to
Improved token counts behind a Claude apps gateway on Amazon Bedrock, which `/context` and large file reads use: the gateway now gets them from AWS's CountTokens API instead of a one-token model request. Grant `bedrock:CountTokens` to use it
Improved the Claude apps gateway to log a warning every 30 seconds while its PostgreSQL database is read-only, saying what fails and how to recover
Original changelogCore Tool Parameter Parsing Loosened and Restricted Modes Strictly Controlled
Fixed Bash tool calls failing when the model passes `command_description` instead of `description`
Fixed `--tools` and `--restricted` not applying to built-in tools that register after launch, and deprecated tool names reaching tools outside the caller's tool set
Fixed Bash permission checks for for-loops over glob patterns, improving permission-check accuracy
Fixed Claude 3 Opus and Claude 3.x Sonnet sessions being offered tool search, which those models reject, where feature flags are unavailable
Fixed the Read tool rejecting calls with an empty `pages` parameter instead of treating it as omitted
Improved Grep input handling: a search sent with grep's `-l`, `-c` or `-r` flag now runs instead of failing the call
Original changelogSmart Fallback for 1-Million Context Requests and Accurate File Change Detection
Fixed every request failing on a `[1m]` model when a gateway, Bedrock, Vertex or Foundry refuses the context-1m beta; Claude Code now resends without it
Fixed a file being treated as already read after a Bash command such as `cat` ran without printing it
Fixed Edit treating a file as fully read when its contents changed without its modification time advancing
Improved what Claude is told when a large file it sends fails to upload with no reason given, so it reports the failure instead of shrinking the file
Fixed web searches and `agent` hook evaluations taking much longer at `xhigh` and `max` effort
Original changelogBackoff Reconnection for External Tools and Recovery from Extended Disconnects
Fixed remote MCP servers in headless and SDK sessions staying disconnected after an outage longer than 15 seconds, or reconnecting in a tight loop to a server that drops each connection right after it connects; repeated drops now back off, up to 30s
Fixed remote MCP connections being dropped when a server's error reply happened to contain a network error name
Fixed MCP servers that repeat a pagination cursor being asked for the same page up to 20 times at every connect
Fixed an interrupt not ending the turn until a timeout while Claude waited for an MCP server's resource list
Changed WebSocket (`ws`) MCP servers: a message over 16 MiB is no longer parsed and closes the connection, the limit the other transports already have
Original changelogPrecise File Type Detection for External Tools and Expanded Tool Description Limits
Fixed CSS, JavaScript and XML files returned by MCP tools being saved as .bin, which the Read tool refuses; font and icon files now get their own extension too
Fixed `claude mcp serve` background Bash results not naming the output file, and its tool description promising a notification that never arrives
Changed MCP tool descriptions the model loads through tool search to be cut at 16,384 characters instead of 2,048
Changed claude.ai connectors to negotiate MCP protocol version 2026-07-28 by default on installs that fetch no flags; `MCP_PROTOCOL_NEGOTIATION=legacy` opts out
Original changelogTransparent Background Task Status for MCP Tools and Reduced Prompts in Non-Interactive Mode
Fixed Claude not being told when you stop a long-running MCP tool call from the tasks panel or a connected client
Fixed the notification for an MCP tool call that moved to the background showing a shortened task id
Fixed non-interactive sessions telling you about MCP servers that need authentication when your request doesn't use them
Fixed an MCP sign-in or reconnect that finishes late in headless and SDK sessions relisting a server set with `setMcpServers()` as your own
Original changelogFixed Subagent Work Environments, Message Passing, and Skill Preloading
Fixed subagents in their own linked worktree being shown the parent session's git branch, status and recent commits
Fixed a custom agent named `worker` being shown as "Agent" in auto-mode denial notices and in the activity lists of task detail views
Fixed forked skills invoked from Workflow subagents delivering their results to the main conversation instead of the invoking agent
Fixed in-process agent teammates failing their first SendMessage call until they loaded the tool through tool search
Fixed Claude not being told it can resume background subagents with SendMessage after a session was killed and resumed a second time
Fixed a skill's `allowed-tools` and `effort` being dropped when the Skill tool finished before the response stream ended, which denied the skill's Bash commands in `-p` runs
Changed subagents to preload at most 32 skills from the `skills` field, each once; a subagent with the Skill tool can still invoke the rest
Original changelogDistinct Background Task Cancellation Actions and Clear Cleanup Notices on Service Stop
Added a "Backgrounding cancelled" message when you stop the turn while `←` is waiting for the current tool to finish
Fixed `CLAUDE_AUTO_BACKGROUND_TASKS` moving a subagent to the background while an edit or shell command waited behind it, which started that call before the subagent finished
Fixed Claude stopping at the end of the current tool when text typed in the prompt cancelled backgrounding with `←`; Claude now keeps working in the foreground
Fixed `claude agents` starting a new background service as it exited when both were stopped with a session open (for example at a reboot), which could delay shutdown and restart an interrupted session
Fixed Claude being told on resume that an unfinished background workflow may have been stopped by `TaskStop`, which can never be the cause
Changed `claude agents` stopped with its background service (macOS, or Linux without the service installed): running sessions now stop in about a minute unless it is run again, and a notice says so
Original changelogDistinct Shortcuts for Loop Scheduling and Max Wait Times for Unattended Retries
Added `CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS` to limit how long unattended retry mode (`CLAUDE_CODE_RETRY_WATCHDOG`) waits out 429 and 529 errors
Fixed Esc not stopping a self-paced `/loop` that was moved to the background with `←`; cancelling a pending wakeup now shows a notice
Fixed a background session's `/loop` stopping without notice when its next wakeup came due while the session's process was down; the session now says so and Claude is told
Changed Ctrl+C at the idle prompt of an attached background session to leave a pending `/loop` wakeup alone, so pressing it twice detaches and the loop keeps running; press Esc to stop it
Original changelogStrict Dialogue Rewind History Sync and Accurate Restoration of Variables and Schedules
Fixed an async SessionStart hook's unchanged context being added to the conversation again on every resume
Fixed variables a SessionStart hook writes to `CLAUDE_ENV_FILE` not reaching the Bash tool after an in-app `/resume` or `/branch`
Fixed a queued message being lost when pulled back into the prompt with `↑` or `Esc` just after `←`: prompt history now keeps it
Fixed a stopped scheduled task coming back on resume after a rewind, and a scheduled task being lost on resume after Esc or a rewind following a compaction
Fixed the prompt sent after a `/rewind` being lost, and the removed turns coming back, when the session was moved to the background or resumed after being killed
Original changelogTerminal Support for Status Protocols and Cleaner Pipeline Output and Text Copying
Added Program Status Protocol (OSC 7501) support: terminals that implement it can show whether Claude Code is working, waiting on you, or done
Added quoted text to the `/copy` picker, so a drafted message copies without its `>` markers
Added a line on stderr, when it is a terminal, that says what a `claude -p` run is waiting for when it stays open after its last turn
Fixed `claude -p` text output dropping earlier responses when background work started another turn; each turn's response now prints when the turn ends
Fixed commands and hooks in background sessions inheriting `FORCE_COLOR=3`, which put color escape codes into the output Claude reads
Fixed bold text being drawn faint in piped output when it directly follows dim text
Original changelogFixed Terminal Cursor Positioning, Safer Links, and Improved Interface Interactions
Fixed `/tui` exiting without a message, or with a raw system error, when Claude Code could not be started again
Fixed a link address shown as text being hidden by a colour or conceal style a reply left on, including where it wraps in a table or a question preview
Fixed raw terminal hyperlink bytes in a reply or a teammate's message being drawn as a clickable link with a hidden address
Fixed vim mode's `~` moving the cursor past the last character of a line, so `x` after it did nothing, and `3~` running on into the next line
Fixed the cursor landing one character too far after pasting accented text copied from macOS (such as a file name) into the middle of the prompt
Fixed `/model` saying a Max effort pick was saved as your default for new sessions; Max applies to the current session only
Original changelogTerminal Freezes on Ultra-Long Responses Fixed, Syntax Highlighting and Layout Alignment Corrected
Fixed the terminal freezing, with ctrl+c ignored, when a response ran to tens of thousands of lines
Fixed replies whose quotes nest deeper every few lines freezing the terminal for seconds and using gigabytes of memory
Fixed text with tabs or bidirectional control characters losing its end at the edge of the screen or drawing over nearby rows
Fixed short command output with Windows line endings (CRLF) being drawn on a single line
Fixed the terminal freezing for seconds or minutes while syntax highlighting code with very long lines, long runs of blank lines, or unclosed strings and heredocs
Changed tab stops to count from where a text starts instead of from the screen's left edge: an answer indented by 2 has its first stop 8 cells in, where it was 6
Original changelogRemote Control File Transfer Limits Relaxed, macOS Privacy Prompt False Triggers Fixed
Fixed PushNotification saying a push was not sent in `claude remote-control` sessions right after a phone message, without the `/config` toggle, or when started from inside Claude Code
Fixed files sent from remote sessions being refused as "could not be vouched for" when more than 256 were sent at once
Fixed macOS background sessions that restart together after an update sometimes running outside the stable app wrapper, so folder-access prompts could reappear
macOS: Fixed a file count at session start that could reach other apps' data and raise the "access data from other apps" prompt when a session starts in the home folder or above it
Improved the status shown in Remote Control, claude.ai and the desktop app for a session waiting on a permission prompt to name an MCP tool by its server and readable name instead of its `mcp__server__tool` identifier
Original changelogChrome URL Rule Protections Fixed, Auto-Mode Switching and Cache Cleanup Improved
Fixed Claude in Chrome not applying a site deny rule written with port 80 (`host:80`) to plain `http://` pages on that host
Fixed a rare failure to load managed settings at startup right after a login refresh
Fixed the `/advisor` dialog showing a checkmark on a saved advisor model that is no longer available; it now opens on "No advisor"
Fixed temporary files left under `~/.claude/seed-admin` by an interrupted `/ultrareview` upload never being removed by the retention cleanup
Fixed Desktop and SDK sessions refusing to switch back to auto mode until restart after `disableAutoMode` was removed from settings
Improved headless `rate_limit_event` usage-limit warnings to say whether the account has extra usage turned on
Original changelogArtifact Background Clarity Improved, Permission Confirmations Streamlined Without Telemetry
Changed Artifact pages with no background of their own to show on white instead of off-white
Changed the Artifact tool's permission prompts with telemetry disabled to the same five questions other installs get, instead of asking before each read of someone else's artifact and each data edit
Changed scheduled and Run now routine runs in installs with telemetry disabled to publish new private artifacts, and update your own, without asking, as in other installs
Original changelog[VSCode] Click-to-Open Files in Chat Supported, Forked Sessions and Shortcuts Fixed
[VSCode] Added a chat row for files Claude sends you: click a file's name to open it in the editor; Claude's caption shows underneath, and the row stays visible in Focus view
[VSCode] Fixed "Fork conversation from here" and Rewind's conversation restore failing with "Message not found in session" after a background agent's activity or one of the panel's own status lines
[VSCode] Fixed Ctrl+Shift+Tab, Cmd+Shift+Tab and Alt+Shift+Tab in the chat input also switching the permission mode, and Ctrl+Tab accepting the suggested prompt
[VSCode] Fixed keyboard focus bouncing between two Claude views visible at once, which could send typed text to the wrong conversation
Original changelog[Cloud sessions] Reconnection History Displays in Batches, Missing Responses After Unarchiving Fixed
[Cloud sessions] Fixed a message sent right after unarchiving a cloud session sometimes getting no reply because no container could start for it
[Cloud sessions] Fixed some older routines starting their runs without ever giving Claude their saved prompt; those routines now run their prompt again
[Cloud sessions] Improved how quickly a cloud session catches up after its connection drops: activity you missed now appears all at once instead of row by row
[Cloud sessions] Improved the setup script box in the cloud environment form: it starts taller, grows with your script, and can be resized by dragging
Original changelog[Claude Tag] Slack Collaboration Card Expiration Extended, Channel Relays and Restarts Fixed
[Claude Tag] Changed the settings confirmation cards Claude posts in a Slack channel to stay open for 30 minutes instead of 10
[Claude Tag] Changed Claude's notice that a channel shared across Enterprise Grid workspaces uses organization defaults to post only when someone mentions Claude, at most once a month
[Claude Tag] Fixed channel links and @-mentions in a forked thread's "Continued from" card showing as raw Slack codes
[Claude Tag] Fixed Slack's Working status spinning on under a thread after `@Claude !restart` had already confirmed the restart
[Claude Tag] Fixed another app's or bot's @Claude going unanswered in a busy channel where Claude had stopped reading untagged messages
[Claude Tag] Added a confirmation in Claude Tag admin settings before adding a channel manager moves that member to Custom roles, which can remove their other access
Original changelogSelf-Hosted Large Repository Fetches No Longer Abort, Code Review Lingering Issues Accurately Reported
Self-hosted runner: Changed the runner to stop passing `CCR_AUTO_MODE_ALLOW`, `CCR_AUTO_MODE_ENVIRONMENT` and `CCR_AUTO_MODE_SOFT_DENY` into a session's environment
Self-hosted runner: Fixed git fetches being cut off while the git server was still reporting progress on a large repository; `CLAUDE_RUNNER_FETCH_SERVER_PROGRESS_CAP_MS` tunes or turns off the wait
[Code Review] Fixed Code Review re-reviews saying no issues were found while earlier findings were still open; the comment now says how many remain open
[Code Review] Fixed Code Review still skipping a large CLAUDE.md's rules when the pull request edits that file