What's changed
- Added Claude apps gateway support for newer Claude Desktop keys in
desktoppolicy blocks, includingblockReadsOutsideWorkingDirectoriesanddisableBypassPermissionsMode - Added
assume_roleon 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) - Added
telemetry.resource_attributesto the Claude apps gateway config, to put fixed labels on the telemetry of Claude Desktop and/loginsessions - Added
"attribution": falseinsettings.jsonto 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 - 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
- Added MCP server checks to
claude plugin validate: it reports.mcp.jsonentries that would be silently dropped at load, undeclared${user_config.*}references, and insecure URLs - Added an auto mode recommendation to
/insightsthat estimates how many permission prompts auto mode could have handled in your recent sessions - Added a scrollbar to the
/skills,/mcpand/pluginInstalled lists in fullscreen mode, like the one/workflowsnow has: it appears while the mouse is over the list and can be clicked or dragged - 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
- Fixed
CLAUDE_CODE_RETRY_WATCHDOGsessions failing on the first 5xx or dropped connection after a run of 429/529 waits, and sleeping uncapped and silently on a longRetry-Afterfrom 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-jsonsessions (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,/.nofollowor/.resolve(which can reach a network mount) before approval - Fixed a recursive
rmwhose target is only command-substitution output, such asrm -rf "$(pwd)", running unprompted in auto and--dangerously-skip-permissionsmode; it now asks even with a Bash allow rule, unless run withCLAUDE_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