Added Claude apps gateway support for newer Claude Desktop keys in `desktop` policy blocks, including `blockReadsOutsideWorkingDirectories` and `disableBypassPermissionsMode`
Addedassume_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
Addedguardrail: {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)
Addedtelemetry.resource_attributes to the Claude apps gateway config, to put fixed labels on the telemetry of Claude Desktop and `/login` sessions
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
AddedMCP 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
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
Added an auto mode recommendation to `/insights` that estimates how many permission prompts auto mode could have handled in your recent sessions
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
VSCodeAdded 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
Claude Code on the webAdded 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 webAdded 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 TagAdded a short line in the Slack thread after someone presses Stop, naming who stopped Claude's response and saying to mention @Claude to continue
~changed 18
Changed send now (ctrl+enter or ctrl+x ctrl+s) to move running tools to the background instead of cancelling the turn
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
ChangedCLAUDE_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
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)
Changed AGENTS.md support to also work on Amazon Bedrock, Google Vertex AI, Microsoft Foundry, LLM gateways, and sessions with telemetry disabled
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
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`
Changed queued messages to show in the conversation above the spinner instead of under it
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
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
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
ChangedRemote Control attachment downloads to reuse connections and to skip files already downloaded in the session
ChangedMCP resource lists (the resource list tool and @-mention suggestions) to skip MCP Apps UI resources; reading one by URI still works
Changedclaude 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
Changed the background tasks list (/tasks): pressing `x` on a running `/ultrareview` now asks for confirmation before stopping the review
Claude TagChanged 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
−removed 1
Removed the leftover "(removed)" /agents entry from the command menu and `/help`; typing `/agents` still explains where the wizard went
↑improved 33
ImprovedClaude Desktop sign-in and usage-limit error messages to point at the app instead of terminal commands
Improvedstartup: managed settings and policy fetches no longer retry requests that can never succeed
Improvedinteractive startup time: git reads, startup telemetry and the Bedrock/Vertex model-upgrade checks no longer run before the first frame
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
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
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
Improved sandbox guidance on macOS: when a local dev server can't bind a port, Claude now points to `sandbox.network.allowLocalBinding`
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 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)
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
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
Improved the large CLAUDE.md startup notice to also count instruction files together, so many mid-sized files and @-imports are caught
Improved debug logs to name settings `env` variables ignored because the session's launch environment already sets them
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/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 /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
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
Improved the /plugin Installed list: rows now line up in columns (status, name, type, details) across every section
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/diff: a scrollbar shows where you are in a long list of changed files, and long paths no longer wrap their rows
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
Improved screen-reader output in `/mcp`: a disabled server is read as "off" instead of "pending"
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
Claude Code on the webImproved 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
✓fixed 112
Fixed a crash ("unrecoverable interface error") that could end a session while an API request was being retried
Fixed a turn that could retry indefinitely, ignoring `--max-turns`, when the model alternated unparseable tool calls and output-limit truncation
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
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
FixedCLAUDE_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 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--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 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 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 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
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 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`
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
Fixedclaude --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
FixedRead, 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
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
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
FixedRemote 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
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
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)
FixedgcpAuthRefresh/`awsAuthRefresh` login processes being left running (and holding their localhost callback port on Windows) when Claude Code exits or the refresh times out
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
Fixedmcp_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)
FixedMCP_CONNECTION_NONBLOCKING=0 giving up on claude.ai connectors after 1s instead of honoring `MCP_CONNECT_TIMEOUT_MS`
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
Fixedclaude 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
Fixedclaude 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
Fixedclaude plugin validate reporting `privacyPolicyUrl`, `supportUrl` and other listing metadata keys in plugin.json as unknown fields
Fixedknown_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
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
Fixed1 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 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/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
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
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 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`
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
Fixedvim 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
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 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
Fixed PgUp and PgDn doing nothing in a dialog's list (for example `/skills`) in fullscreen mode
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
Fixed /workflows moving the pointer to a different run, and `x` stopping it, when a new run started while the list was open
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`)
Fixed the mouse wheel over the /plugin Installed list scrolling the pane behind it instead of the list
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 …
Fixed/hooks and `/mcp` detail views printing a long value over the row below it in narrow terminals
Fixed lists such as a skill's state options in `/plugin` not being answerable by typing a number in screen-reader mode
WindowsFixed Bash commands that write to `$TMPDIR/…` failing with "Permission denied"
WindowsFixed 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
VSCodeFixed 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
VSCodeFixed 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
VSCodeFixed conversations in editor tabs hanging silently after the extension host restarts; the tab now tells you to reopen it from the session list
VSCodeFixed Claude attaching option previews to multiple-choice questions in the chat panel, where the question card never shows them
VSCodeFixed 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
Claude Code on the webFixed 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 webFixed 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 webFixed 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 TagFixed 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 TagFixed 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 TagFixed 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 TagFixed 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
Claude TagFixed 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 TagFixed 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 TagFixed very large Enterprise Grid workspaces reached mostly through channels shared across workspaces getting "Couldn't check this channel" again after a quiet hour
Claude TagFixed 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 TagFixed 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 TagFixed requests to DynamoDB and Kinesis account-based endpoints failing to authenticate when sent through an AWS connection in Claude Tag
Claude TagFixed 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
Code ReviewFixed 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