Claude apps gateway adds Bedrock role assumption and guardrails
When enterprises centrally manage model traffic in the cloud, the gateway adds an assume_role field in upstream settings. This allows the gateway to call Amazon Bedrock using temporary credentials assumed through STS, across other AWS accounts if needed, while supporting one session per developer. Upstreams also support configuring guardrail: {id, version} to require all requests to pass through a specified safety guardrail.
FEATURE
Claude apps gateway expands Desktop policies and fixed telemetry labels
When organizations uniformly configure development environments, the gateway's desktop policy block adds several control keys. Administrators can configure blockReadsOutsideWorkingDirectories to prevent reading files outside working directories. Enforcing disableBypassPermissionsMode to disable bypass permissions mode is also supported. The gateway configuration file can also add fixed telemetry labels to login and session traffic via telemetry.resource_attributes. If a managed MCP server path begins with a format that current Claude Desktop does not support, the gateway refuses to start to ensure safety.
FEATURE
Added attribution setting to hide commit and PR attribution
To keep code repository history clean, you can now add "attribution": false in settings to turn off all commit and pull request tool attribution. If multiple team members share a configuration file, keep the full curly-brace object format to prevent older CLI versions from skipping the entire settings file when encountering an unknown format.
{
"attribution": false
}
FEATURE
MCP adds URL-mode elicitation so servers can request browser-based flows
When external services require you to complete login or authorization on the web, MCP servers on the 2026-07-28 protocol version can now ask Claude Code to open a browser screen. If the server cannot confirm subsequent completion, the terminal avoids leaving a stuck waiting dialog on screen.
FEATURE
Send now moves running tools to background instead of cancelling turns
When Claude is executing a time-consuming command and you have already prepared follow-up questions or new tasks, pressing a shortcut (Ctrl+Enter or Ctrl+X Ctrl+S) smoothly transitions running tools to the background. You do not have to wait for them to finish, and typing ahead will not abort the prior conversation turn.
FEATURE
Auto mode review covers read-only commands and recommends permission savings
For hands-free tool execution, auto mode with the server-side classifier enabled now routes read-only and sandboxed commands through server review, actively blocking them if flagged. Direct Anthropic API connections can opt in to review via CLAUDE_CODE_AUTO_MODE_SERVER=1. Entering /insights in the terminal also estimates how many manual confirmations auto mode saved in your recent sessions.
FEATURE
Auto mode improves restart cache reuse and denial intent handling
When resuming a session in a new process after an interruption, the auto mode permission classifier now directly reuses its earlier prompt cache. This saves time by retrieving cached computation. When you deny a dangerous action, Claude now understands you are rejecting the intended outcome rather than only the specific line of phrasing, avoiding repeated attempts with synonymous commands.
FEATURE
Enhanced deletion protection adds variable path checks and timeout denials
When tools in auto or bypass permissions mode prepare to run recursive deletion commands containing variable substitution, such as rm -rf "$(pwd)", they now pause to ask for confirmation instead of running unprompted. Safety protections also flag targets where a shell variable is followed by a top-level directory name or contains only a backslash. In unattended sessions, the confirmation prompt waits 2 minutes before automatically denying the command with a rewrite hint, preventing workstations from hanging indefinitely on unhandled keystrokes.
FEATURE
Self-hosted runners use files for system prompts and count instruction files
When building self-hosted runners for automation pipelines, long system prompts can now be passed as private file paths via --system-prompt-file, preventing launch failures from oversized command-line text. Startup prompt size warnings also count all related instruction files and @-imports together. In headless mode, mounted directories added via --add-dir no longer send duplicate rule files to the model.
BUGFIX
Fixed resumed sessions dropping reasoning due to changed message format
Multiple session resumption mechanisms have been thoroughly overhauled when resuming incomplete conversations. Previously, parallel tool calls, MCP reconnects, or interrupted turns could resend modified conversation history, causing the API to drop prior reasoning context. Oversized sessions no longer restore only their last few messages, restarts during pending permission prompts no longer break prompt caching, and manual resumes after interrupted tool calls no longer insert hidden messages. Damaged history records are now repaired automatically at startup.
FEATURE
Improved resume speed and cache restoration for long compacted sessions
Session loading efficiency is significantly improved when handling large projects and long conversations. When reopening sessions that read many files, restoring the file cache is much faster, and contents match the files exactly as they were read. Resuming compacted long sessions in the Agent SDK and Claude Desktop is also smoother. If a massive first prompt triggers a prompt length limit, the system now summarizes that prompt on its own during recovery to keep the conversation going.
BUGFIX
Fixed stream drops and state loss from premature proxy disconnects
Streaming fault tolerance is strengthened when connecting through enterprise proxies or gateways. Previously, a stream cleanly closed by a proxy could be mistaken for a complete response, and duplicate events could trigger tool calls twice. Dropped stream events now properly preserve partial responses and web search results that have already arrived. Fixes also resolve interface crashes during API request retries, duplicate empty requests after dropped connections, and lost stop reasons when trailing frames contain only usage data.
BUGFIX
Fixed API retry loops, rate limit waits, and HTML error parsing
When unparseable tool calls alternate with output-limit truncation, turns no longer retry indefinitely while ignoring --max-turns. The retry watchdog in CLAUDE_CODE_RETRY_WATCHDOG sessions no longer sleeps silently and uncapped on server errors. Fast mode also stops firing rapid back-to-back retries upon receiving Retry-After: 0. When proxies return HTML error pages for 429 or 502 codes, the terminal extracts the HTTP status rather than printing raw markup.
BUGFIX
Fixed tool hangs from oversized images, long names, and memory reads
Edge case stability is strengthened when invoking tools for multimedia and heavy workloads. When a tool returns an oversized image, sibling tool calls in the same batch no longer hang unanswered or abandon the turn. Fixes also resolve conversations getting permanently stuck when tool names exceed 200 characters, false tool failures when memory usage cannot be read due to exhausted file descriptors, and delays or uncancelable background page rendering when reading PDFs larger than 3 MB.
BUGFIX
Fixed file tool handling for null-byte paths and duplicate parameters
Parameter validation logic has been corrected across multiple file handling tools during code editing. When using Read, Write, Edit, or NotebookEdit, file paths containing a null byte now fail with a clear error instead of aborting the entire turn. Write calls that provide identical path and content values across two duplicate parameter names are also no longer rejected.
BUGFIX
Fixed sandbox command exclusion matching and added port binding guidance
When developing inside the macOS sandbox, Claude points to sandbox.network.allowLocalBinding if a local development server fails to bind a port. Fixes also correct sandbox excludedCommands matching for specific Git commands and tagged commit messages, resolve $TMPDIR write failures when CLAUDE_CODE_TMPDIR is customized, and prevent permission rules with NUL bytes from expanding into wildcards or accessing network mount paths.
BUGFIX
Fixed duplicate MCP connections, hook waits, and headless handshake hangs
When connecting to host-side MCP servers in headless mode, remote sessions now wait only a few seconds before recovering if the host stops responding mid-handshake. Blocking event hooks also wait for MCP server connections before firing. Fixes also resolve duplicate connections caused by URL casing or trailing slashes, and sync status bar login indicators when authenticating from another process.
PERF
Filtered MCP app resources and improved attachment caching and screen readers
When listing or @-mentioning MCP resources in the terminal, resource lists skip MCP Apps UI resources to keep prompts clean. Remote Control connections reuse sockets and cached files for previously downloaded attachments in the session, saving bandwidth. Screen readers navigating the /mcp list also announce disabled servers clearly as "off" rather than "pending".
BUGFIX
Plugins add MCP validation checks and fix project-scope management commands
When developing or installing plugins, running claude plugin validate now checks for dropped .mcp.json entries, undeclared ${user_config.*} variables, and insecure URLs, without mistaking privacy or support URLs for unknown fields. Fixes also resolve uninstall errors for project-scope plugins reporting as enabled, prevent omitted --scope update flags from defaulting to user scope, and fix empty plugin loads from directories containing marketplace files.
FEATURE
Plugins name offending packages on errors and improve hook paths and caching
Error reporting is clearer when debugging and managing plugin packages. When a plugin hook fails, error messages name the offending plugin directly. The validator also warns if shell hooks leave ${CLAUDE_PLUGIN_ROOT} unquoted, avoiding breaks on paths with spaces. Marketplaces that keep local clones on connection failure are no longer marked as refreshed, and uninstall routines explain when files remain because other plugins use them.
BUGFIX
Improved plugin list layout and scrolling, and fixed marketplace updates
Opening /plugin in the terminal aligns installed plugins into neat columns for status, name, type, and details. Mouse wheel scrolling navigates the list smoothly without moving background panes. Fixes also prevent repeated Enter presses from triggering duplicate updates or uninstalls, stop held y keys from instantly adding marketplaces before prompts can be read, and show confirmation prompts after resolving all items on the Errors tab.
FEATURE
Session artifacts collapse to footer pills with improved copy and compression
Artifacts generated during conversations are now consolidated into a single footer pill below the prompt (such as ⧉ name). Clicking it opens the /artifacts menu to view all outputs from the session. The artifact design skill asks Claude for direct, plain prose, large artifact uploads over slow connections are automatically compressed, scripts from unpkg.com are allowed, and Remote Control sessions retain the Artifact tool.
BUGFIX
Fixed background agent reports, scheduled routines, and retry loops
For long-running remote workflows, cloud sessions now report finished background agents to Claude even if worker restarts occur immediately after completion. Scheduled tasks and /loop wakeups no longer retry every second upon delivery failure, preventing Claude Code from exiting at turn end. Fixes also resolve interfaces stuck on "needs approval" during overlapping prompts, deliver missing turn-start notices on scheduled turns, and avoid false policy-disabled notices while org policies load.
BUGFIX
Fixed macOS keychain credential loss and optimized interactive startup time
On macOS, writing credentials while the keychain is locked or right after wake no longer drops stored MCP OAuth tokens or deletes keychain entries. Cloud authentication refresh processes release localhost ports upon exit. Interactive startup defers Git reads and model-upgrade checks until after the first frame renders, while stopping unexecutable policy retries to make terminal sessions ready faster.
BUGFIX
Fixed setting source forwarding for sub-sessions and checked workspace trust
Launching background sessions via claude --bg now checks workspace trust before running project hooks instead of executing unprompted. Settings restrictions set via --setting-sources are forwarded to teammate, /bg, and worktree sessions. Fixes also resolve errors in non-interactive sessions when directories are deleted mid-session, and eliminate startup waits on managed settings requests when no plugins or MCP servers are configured.
FEATURE
Multi-agent loads JSON files and batch execution supports worktree hooks
Launching multiple agents via --agents now accepts a path to a JSON file and permits an empty prompt. Running /batch works outside Git repositories as long as a WorktreeCreate hook provides agent worktrees. Synced skills from claude.ai display by their short names, and /deep-research improves reliability on long research briefs.
BUGFIX
Fixed Vim mode key actions and improved queued messages and pasted text
When using Vim mode in the terminal, fixes correct motion behaviors for dj, cw, 1G, and dot repeat inserts, preventing exclamation-mark text from mistakenly triggering shell mode. Messages queued while Claude is working now display above the spinner and preserve IDE selections. Single-line pasted text is no longer split across unexpected lines, creating a smoother command-line input experience.
FEATURE
Improved agent panel hints and focus, and updated background progress row
In the multi-agent panel, footer key hints reflect custom keybindings without showing redundant switch prompts for the active agent. Clicking an agent row updates the keyboard cursor, while pressing Esc deselects the highlighted row without interrupting running turns. The background workflow row below the prompt adds a progress bar, elapsed time, and token counts, making background task progress clear at a glance.
FEATURE
Improved workflow list layout and added confirmation before stopping reviews
Viewing workflows via /workflows leads each row with its status icon and elapsed time, preserving the run name and duration on narrow terminals. When new tasks launch in the background, the selection pointer no longer jumps unexpectedly. Pressing x on a running /ultrareview in the /tasks list now prompts for confirmation before stopping the task, preventing accidental interruptions.
FEATURE
Standardized double-press cancel across dialogs and protected rapid keystrokes
Opening dialogs such as /hooks, /mcp, or /memory in the terminal now closes the active dialog on a double press of Ctrl+C or Ctrl+D without exiting the application. Burst keystrokes from remote input or window switching no longer trigger stale selections. Fixes also prevent pressing 1 from accidentally confirming directory deletions in /permissions and stop rapid Shift+Tab presses from landing on wrong permission modes.
BUGFIX
Fixed feedback report cancellation, setup restarts, and session naming
Cancelling /feedback or /bug reports mid-send no longer delivers the cancelled submissions. Fixes also resolve terminal crashes or garbled inputs when /setup-bedrock restarts to apply settings, prevent /config crashes when configuration files contain null values, fix undetected editor reports in /ide, and preserve custom session names when Claude asks multiple-choice questions.
BUGFIX
Fixed model thinking switch display, context counts, and diff snapshots
On models where thinking cannot be disabled, pressing Alt+T or opening /config no longer displays an ineffective switch, showing a one-line explanation instead. Running /context now includes newly sent messages in the total count. Choosing "Skip workflow update" during GitHub app installation avoids rerun loops, and temporary Bash edit-diff snapshots are fully cleaned up on exit.
FEATURE
Fullscreen lists add scrollbars with paging shortcuts and hover highlights
In fullscreen mode, viewing /skills, /mcp, or /plugin installed lists displays a clickable and draggable scrollbar on the right, supporting PgUp, PgDn, Home, End, and j/k navigation. Hover highlights clear immediately when the mouse moves away, and long rows truncate cleanly with ellipsis in narrow terminals to prevent layout issues.
FEATURE
Improved tabbed dialog navigation and streamlined skill and hook details
In tabbed dialogs like /permissions and /usage, pressing the up and down arrows shifts focus between the tab bar and the content pane, keeping active tabs clearly highlighted even when terminal colors are disabled. The /skills list leads each row with the skill name and toggle icons. The /hooks detail view states the hook type and edit location directly rather than always pointing confusingly to settings.json.
BUGFIX
Fixed list numbering and blank lines, and improved diffs and server rows
Displaying bulleted lists of plain numbers (like - 316.) no longer converts items into Roman numerals or incorrect characters, and extra blank lines above list items are removed in screen-reader and long lists. Running /diff on large changes adds a scrollbar and prevents long paths from wrapping. Fullscreen hover highlights tint the row gently, and /mcp server rows lead with status icons while streamlining trailing details for a cleaner display.
BUGFIX
Fixed Windows temp directory permissions and update backup conflicts
When running commands with Bash on Windows, fixes resolve "Permission denied" errors when writing to the $TMPDIR directory. Fixes also eliminate a race condition where simultaneous Claude Code updates could delete each other's claude.exe backups, which could leave no executable behind after updating.
BUGFIX
VS Code extension adds auto mode prompts and fixes session loading
In VS Code and JetBrains side panels, auto mode provides explicit Continue and Stop buttons when falling back to billed classifier requests. Fixes also prevent empty web sessions from saving unresumable local copies, stop sessions from silently opening blank when server histories fail to load, unfreeze editor tabs after extension host restarts, and fix clipped cost and usage text on narrow sidebars.
FEATURE
Web cloud sessions add Fast mode switch and improve GitHub workflows
When chatting in the browser, the composer's model menu adds a Fast mode switch, allowing toggling in cloud sessions at any time whenever supported by your plan and selected model. The repository picker adds a GitHub troubleshooting link. Pull requests converted to draft properly trigger scheduled routines, non-GitHub repositories hide the Create PR button, and failed file loads clearly indicate whether files are missing or blocked by permission rules.
BUGFIX
Claude Tag in Slack adds stop notices and fixes reply stalls and crashes
When someone clicks Stop in a Slack thread to halt Claude's response, the thread leaves a short notice naming who stopped it and noting that mentioning @Claude will continue. Fixes also resolve channels permanently stalling on thread replies with self-healing on the next message, prevent background tasks from triggering unwanted restarts after stopping, eliminate delays after mid-task crashes, and clarify restart failures when session configurations are too large.
BUGFIX
Claude Tag improves long thread context and fixes Enterprise Grid channels
In long Slack conversations, Claude no longer silently withholds replies when evaluating against weeks-old history, and restarts deep inside threads retain recent context. Fixes also resolve channel check errors when channels move from Enterprise Grid org-wide sharing to single workspaces or experience quiet periods in shared channels. Inquiries about routines in a thread now list only that thread's scheduled tasks by default.
BUGFIX
Fixed Claude Tag inference hook notices, model limits, and cloud plugins
When a Slack request is blocked by an organization's inference hook, the thread displays the specific deny message and avoids useless retries. Switching models only lists and offers models approved by the organization. Fixes also correct authentication errors for DynamoDB and Kinesis account-based endpoints over AWS connections, and admin settings display plugin names instead of raw IDs.
BUGFIX
Fixed code review retries skipping reviews after force-push events
In repositories not configured to review every push, pull requests could previously be skipped entirely if a force-push occurred while a failed review was being retried. This issue has been resolved, ensuring the retry flow completes the review reliably without dropping code inspection when branches are overwritten.
Original changelog
Original changelogClaude apps gateway adds Bedrock role assumption and guardrails
Added `assume_role` on Claude apps gateway Bedrock upstreams: the gateway calls Bedrock as an IAM role it assumes through STS, in another AWS account if needed, optionally one session per developer
Added `guardrail: {id, version}` on Claude apps gateway Bedrock upstreams to apply an Amazon Bedrock guardrail to every request sent through them (set it on all Bedrock upstreams or none)
Original changelogClaude apps gateway expands Desktop policies and fixed telemetry labels
Added Claude apps gateway support for newer Claude Desktop keys in `desktop` policy blocks, including `blockReadsOutsideWorkingDirectories` and `disableBypassPermissionsMode`
Added `telemetry.resource_attributes` to the Claude apps gateway config, to put fixed labels on the telemetry of Claude Desktop and `/login` sessions
Changed Claude apps gateway to refuse to start when a `managedMcpServers` entry's `envHelper` path starts with `\??\` or `/??/`, a path form current Claude Desktop refuses to run
Original changelogAdded attribution setting to hide commit and PR attribution
Added `"attribution": false` in `settings.json` to hide all commit and PR attribution; older CLI versions skip a settings file that holds it, so keep the object form in files shared across versions
Original changelogMCP adds URL-mode elicitation so servers can request browser-based flows
Added MCP URL-mode elicitation on 2026-07-28 protocol connections, so servers can ask Claude Code to open a browser-based flow; no waiting dialog is left on screen when the server has no way to confirm completion
Original changelogSend now moves running tools to background instead of cancelling turns
Changed send now (ctrl+enter or ctrl+x ctrl+s) to move running tools to the background instead of cancelling the turn
Original changelogAuto mode review covers read-only commands and recommends permission savings
Added an auto mode recommendation to `/insights` that estimates how many permission prompts auto mode could have handled in your recent sessions
Changed auto mode so that, where its classifier review runs server-side, read-only and sandboxed shell commands also wait for that review and are blocked when it flags them
Changed `CLAUDE_CODE_AUTO_MODE_SERVER` to also apply on a direct Anthropic API connection: `0` opts out of the server-side auto mode classifier (the local classifier then counts toward usage), `1` opts in
Original changelogAuto mode improves restart cache reuse and denial intent handling
Improved auto mode after resuming a session in a new process: the permission classifier can now reuse its earlier prompt cache instead of rewriting it
Improved the auto mode denial message so Claude treats a denial as covering the outcome, not only the exact command
Original changelogEnhanced deletion protection adds variable path checks and timeout denials
Fixed a recursive `rm` whose target is only command-substitution output, such as `rm -rf "$(pwd)"`, running unprompted in auto and `--dangerously-skip-permissions` mode; it now asks even with a Bash allow rule, unless run with `CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT=1`
Improved the dangerous-rm check to also flag a removal at a shell variable followed by a top-level directory name, at a variable derived from the working directory, or at a backslash-only target
Changed the dangerous `rm` prompt in `--dangerously-skip-permissions` and auto mode to wait 2 minutes for an answer, then deny the command with a rewrite hint so unattended sessions keep going (`CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT=1` turns this off)
Original changelogSelf-hosted runners use files for system prompts and count instruction files
Fixed CLAUDE.md and rules files from an `--add-dir` directory inside the working directory being sent to the model twice in headless and SDK sessions
Improved the large CLAUDE.md startup notice to also count instruction files together, so many mid-sized files and @-imports are caught
Changed self-hosted runners to pass system prompts to Claude Code as private files instead of command-line text, so large prompts no longer fail the launch; a wrapper or `command` hook that appends `--system-prompt` or `--append-system-prompt` must switch to `--system-prompt-file` or `--append-system-prompt-file`
Original changelogFixed resumed sessions dropping reasoning due to changed message format
Fixed resumed sessions re-sending earlier turns in a changed form (a parallel tool-call turn, an MCP tool call's input or a tool-search result while its server was still reconnecting, or a tool-search result whose loading turn was interrupted), which could make the API drop the conversation's prior reasoning
Fixed resuming a very large session sometimes restoring only its last few messages
Fixed a session resumed after a restart during a pending permission prompt sending a different history than before, which broke the prompt cache from that point
Fixed resuming a session that ended during a tool call: Claude now sees the call and is told its outcome is unknown, and a manual resume no longer adds a hidden "Continue" message
Fixed sessions with an earlier advisor result the API could no longer read failing one request every turn and repeatedly losing earlier reasoning; the history is now repaired once
Original changelogImproved resume speed and cache restoration for long compacted sessions
Improved the time to resume long sessions that read many files; the restored file cache now matches the files as they were read
Improved the time to resume very long sessions that have been compacted, most noticeably through the Agent SDK and Claude Desktop
Improved "Prompt is too long" recovery in sessions dominated by one very large first prompt: that prompt is now summarized on its own instead of being left out of the summary
Original changelogFixed stream drops and state loss from premature proxy disconnects
Fixed a crash ("unrecoverable interface error") that could end a session while an API request was being retried
Fixed the prompt cache being lost when an MCP server disconnects mid-conversation, or is still connecting after a resume, while tool search is off (for example behind a proxy or gateway)
Fixed responses cut short by a proxy or gateway that closes the stream cleanly being shown as complete with no warning, and tool calls running twice on duplicated stream events
Fixed responses failing with "Content block not found" when a proxy drops a stream event mid-response; the partial response is now kept, and web search keeps results that already arrived
Fixed an empty completed response being requested twice when the connection dropped before the stream's final event
Fixed the stop reason being lost when a proxy sends a trailing usage-only frame
Original changelogFixed API retry loops, rate limit waits, and HTML error parsing
Fixed a turn that could retry indefinitely, ignoring `--max-turns`, when the model alternated unparseable tool calls and output-limit truncation
Fixed `CLAUDE_CODE_RETRY_WATCHDOG` sessions failing on the first 5xx or dropped connection after a run of 429/529 waits, and sleeping uncapped and silently on a long `Retry-After` from a 5xx
Fixed fast mode retrying rate-limited requests back to back when the server sent `Retry-After: 0`
Fixed `/model` showing the raw API error JSON and request ID when the API refuses the picked model; it now shows the server's message and says the model was not changed
Fixed API errors from an HTML error page (such as a proxy's 429 or 502 page) printing the page's raw markup or leaving out the HTTP status, and error messages breaking onto a second line when the server's error text ended in a newline
Original changelogFixed tool hangs from oversized images, long names, and memory reads
Fixed a tool that returned an oversized image leaving sibling tool calls unanswered and still running, or ending the turn with no final message
Fixed conversations getting permanently stuck on "tool_use.name: String should have at most 200 characters" after the model called a tool by an overlong name
Fixed tool calls failing with "Failed to get memory usage", or being reported as failed after they ran, when Claude Code cannot read its own memory usage, for example when it has run out of file descriptors
Fixed a delay of up to two minutes before responding when reading or @-mentioning a PDF larger than 3 MB
Fixed an interrupted Read of specific PDF pages leaving its page render running for up to two minutes
Original changelogFixed file tool handling for null-byte paths and duplicate parameters
Fixed Read, Write, Edit and NotebookEdit: a file path containing a null byte now fails that tool call with a clear error instead of ending the whole turn
Fixed Write refusing a call that gives the file path or content twice under two parameter names with identical values
Original changelogFixed sandbox command exclusion matching and added port binding guidance
Fixed permission dialogs and attachment checks reading a path under macOS's `/.vol`, `/.nofollow` or `/.resolve` (which can reach a network mount) before approval
Fixed a permission rule containing a NUL byte being expanded into a wildcard match; such a rule now matches nothing
Fixed sandbox `excludedCommands` entries not matching `git rev-parse --git-dir`, programs named like shell builtins, and commit messages containing `[WIP]` or `#` lines
Fixed sandboxed Bash commands being unable to write to `$TMPDIR` when `CLAUDE_CODE_TMPDIR` is set
Improved sandbox guidance on macOS: when a local dev server can't bind a port, Claude now points to `sandbox.network.allowLocalBinding`
Original changelogFixed duplicate MCP connections, hook waits, and headless handshake hangs
Fixed headless sessions with host-side (SDK) MCP servers stalling on the first message when the host stops responding mid-handshake; remote sessions now wait a few seconds at most
Fixed the "Not logged in · Run /login" footer and missing claude.ai connectors persisting in a session after logging in from another Claude Code process
Fixed `mcp_tool` hooks on blocking events (PreToolUse and similar) being skipped while their MCP server was still connecting; they now wait for it, up to the MCP connect timeout
Fixed the same MCP server being connected twice when a plugin or claude.ai connector and a configured server spell its URL differently (host letter case, default port, trailing slash)
Fixed `MCP_CONNECTION_NONBLOCKING=0` giving up on claude.ai connectors after 1s instead of honoring `MCP_CONNECT_TIMEOUT_MS`
Original changelogFiltered MCP app resources and improved attachment caching and screen readers
Improved screen-reader output in `/mcp`: a disabled server is read as "off" instead of "pending"
Changed Remote Control attachment downloads to reuse connections and to skip files already downloaded in the session
Changed MCP resource lists (the resource list tool and @-mention suggestions) to skip MCP Apps UI resources; reading one by URI still works
Original changelogPlugins add MCP validation checks and fix project-scope management commands
Added MCP server checks to `claude plugin validate`: it reports `.mcp.json` entries that would be silently dropped at load, undeclared `${user_config.*}` references, and insecure URLs
Fixed `--channels` plugin entries being checked against the installed plugin's marketplace alone; the installed plugin's name must now match the entry as well
Fixed `--plugin-dir` on a folder of plugins that also has a `.claude-plugin/marketplace.json` loading one empty plugin instead of the plugins in it
Fixed `claude plugin uninstall` refusing to remove a project-scope plugin that isn't enabled, saying it is "enabled at project scope" while `claude plugin disable` says it is already disabled
Fixed `claude plugin update` failing for project-scoped plugins when `--scope` is omitted — it now resolves the scope the plugin is installed at instead of assuming user
Fixed `claude plugin validate` reporting `privacyPolicyUrl`, `supportUrl` and other listing metadata keys in plugin.json as unknown fields
Original changelogPlugins name offending packages on errors and improve hook paths and caching
Fixed `known_marketplaces.json` recording a marketplace as refreshed when its remote could not be reached and `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE` kept the existing clone
Improved plugin hook-failure errors to name the offending plugin, and added a `claude plugin validate` warning when a shell-form hook leaves `${CLAUDE_PLUGIN_ROOT}` unquoted (it breaks on plugin paths with spaces)
Changed `claude plugin uninstall --json` and the /plugin dialog to say a plugin's data was kept when its folder stays because another installed plugin uses it or install records cannot be read
Original changelogImproved plugin list layout and scrolling, and fixed marketplace updates
Fixed the `/plugin` Errors tab showing no confirmation after its last error is resolved
Fixed `/plugin` starting a second uninstall or update of the same plugin when Enter was pressed again while the first was still running
Fixed a `y` held while `/plugin` checks a marketplace source adding the marketplace the instant the "Add marketplace?" question appears, before it can be read
Fixed the mouse wheel over the `/plugin` Installed list scrolling the pane behind it instead of the list
Fixed lists such as a skill's state options in `/plugin` not being answerable by typing a number in screen-reader mode
Improved the /plugin Installed list: rows now line up in columns (status, name, type, details) across every section
Original changelogSession artifacts collapse to footer pills with improved copy and compression
Fixed the Artifact tool missing from Remote Control sessions that `claude remote-control` starts for you to open from Claude Desktop, claude.ai or the mobile app
Improved the writing in published artifact pages: the bundled artifact-design skill now asks Claude for plain, direct prose
Improved artifact publishing on slow connections: large page uploads are now sent compressed
Changed the session artifact links under the prompt into one footer pill (`⧉ name` or `⧉ N`) that opens `/artifacts`, which now lists this session's artifacts first
Changed the Artifact tool to let Claude load scripts from unpkg.com in artifact pages
Original changelogFixed background agent reports, scheduled routines, and retry loops
Fixed remote sessions staying on "needs approval" with a stale prompt after a permission prompt and a sandbox network-access prompt overlapped and both were answered
Fixed cloud sessions not telling Claude about background agents that finished just before a worker restart
Fixed scheduled routine and notification turns in remote sessions not receiving turn-start notices (newly available tools, MCP changes, date, todos) until after the first tool call
Fixed scheduled tasks and `/loop` wakeups being fired again every second when their delivery failed, which could make Claude Code exit at the end of a turn
Fixed Remote Control reporting "disabled by your organization's policy" when the org policy simply hadn't loaded yet; it now retries the fetch and says it couldn't verify
Original changelogFixed macOS keychain credential loss and optimized interactive startup time
Fixed macOS credential writes dropping stored MCP OAuth tokens or deleting the keychain entry when the login keychain was locked (e.g. right after wake)
Fixed `gcpAuthRefresh`/`awsAuthRefresh` login processes being left running (and holding their localhost callback port on Windows) when Claude Code exits or the refresh times out
Improved Claude Desktop sign-in and usage-limit error messages to point at the app instead of terminal commands
Improved startup: managed settings and policy fetches no longer retry requests that can never succeed
Improved interactive startup time: git reads, startup telemetry and the Bedrock/Vertex model-upgrade checks no longer run before the first frame
Improved debug logs to name settings `env` variables ignored because the session's launch environment already sets them
Original changelogFixed setting source forwarding for sub-sessions and checked workspace trust
Fixed `--input-format stream-json` sessions (Agent SDK, VS Code extension) and scheduled cloud sessions failing every turn with an error when an earlier assistant message had plain-string content
Fixed non-interactive sessions (`-p`, Agent SDK) failing on the next turn after the directory they were started in was deleted mid-session
Fixed interactive startup waiting on the managed-settings network request (about 80 ms, 17+ seconds when the network is unreachable) when no MCP servers or plugins are configured
Fixed `claude --bg` starting a background session, and running its project hooks, in a directory that had not passed the workspace trust prompt; it now asks for trust first, or exits when not run interactively
Fixed `--setting-sources` (and SDK `settingSources`) not being forwarded to spawned sessions: teammates, `/bg`, `claude agents` sessions and `--worktree --tmux` now start with the parent's restriction
Original changelogMulti-agent loads JSON files and batch execution supports worktree hooks
Improved `--agents` to accept the path to a JSON file (with `-p`) as well as inline JSON, and to allow an empty `prompt`
Improved `/batch` to run where a WorktreeCreate hook provides the agent worktrees, not only inside a git repository
Improved the `/` menu, `/skills`, `/context` and the `/plugin` Installed list to show skills synced from claude.ai by their short name when no other command uses it, not `anthropic-skills:<name>`
Improved `/deep-research` reliability on long research briefs by removing unused required fields from the scope step's output
Removed the leftover "(removed)" `/agents` entry from the command menu and `/help`; typing `/agents` still explains where the wizard went
Original changelogFixed Vim mode key actions and improved queued messages and pasted text
Fixed one-line pastes showing on their own lines in the sent message for prompts from VS Code or Remote Control and for expanded paste placeholders
Fixed a message queued while Claude is working losing or changing the IDE selection it was written with, and queued messages not showing their selection
Fixed vim mode: `dj`/`dk`/`dG`/`dgg` and their `c`/`y` forms acting on part of a line; `1G` going to the last line; `d0`/`c0`/`y0` doing nothing; the cursor being off by one after `.` repeats an insert; and `o`/`p` on a `!`-prefixed line switching to shell mode
Fixed vim mode `cw` on a space, an empty line, a word's last letter or a one-letter word also changing the next word; word motions stopping inside words in Hindi, Bengali and other scripts; and `.`, `p` or `P` that inserts text starting with `!` switching to shell mode, losing text or editing the wrong character
Fixed the prompt cursor moving one character too far after an accent typed as its own key
Changed queued messages to show in the conversation above the spinner instead of under it
Original changelogImproved agent panel hints and focus, and updated background progress row
Fixed the agent panel's footer hint ignoring keys rebound in `keybindings.json`, and showing a stray ` · ` when the stop-all-agents shortcut is unbound
Fixed the agent panel footer offering "Enter to view" and "x to stop" on the agent you are already viewing (where x types into its input), and "Enter to view" on the main row when main is already shown
Fixed a mouse click on an agent-panel row leaving the keyboard cursor on the previously selected row
Fixed Esc interrupting the running turn instead of deselecting the selected agent-panel row
Improved the background workflow row below the prompt: it now shows the name, a progress bar, the agent count on wide terminals, elapsed time, total tokens, and the large-workflow warning
Original changelogImproved workflow list layout and added confirmation before stopping reviews
Fixed /workflows moving the pointer to a different run, and `x` stopping it, when a new run started while the list was open
Changed /workflows: each run's row leads with its status icon and elapsed time, and a narrow terminal keeps the run's name and time, dropping the agent and token counts first
Changed the background tasks list (`/tasks`): pressing `x` on a running `/ultrareview` now asks for confirmation before stopping the review
Original changelogStandardized double-press cancel across dialogs and protected rapid keystrokes
Fixed `1` answering Yes in `/permissions`' delete and remove-directory confirms while the pointer is on No, which let a held `1` remove one workspace directory after another
Fixed pressing Shift+Tab twice quickly landing on the wrong permission mode
Fixed Ctrl+C or Ctrl+D pressed twice quitting Claude Code instead of closing the dialog in the remaining dialogs and pickers, such as `/memory`, `/hooks`, `/mcp` (including a server's sign-in screen), `/export`, `/copy`, `/theme`, and `/teleport`'s uncommitted-changes and login prompts (where Esc also quit)
Fixed keys that arrive in one burst of input (e.g. over Remote Control), such as an arrow key followed by Enter, `x` or `s`, acting on the previous selection: a stale effort level in `/effort` and the model picker, and the previously highlighted row in `/skills`, the background task rows under the prompt, MCP server prompts and `/install-github-app`
Improved `/install-github-app`, `/desktop`, the `/permissions` auto mode environment prompts, and the `/plugin` "Add marketplace?" and "Run this command?" prompts: they now use the standard dialog frame with key hints, and Ctrl+C or Ctrl+D cancels them on the second press like other dialogs
Improved the Remote Control confirmation: its options are briefly inactive again after the terminal window regains focus, so a key pressed while switching back cannot answer it
Original changelogFixed feedback report cancellation, setup restarts, and session naming
Fixed /feedback, /bug and /share still sending your report after you cancelled it while it was being sent
Fixed /feedback, /bug and /share failing every send with "Couldn't send feedback" after a Remote Control Stop arrived while the dialog was open
Fixed `/ide` showing "No available IDEs detected" while also listing a running IDE
Fixed the terminal being left in a broken state (crash or garbled input) when `/setup-bedrock` or `/setup-vertex` restarts Claude Code to apply new settings
Fixed `/config` exiting when `respectGitignore` or `copyFullResponse` in `~/.claude.json` holds `null`
Fixed the session name from /rename disappearing while Claude asks a multiple-choice question, so side-by-side sessions stay identifiable
Original changelogFixed model thinking switch display, context counts, and diff snapshots
Fixed Alt+T and `/config` offering to turn thinking off on models that can't; thinking now stays on there, with a one-line reason in place of the switch
Fixed `/context` total leaving out messages added since the last response; it now matches its categories and can read higher than the status line
Fixed `/install-github-app` updating the workflow after "Skip workflow update" was chosen, running setup twice on a repeated Enter, and ↑ on the repository step blocking a typed repository name when no repository was detected
Fixed `/heapdump` summary saying most memory is native when it is in the JS heap snapshot
Fixed Bash edit-diff snapshot directories piling up in the temp folder: abandoned ones are now deleted right away and the rest when Claude Code exits
Original changelogFullscreen lists add scrollbars with paging shortcuts and hover highlights
Added a scrollbar to the `/skills`, `/mcp` and `/plugin` Installed lists in fullscreen mode, like the one `/workflows` now has: it appears while the mouse is over the list and can be clicked or dragged
Fixed PgUp and PgDn doing nothing in a dialog's list (for example `/skills`) in fullscreen mode
Fixed the hover highlight lingering on a list row in fullscreen mode after scrolling or filtering moved it away from the mouse
Fixed long list rows, such as in the /remote-control menu, wrapping onto a second line in narrow terminals; they're now cut with …
Improved the `/workflows` and `/mcp` lists: they page (PgUp/PgDn, Home/End) and take j/k and the mouse like other lists, their arrows follow `select:previous`/`select:next` rebinds, and `x` in `/workflows` stops the run the pointer is on
Improved the `/plugin` plugin and marketplace details menus and the `/remote-control` already-connected menu: they now support Home/End and clicking a row
Original changelogImproved tabbed dialog navigation and streamlined skill and hook details
Fixed the selected tab in tabbed dialogs (`/config`, `/plugin`, `/permissions`) showing no highlight while the tab bar has focus when color is off (`NO_COLOR`)
Improved keyboard navigation in tabbed dialogs such as `/permissions` and `/usage`: ↑/↓ move focus between the tab row and the content, and a list responds to keys only while it has focus
Improved `/help` and `/sandbox`: ←/→ and Tab switch tabs from inside a tab's list, and ↓ on an empty Custom commands tab in `/help` no longer leaves the keys stuck until Esc
Improved `/skills`: each row now leads with the skill's name, with ✔ or ◯ alone showing on or off, and stays on one line in narrow terminals
Improved narrow list rows (`/skills`, `/workflows`, `/feedback`): a name keeps 20 columns beside its first detail, and details are shown whole or not at all
Improved `/hooks`: a hook's detail screen now says what kind of hook it is and where to change it, instead of always pointing at settings.json, and the hooks-disabled, safe mode and managed-hooks-only notices each say what is happening in one plain sentence
Original changelogFixed list numbering and blank lines, and improved diffs and server rows
Fixed an extra blank line above a list item whose text starts on the line after its bullet, in screen-reader mode, quoted lists and long lists
Fixed bulleted lists of plain numbers (like `- 316.`) showing as letters, roman numerals or the wrong numbers
Fixed `/hooks` and `/mcp` detail views printing a long value over the row below it in narrow terminals
Improved `/diff`: a scrollbar shows where you are in a long list of changed files, and long paths no longer wrap their rows
Changed hovering a list row in fullscreen mode, including in `/config`, to tint the row instead of drawing a second ❯ pointer beside the focused row's
Changed /mcp: each server's row now starts with its status icon and name, says its state once, and in a narrow terminal drops trailing facts like "managed" before shortening the name
Original changelogFixed Windows temp directory permissions and update backup conflicts
Windows: Fixed Bash commands that write to `$TMPDIR/…` failing with "Permission denied"
Windows: Fixed a race in which Claude Code sessions updating at the same moment could delete each other's `claude.exe` backup, which could leave no `claude.exe` behind
Original changelogVS Code extension adds auto mode prompts and fixes session loading
[VSCode] Added a Continue/Stop prompt in the VS Code and JetBrains panels when auto mode falls back to billed classifier requests, replacing the unanswerable warning line
[VSCode] Fixed opening a Web session with no messages saving an empty local copy that could not be resumed; an error now says where to continue it
[VSCode] Fixed a claude.ai/code session opening empty or with only part of its conversation, with no error, when the server failed to return its history, part of it failed to load, or a network sign-in page answered in its place; it now shows an error and can be opened again
[VSCode] Fixed conversations in editor tabs hanging silently after the extension host restarts; the tab now tells you to reopen it from the session list
[VSCode] Fixed Claude attaching option previews to multiple-choice questions in the chat panel, where the question card never shows them
[VSCode] Fixed the session manager's cost and usage block wrapping mid-text on a narrow side bar, and showing totals from a previous login after an account switch
Original changelogWeb cloud sessions add Fast mode switch and improve GitHub workflows
[Claude Code on the web] Added a Fast mode switch to the composer's model menu in cloud sessions, shown when your plan includes fast mode and the selected model supports it
[Claude Code on the web] Added a settings shortcut on the GitHub setup tip and a "Troubleshoot GitHub connection" link in the repository pickers, both opening your GitHub connection page
[Claude Code on the web] Fixed routines with a GitHub trigger for a pull request being converted to draft never firing; they now start a run when the pull request is converted
[Claude Code on the web] Fixed cloud sessions on a repository that isn't hosted on GitHub showing a Create PR button that could never work; the button is now hidden there
[Claude Code on the web] Fixed the GitHub setup tip on claude.ai/code covering the repository picker's search box and rows while the picker is open; it now steps aside until the picker closes
[Claude Code on the web] Improved the file card shown when a cloud session can't open a file: it now says whether the file no longer exists or the session's permission settings block reading it
Original changelogClaude Tag in Slack adds stop notices and fixes reply stalls and crashes
[Claude Tag] Added a short line in the Slack thread after someone presses Stop, naming who stopped Claude's response and saying to mention @Claude to continue
[Claude Tag] Fixed Slack channels where Claude could permanently stop responding to replies inside threads; affected channels now recover on their own with the next new message to Claude
[Claude Tag] Fixed Claude resuming a stopped request after you press Stop in Slack, for example when a check-in fired or a background task ended; messages sent mid-response are now read
[Claude Tag] Fixed Slack replies arriving many minutes late, or never, after Claude's session crashed mid-task, such as on a failed setup script; it now restarts on its own within minutes
[Claude Tag] Fixed Claude in Slack promising an automatic restart, then failing generically, when a session's configuration is too large to start; the thread now says why and how to retry
Original changelogClaude Tag improves long thread context and fixes Enterprise Grid channels
[Claude Tag] Fixed very long Slack threads: Claude could silently withhold a reply after judging it against weeks-old messages, and a restart deep into the thread could lose recent context
[Claude Tag] Fixed Claude answering every mention with "Couldn't check this channel just now" in a Slack channel moved from Enterprise Grid org-wide sharing into a single workspace
[Claude Tag] Fixed very large Enterprise Grid workspaces reached mostly through channels shared across workspaces getting "Couldn't check this channel" again after a quiet hour
[Claude Tag] Changed the routine list Claude gives when asked in a Slack thread to show that thread's own scheduled tasks by default instead of every routine in the channel
Original changelogFixed Claude Tag inference hook notices, model limits, and cloud plugins
[Claude Tag] Fixed a Slack request blocked by your organization's inference hook showing a generic retry notice; the thread now shows the hook's deny message and Claude doesn't retry
[Claude Tag] Fixed Claude in Slack offering to switch to models your organization can't use; it now lists and offers only models the switch will actually accept
[Claude Tag] Fixed requests to DynamoDB and Kinesis account-based endpoints failing to authenticate when sent through an AWS connection in Claude Tag
[Claude Tag] Fixed the Plugins sections in Claude Tag admin settings failing to load for organization admins and listing attached plugins as raw IDs; they now load and show each plugin's name
Original changelogFixed code review retries skipping reviews after force-push events
[Code Review] Fixed a pull request getting no review when its reviewed commit was force-pushed away while a failed review was being retried in a repository not set to review every push