AI CLIs & agents · Anthropic

Claude Code changelog

Anthropic's agentic coding tool for the terminal, IDE and desktop.

Latest version
v2.1.303
Last shipped
12h ago
Updates · 90 days
40
Avg. release gap
1.2 days
Weekly activity · last 26 weeks0 updates · 25w ago0 updates · 24w ago0 updates · 23w ago0 updates · 22w ago0 updates · 21w ago0 updates · 20w ago0 updates · 19w ago0 updates · 18w ago0 updates · 17w ago0 updates · 16w ago0 updates · 15w ago0 updates · 14w ago0 updates · 13w ago0 updates · 12w ago0 updates · 11w ago0 updates · 10w ago3 updates · 9w ago8 updates · 8w ago6 updates · 7w ago7 updates · 6w ago6 updates · 5w ago8 updates · 4w ago4 updates · 3w ago6 updates · 2w ago7 updates · 1w ago5 updates · this week

Release history

Recent updates

YesterdayOct 18, 2026

Release v2.1.303

Claude Code v2.1.303

What's changed Bug fixes and reliability improvements

Read full notes

What's changed

  • Bug fixes and reliability improvements

Friday, October 16Oct 16, 2026

Release v2.1.302

Claude Code v2.1.302

What's changed Added CLAUDE_CODE_AUTO_MODE_MODEL to choose the model the client-side auto mode classifier uses; it does not change the model for server-side auto mode Added an Idle compaction row to /config for turning idle compaction off or back on; the…

Read full notes

What's changed

  • Added CLAUDE_CODE_AUTO_MODE_MODEL to choose the model the client-side auto mode classifier uses; it does not change the model for server-side auto mode
  • Added an Idle compaction row to /config for turning idle compaction off or back on; the notices shown after an idle compaction now say how to turn it off
  • Added a notice to /design-sync and /design-login that standalone Claude Design (claude.ai/design) closes by December 14, 2026
  • Fixed a "Prompt is too long" error when stopping a turn while the conversation was being compacted
  • Fixed requests failing with "diagnostics: Extra inputs are not permitted" after switching to Vertex or Bedrock mid-session
  • Fixed the Read tool loading an image file of any size, or a pipe or device named like an image, entirely into memory; image sources over 128 MB are now refused
  • Fixed /autocompact and /effort saving to the wrong model when a gateway names Opus 4 or 4.1 with a prefix, such as anthropic/claude-opus-4-1
  • Fixed a prompt cache miss when a tool added mid-session was loaded again through ToolSearch or after compaction
  • Fixed claude plugin and other subcommands sometimes exiting before a queued settings or config write finished, which could lose the change or leave a .tmp file behind
  • Fixed plugin marketplaces re-cloning on every refresh, and newly installed git plugins showing version "unknown", when git defaults to the reftable ref format
  • Fixed the PowerShell tool not finding commands in a plugin's bin/ folder, and reporting an error when a search that finds nothing (rg, grep, findstr, git grep) is piped into Select-Object or another formatting cmdlet
  • Fixed Claude in the desktop app pointing you to claude.ai settings or /mcp to authorize or reconnect an MCP server where that option isn't available
  • Fixed artifact publishes sometimes failing when Claude sent an empty list of edits, and Claude retrying an artifact update the wrong way after a newer version of the artifact turned it away
  • Fixed classifier_category missing from OpenTelemetry tool_decision events for most auto mode classifier blocks, and new tool_decision attributes pushing out tool_use_id, tool_source and tool_parameters when OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT is low
  • Fixed rows in the agents view staying blank after moving down a long list or folding a section
  • Fixed claude remote-control --help not printing its usage and exiting when not signed in
  • Fixed /design consent and /design revoke suggesting /design-login when they fail in a cloud session, where it isn't available; the message now points to claude.ai/design/settings
  • Fixed MCP servers showing no tools, or every tool call failing, when the server negotiates protocol version 2026-07-28 but omits resultType, ttlMs or cacheScope
  • Fixed prompt suggestions spending usage credits on models your plan pays for only with credits: they are now skipped after a reply billed to credits
  • Fixed URLs written in backticks being clickable only on their first row when they wrap; the whole URL is now one link in terminals that support hyperlinks
  • Fixed claude plugin details <name>@builtin suggesting claude plugin list, which never shows built-in plugins, when the plugin isn't found; it now points to /plugin
  • Fixed an emoji that a link starts inside wrapping one column too wide, which hid it in question previews and turned tables into lists
  • Fixed worktree isolation refusing to create or resume worktrees under git 2.56 or later when a stray .git file points at a directory that doesn't exist
  • Fixed a cloud session's cost and usage restarting from zero after the session resumed in a new process
  • Self-hosted runner: Fixed git fetches failing with "bad object refs/heads" in sessions that reuse a checkout stored in git's reftable format
  • Windows: Fixed every file write being refused or asked about for projects on exFAT or FAT32 drives, including in sessions started with --plugin-dir
  • Improved startup time with many plugins enabled: plugin command and agent files now take far fewer file system calls to load, most of all on Windows
  • Improved auto mode with the server-side classifier: a conversation too long for the safety check is now compacted, instead of every checked tool call being denied
  • Improved the message when a background session reopened from another folder has no LLM gateway: it now says why, instead of "Not logged in"
  • Changed claude -p and Agent SDK sessions with no permission mode to start in default mode on third-party providers, with telemetry off or on a fresh install; --permission-mode auto keeps auto
  • Changed fork subagents (subagent_type: "fork") to be on by default in claude -p, the Agent SDK, the desktop app and VS Code, as they already are in the terminal; CLAUDE_CODE_FORK_SUBAGENT=0 turns them off, and claude mcp serve never offers them
  • Changed the desktop app and VS Code to always run the main conversation's subagents in the background, as the terminal does, rather than let Claude choose; a subagent's own Agent calls in claude -p, the Agent SDK, the desktop app and VS Code now run in the foreground by default
  • Changed the ← for agents footer hint to hide 10 seconds after a session opens; the count of agents waiting on you still shows
  • Changed where the Claude in Chrome instructions sit in the system prompt so that new conversations can read them from the shared prompt cache
  • Changed prompt and agent hooks so that at most 12 of one event run at a time; the rest wait their turn
  • Changed the message shown when your organization's policy turns off /feedback: it now points to GitHub issues instead of an organization admin
  • [VSCode] Fixed text after an unclosed code block in a list showing as plain text while a reply streams, then turning into code
  • [VSCode] Fixed MCP server sign-in from the panel opening a broken authorization page when the server URL contains a query string
  • [VSCode] Fixed the @browser banner saying "Browser connected" when no browser with the Claude extension can be reached
  • [Cloud sessions] Added a banner on a routine's page that says why its last run didn't start, such as your organization reaching its limit on concurrent cloud sessions
  • [Cloud sessions] Fixed "Rewind to here" failing on every message except the newest in cloud sessions; self-hosted runners need Claude Code v2.1.246 or later
  • [Cloud sessions] Fixed the pull request status bar in cloud sessions flipping a pull request with merge conflicts back to ready while GitHub rechecked it
  • [Cloud sessions] Fixed routine runs showing as Completed after their cloud session stopped unexpectedly, and as Cancelled when archived before they started, instead of failed
  • [Cloud sessions] Fixed the diff view in cloud sessions missing changes or failing to load after the session's GitHub repository was renamed or moved
  • [Cloud sessions] Fixed a scheduled routine run that failed partway being run again from the start an hour or more later, which could repeat work such as posting the same report twice
  • [Cloud sessions] Fixed an open cloud session sometimes not showing messages sent from another device until you reloaded the page or clicked away and back
  • [Cloud sessions] Improved the error shown when a cloud session fails to start: it now says "Connection lost" or "Server error" instead of "Something went wrong"
  • [Remote Control] Fixed a subagent's pane spinning forever in a Remote Control session after your computer goes offline; it now says Remote Control is disconnected
  • [Claude Tag] Fixed "is thinking…" staying up under a mention in a Slack channel or DM after Claude answered it by editing one of its earlier messages
  • [Claude Tag] Fixed URLs in code blocks under a numbered or bulleted step of Claude's Slack replies being wrapped in angle brackets, which broke copied commands
  • [Claude Tag] Fixed HEIC, SVG, TIFF and BMP images attached in Slack never reaching Claude; they now arrive as files in its working files, like other file types

…

Thursday, October 15Oct 15, 2026

Release v2.1.301

Claude Code v2.1.301

What's changed Added CLAUDE_CODE_RETRY_WATCHDOG_MAX_USAGE_LIMIT_WAIT_MS so unattended retry mode (CLAUDE_CODE_RETRY_WATCHDOG) ends a request at a usage limit that resets too far away instead of waiting Added OpenTelemetry tracing guidance to the claude-api…

Read full notes

What's changed

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

Wednesday, October 14Oct 14, 2026

Release v2.1.300

Claude Code v2.1.300

What's changed Added virtualText to a mod's prompt decorations: text drawn in the prompt box that never enters the draft or the submitted prompt Added cache_creation_5m_tokens and cache_creation_1h_tokens to the OpenTelemetry api_request event, splitting cache…

Read full notes

What's changed

  • Added virtualText to a mod's prompt decorations: text drawn in the prompt box that never enters the draft or the submitted prompt
  • Added cache_creation_5m_tokens and cache_creation_1h_tokens to the OpenTelemetry api_request event, splitting cache writes by lifetime
  • Added $.ui.view({ agentId }) for mods: shows an agent's transcript in the main view when you ask, and $.ui.view({}) goes back
  • Added a dir prop on a mod's Text for right-to-left text: on Windows and in VS Code's terminal its rows read in that direction and sit flush right
  • Added /advisor on Claude Platform on AWS; no advisor runs until you pick one with /advisor, advisorModel or --advisor, and CLAUDE_CODE_DISABLE_ADVISOR_TOOL=1 turns it off
  • Added OpenTelemetry GenAI semantic-convention attributes to trace spans, such as gen_ai.provider.name, gen_ai.conversation.id, gen_ai.tool.name and error.type
  • Added support for rewriting a workflow agent's prompt and model in the agent.spawn mod hook, which could only refuse workflow agents before
  • Added the prompt.change mod hook, raised when the prompt box's text changes without a typed edit: a recalled history entry, a clear, an undo, or a plugin's fill
  • Fixed cloud sessions telling Claude that an organization policy blocked a host when the session's own network settings did
  • Fixed /autocompact warning about high token usage when you choose a smaller auto-compact window
  • Fixed SessionEnd hooks sometimes not running when you exit while a background command is still running
  • Fixed claude --help naming a removed tool in its description of --restricted
  • Fixed claude agents not refreshing any pull request's status when the data for one of them came back incomplete
  • Fixed Claude being told a background agent was lost, not resumable, after a cloud session's container was replaced, when the agent had already been resumed once
  • Fixed subagents you had typed messages to disappearing from /tasks shortly after finishing, leaving no way back to the conversation
  • Fixed a completed parent agent dropping off the breadcrumb (its child shown re-rooted at top level) while you were viewing the child
  • Fixed the agents view taking a typed word such as "up", "down" or "escape" for that key when input arrived in a burst, which could move the peek mid-reply or clear a draft
  • Fixed automatic tool search (ENABLE_TOOL_SEARCH=auto) turning off part-way through a conversation, for example while MCP servers reconnect after a resume
  • Fixed a login refused by forceLoginOrgUUID leaving the refused organization's token stored, or live after /login
  • Fixed the diff view in Claude Desktop and Remote Control sessions not noticing a conflicted cherry-pick or revert in reftable repositories
  • Fixed the Artifact tool's verbose and ctrl+o line reading Artifact("(unprintable path)") while a call's input arrives; its row now shows "Waiting…" and "Running…" as Bash's does
  • Fixed the first transcript entry written after resuming a session being lost when a crash had cut the transcript's last line short
  • Fixed /branch dropping messages, and claude purge skipping subfolder projects, when they contain a Unicode line or paragraph separator (U+2028, U+2029)
  • Fixed plugin WorktreeCreate and WorktreeRemove hooks not running when Claude Code starts with --worktree (not yet with --tmux)
  • Fixed OpenTelemetry tool_result events missing git_commit_id after git commit -q in repositories using reftable ref storage
  • Fixed a prompt that a mod's prompt.submit hook rewrote or dropped still being recorded as typed in the OpenTelemetry user_prompt event and interaction span, and in session title requests
  • Fixed a note meant for Claude about mod hot-reloading appearing in the transcript as if you had typed it
  • Fixed agent hooks ignoring their model: aliases like haiku now resolve, a subagent's model no longer overrides it, and an unavailable model falls back to the caller's instead of allowing the action
  • Fixed --worktree sessions sometimes starting from the wrong commit when a tag or branch was named like a commit ID, and their starting git status naming a branch other than the new worktree's
  • Fixed the branch showing as ".invalid" and --worktree failing to reopen a worktree in repositories using git's reftable ref storage
  • Fixed Claude naming files in the session scratchpad by a bare filename or relative path instead of their full path
  • Fixed claude remote-control servers giving up on renewing their connection after a brief sign-in error, such as a locked keychain; they now retry, and warn when you need to run claude /login
  • Fixed --worktree failing in a worktree of a bare repository when origin's default branch can't be fetched; the fallback base is now the current checkout's HEAD, not the main repository's
  • Fixed starting Claude Code in a VS Code, Cursor or Devin Desktop integrated terminal launching the editor's command-line tool twice to check for the extension; it now launches it once
  • Fixed a mod's prompt.edit hook not being raised for a newline entered with the chat:newline keybinding (Ctrl+J, or a rebound Enter)
  • Fixed a conversation failing on every turn with a 400 error when the API rejected an MCP tool's input schema; Claude Code now sends that tool without parameters for the rest of the conversation
  • Fixed resuming a headless or Agent SDK session losing the recent messages a compaction had kept, when the compaction followed a reply cut at the output token limit (compactions from this version on)
  • Fixed Claude not being told about an MCP server's tools and instructions until its next tool call, when the server finished connecting after a compaction
  • Fixed Remote Control sessions being marked stopped while still running, on a computer serving several sessions at once
  • Fixed resuming a headless or Agent SDK session losing its compaction summary or bringing back pre-compaction history, when the compaction followed a retried or unfinished reply in the same turn
  • Fixed Claude polling a background command's output file or sleeping while it runs
  • Fixed feature flags and staged rollouts staying stale behind a TLS-inspecting proxy whose certificate is trusted only through the OS certificate store
  • Fixed claude daemon stop --any printing "stopped" while a stuck background service kept running: it now waits, force-kills the service, and says so with exit 1 if it is still there
  • Fixed claude daemon stop exiting with no output, and leaving sessions listed as running, when telemetry is turned off
  • Fixed Write, Edit and NotebookEdit in Cowork cloud sessions reporting success for a path on your own computer, where the file never arrived
  • Fixed Claude searching for deferred tools already loaded earlier in the conversation when a session resumes a history that never listed them
  • Fixed secondary (dim) text looking the same as normal text under the dark ANSI theme and on 16-color terminals
  • Fixed cloud sessions hanging 5 minutes per turn when the organization's policy can't be read; the turn now ends promptly and says why
  • Fixed a cloud session sometimes running an already answered message a second time after the session restarted during a long reply
  • Self-hosted runner: Fixed the runner and orchestrator freezing (no polls, /healthz or SIGTERM shutdown) while nobody reads their output; logs keep the latest 256 KiB and count drops (not on Windows)
  • Improved WebFetch in Cowork cloud sessions to tell Claude that a page failed moments ago instead of fetching it again
  • Improved mod sharing in the built-in plugin-authoring skill: Claude scans a mod's files for keys before opening them, and asks before scanning a folder outside the project
  • Improved the note Claude 3 models get about an @-mentioned PDF, so they less often answer without reading it

…

Release v2.1.299

Claude Code v2.1.299

What's changed Added CLAUDE_CODE_DISABLE_FILE_MENTIONS environment variable: Claude gets the paths of @ file mentions to read with its file tools, not the files' contents Added idle compaction in the terminal: a 200K+ token conversation left idle for about 54…

Read full notes

What's changed

  • Added CLAUDE_CODE_DISABLE_FILE_MENTIONS environment variable: Claude gets the paths of @ file mentions to read with its file tools, not the files' contents
  • Added idle compaction in the terminal: a 200K+ token conversation left idle for about 54 minutes is compacted before its one-hour prompt cache expires, so your next message doesn't reprocess it all
  • Added CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS to change idle compaction's 200K-token minimum; "idleCompaction": false in settings.json turns it off. Both need v2.1.290 or later
  • Added $.prompt.media so a prompt.submit hook of a mod installed by managed settings can read the bytes of an image or document attached to the prompt
  • Added $.session.identity() for mods installed by managed settings: how the session is signed in, and its organization and email when managed forceLoginOrgUUID lists that organization
  • Added size, weight, mono and tabular to a mod's Text and named spacing steps (xs to xl) to its Box; bold is deprecated in favor of weight
  • Added --shutdown-drain-sec to claude self-hosted-runner orchestrator: on SIGTERM it stops polling and gives the poll in flight and running spawn hooks up to that many seconds to finish
  • Added the skill's frontmatter, source, plugin name and file path to what a mod's skill.prompt hook receives
  • Added /effort and /fast in agent view to set what new sessions start with; a bare /model, /effort or /fast there now opens a picker
  • Added a "safe mode" line to the agents view peek panel for background sessions started with --safe-mode
  • Added a one-time note when plan mode won't ask before most edits or commands because bypass permissions is available
  • Added --disallow-tools and a disallowed_tools case field to claude plugin eval to keep specific built-in tools, such as Agent, out of eval runs
  • Added support for turning off the attribution block in Claude Desktop's Code tab: set CLAUDE_CODE_ATTRIBUTION_HEADER=0 in the env of a Claude apps gateway's code policy
  • Added a field to the attribution block in Claude Code sessions behind a Claude apps gateway; remove the block with CLAUDE_CODE_ATTRIBUTION_HEADER=0
  • Added a queue door to the session.append mod hook, so a mod can make the transcript's queue records differ from the prompt as sent
  • Added a note in /plugin and claude plugin validate naming a mod's hooks that are skipped where an organization manages Claude Code
  • Added /usage warnings for max effort, workflows, always-on context and large tool results
  • Fixed the error for a denied cloud session, which could point to the wrong organization when a key from apiKeyHelper was in use
  • Fixed sessions on a gateway-specific model name behind a custom ANTHROPIC_BASE_URL ending with "Prompt is too long · automatic compaction failed" near 200K tokens instead of sending the request
  • Fixed a mod that submits a prompt at the end of every turn keeping a headless run going past --max-turns, --max-budget-usd, an interrupt, or the end of the host's conversation
  • Fixed cloud sessions sometimes showing the model's follow-up text after a tool group's one-line label
  • Fixed the Write and Edit tools creating a mod in a session's mods folder without asking in accept-edits mode when the config directory's path has no .claude in it
  • Fixed installed mods that kept running in an open session after being turned off remotely; they now unload between turns
  • Fixed Edit and Retry in Cowork and claude.ai cloud sessions failing on a message stopped while its UserPromptSubmit or mod prompt.submit hooks were still running (regression in 2.1.296)
  • Fixed an agent teammate started without a description keeping part of a credential from its prompt in the task description shown for it
  • Fixed the claude.ai view of a Remote Control or cloud session freezing when a large batch of events could not finish uploading over a slow connection
  • Fixed a sandboxed shell command being able to write into a --plugin-dir folder, whose code Claude Code reloads and runs outside the sandbox
  • Fixed memory growth under heavy debug logging (--debug, --debug-file), and a hang on exit when the debug log is on a disk or network mount that stops accepting writes
  • Fixed memory growing without bound when debug output goes to stderr and the parent process stops reading it
  • Fixed rm prompts on shell -c scripts that don't run rm. An rm built at run time in a script Claude Code can't read no longer prompts unless CLAUDE_CODE_STRICT_INLINE_SHELL_RM_PROMPT=1
  • Fixed double-clicking a word in an expanded transcript row in fullscreen mode collapsing the row instead of selecting the word
  • Fixed claude mcp list, claude doctor and /status reporting an empty .mcp.json as invalid
  • Fixed /btw jumping the transcript to the bottom when asked while scrolled up in fullscreen
  • Fixed sandboxed commands failing on WSL2 with bwrap: Can't mkdir /mnt/c/Program Files/ClaudeCode when the sandbox can write to the Windows drive
  • Fixed scheduled wakeups (ScheduleWakeup) not firing while a background task was running in Agent SDK, IDE and claude remote-control sessions
  • Fixed a mod's prompt.submit rewrite being silently dropped, sending the prompt as typed, for some prompts with a pasted image or an image that can't be read
  • Fixed a Remote Control prompt being lost when another queued prompt in the same batch failed to deliver
  • Fixed a Remote Control prompt that had passed its hooks being dropped from prompt history when Stop interrupted the next queued prompt's hook
  • Fixed sign-in, MCP servers and project trust appearing lost on Linux after a sandboxed command left an empty .config.json in the config directory
  • Fixed /sandbox reporting success when its setting could not be saved because the project folder is not writable; it now says nothing changed and why
  • Fixed SDK and headless sessions staying in auto mode after the host switched to a model that doesn't support auto mode
  • Fixed MCP servers named constructor or prototype in an MCP config never being connected
  • Fixed tools of an MCP server named constructor or toString asking for permission in auto mode and bypass permissions mode
  • Fixed a spurious "synced[0] commands path not found" plugin error at startup when another Claude Code process had just updated a claude.ai-synced plugin
  • Fixed the Artifact tool advising a retry when a publish that requests connectors or other access was refused by the server or a proxy (HTTP 403); it now says so and what to tell the user
  • Fixed Cowork cloud sessions staying on an old account plugin after a plugin reload that timed out or a restart that reused a recent sync
  • Fixed document blocks being dropped from your own message sent while Claude is working
  • Fixed Claude in Chrome asking for permission while no browser is connected; it now says the extension is not connected
  • Fixed the fullscreen "Update installed" notice being hidden behind the idle "/clear to save tokens" hint; it now shows beside the hint
  • Fixed a mod hook, with or without a .catch, being run again without end when it waits on another mod's noun that does its work outside the call
  • Fixed the Claude apps gateway serving models that a policy's availableModelsMatch: exact or deniedModels blocks; it now answers 400 and leaves them out of its model lists
  • Fixed the server-managed settings request to Anthropic carrying a third-party gateway's API key when a managed settings file sets ANTHROPIC_BASE_URL
  • Fixed streams through a custom ANTHROPIC_BASE_URL being aborted after 180 seconds with no data arriving; they now wait 300 seconds, whether or not feature flags are loaded
  • Fixed a mod's tool.describe or prompt.section

…

Friday, October 9Oct 9, 2026

Release v2.1.296

Claude Code v2.1.296

What's changed Added a code key to the Claude apps gateway's managed.policies[]: the same settings as cli, also applied in Claude Desktop's Code tab; beside desktop, it turns on Claude Desktop's gateway mode Added autoCompactWindow to subagent frontmatter and…

Read full notes

What's changed

  • Added a code key to the Claude apps gateway's managed.policies[]: the same settings as cli, also applied in Claude Desktop's Code tab; beside desktop, it turns on Claude Desktop's gateway mode
  • Added autoCompactWindow to subagent frontmatter and --agents definitions, so a subagent can auto-compact earlier than the main conversation's window
  • Added CLAUDE_CODE_WORKFLOW_SUBAGENT_MODEL to run every workflow agent on one model while other subagents keep theirs
  • Added CLAUDE_CODE_OVERLOADED_RETRY_MAX_DELAY_MS environment variable to set a longer maximum delay for the backoff when retrying an overloaded (529) request
  • Added a note in /plugin on a plugin whose hooks are left out because another enabled plugin has the same name
  • Added an allow_large option to the Read tool so Claude can read a text file past the usual size limits in one call when it needs the whole file and the context has room
  • Fixed managed-settings PreToolUse hooks that deny a tool call with "continue": false, and managed prompt hooks that block one, refusing the call but not ending the turn
  • Fixed PostToolUse hooks in managed settings not applying updatedMCPToolOutput in some sessions
  • Fixed headless sessions starting a folder's .mcp.json or plugin MCP server that was switched off for that folder, after changing directory or reloading plugins
  • Fixed a Claude apps gateway that serves allowedProviders with "gateway" locking out laptops that name that gateway in user settings
  • Fixed a saved Claude apps gateway sign-in being ignored on machines whose managed settings set forceLoginMethod to gateway with no forceLoginGatewayUrl (regression in 2.1.295)
  • Fixed --teleport opening an empty conversation when the session's history could not be read
  • Fixed token counts for Haiku 5.5 and other models that take only adaptive thinking, which failed behind some gateways and were counted with budget thinking elsewhere
  • Fixed resumed subagents being told that the user rejected a tool call that a session shutdown had interrupted
  • Fixed hook output being altered when it contained text resembling a plugin hint tag
  • Fixed secret redaction in shared transcripts and debug logs missing some values that follow a key with no value, including in JSON written inside a shell string
  • Fixed a stray 52;c;… escape sequence printed on screen after copying in older VTE-based terminals such as MATE Terminal
  • Fixed toasts and notifications waiting unseen for as long as the /diff panel or dialog was open
  • Fixed Esc or an interrupt during a UserPromptSubmit hook or a mod's prompt.submit hook ending headless sessions, clearing the typed prompt, or letting the unchecked prompt through
  • Fixed SessionStart hooks of a plugin loaded after a headless session starts being skipped when a different plugin with the same name, or another spelling of it, had already run
  • Fixed claude self-hosted-runner printing misleading errors when registration is refused: it now names the org admin setting, or says a restarted on-demand runner needs a fresh work order
  • Fixed a self-hosted runner session's git fetch, pull and push failing while another session of the same repository starts on a runner with --capacity above 1
  • Fixed workflow scripts silently truncating results, agent options and other values nested deeper than about 20,000 levels, and deeply nested results writing huge task output files
  • Fixed a plugin's served $ methods running in the main session's working directory instead of the calling agent's, and ignoring the turn their calling hook holds
  • Fixed $.agent.register succeeding from a mod's hook that was still running after the mod was reloaded or removed; the call is now refused
  • Fixed $.http.fetch in mods refusing a HEAD request when the response declares a Content-Length over the 4 MiB body limit
  • Fixed claude plugin marketplace add, marketplace update and plugin install failing with an internal error for a marketplace named like constructor; add now refuses such names clearly
  • Fixed a plugin secret named constructor or prototype being deleted by the next save of that plugin's options
  • Fixed cloud sessions skipping auto mode's checks on Claude in Chrome actions that a saved permission allows when their feature flags had not loaded
  • Fixed CLAUDE_CODE_RESUME_INTERRUPTED_TURN re-running a finished turn after a restart when an MCP tool result had ended that turn
  • Fixed Bash permission checks auto-approving some commands that assign the BASH_ARGV0 shell variable and then use it; these now prompt for approval
  • Fixed Edit and NotebookEdit replacing every non-ASCII character in files that are not valid UTF-8 (Windows-1252, Shift-JIS, GBK); such edits are now refused
  • Fixed a prompt sent just after ← being run twice, once unseen in the foreground, when the background service was slow to answer
  • Fixed a prompt sent while SessionStart hooks were still running vanishing when ← moved the session to the background; it is still not sent, but ↑ now brings it back
  • Fixed a late-loading plugin's SessionStart hook output reaching the new conversation after /clear in headless sessions
  • Fixed PowerShell commands not seeing variables that hooks write to CLAUDE_ENV_FILE (when the file holds only plain assignments)
  • Fixed Claude calling cloud sessions non-interactive and suggesting /mcp or claude mcp when an MCP server needs authentication
  • Fixed /code-review ending on a raw JSON array in cloud sessions, the Agent SDK and IDE integrations; the findings now print as a numbered list
  • Fixed auto mode occasionally refusing one update to your own artifact, saying its sharing had changed when it had not
  • Fixed skills synced from claude.ai never finishing their install, and being downloaded again at every sync, when several sessions share a config directory
  • Fixed a plugin synced from claude.ai being disabled when the marketplace dependency it declares was also synced from claude.ai
  • Fixed a startup hang on macOS when plugin paths copied from a Linux machine pointed under /home
  • Fixed the Workflow tool refusing script files with CRLF line endings, such as files checked out on Windows
  • Fixed OpenTelemetry tool_result events missing git_commit_id after git commit -q or git -C <dir> commit
  • Fixed CLAUDE_CODE_TRANSCRIPT_LOCAL_GC dropping a message from the saved transcript when its text held a Unicode line or paragraph separator (U+2028, U+2029)
  • Fixed claude purge leaving a prompt in the history file when its text held a Unicode line or paragraph separator (U+2028, U+2029)
  • Windows: Fixed PowerShell commands longer than about 1 KB always asking for permission, so allow rules and read-only detection now apply up to 32 KB
  • Windows: Fixed stdio MCP servers being force-killed at shutdown; stdin now closes first and the process tree is killed only if the server is still running after 300 ms
  • Windows: Fixed claude plugin install failing for GitHub owner/repo plugin sources on machines with no GitHub SSH key; the clone is now retried over HTTPS
  • Windows: Fixed rm -rf /c/Users/<name> in Git Bash not asking in bypass permissions mode
  • Improved fullscreen mode: the link under the mouse pointer is now underlined to show it can be opened
  • Improved transcript toggle (ctrl+o) responsiveness in code-heavy conversations by caching syntax-highlighted code blocks
  • Improved Claude Desktop's Code tab behind a Claude apps gateway: when a session can't start, including on a machine not set up for the gateway's code settings, the reason shows as a reply
  • Improved the errors for a refused cloud session: they now say why your organization's policy couldn't be loaded, and name an API key or auth token that overrides your claude.ai login
  • Improved --debug output to name unrecognized frontmatter fields in custom agent files, with a hint for likely typos

…

Thursday, October 8Oct 8, 2026

Release v2.1.295

Claude Code v2.1.295

What's changed 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 Added Program Status Protocol (OSC 7501) support: terminals that implement…

Read full notes

What's changed

  • 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
  • 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 warning to claude plugin install, enable, disable and marketplace add when the settings file they write to does not load
  • 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
  • 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 a "Backgrounding cancelled" message when you stop the turn while ← is waiting for the current tool to finish
  • 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
  • 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 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
  • 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 $.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
  • 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
  • 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 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 claude -p text output dropping earlier responses when background work started another turn; each turn's response now prints when the turn ends
  • 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 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 Bash tool calls failing when the model passes command_description instead of description
  • Fixed Claude in Chrome not applying a site deny rule written with port 80 (host:80) to plain http:// pages on that host
  • 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 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 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 a rare failure to load managed settings at startup right after a login refresh
  • 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 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
  • Fixed subagents in their own linked worktree being shown the parent session's git branch, status and recent commits
  • 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 --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 an interrupt not ending the turn until a timeout while Claude waited for an MCP server's resource list
  • 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 Esc not stopping a self-paced /loop that was moved to the background with ←; cancelling a pending wakeup now shows a notice
  • Fixed commands and hooks in background sessions inheriting FORCE_COLOR=3, which put color escape codes into the output Claude reads
  • 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 a custom agent named worker being shown as "Agent" in auto-mode denial notices and in the activity lists of task detail views
  • Fixed Bash permission checks for for-loops over glob patterns, improving permission-check accuracy
  • 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 being told on resume that an unfinished background workflow may have been stopped by TaskStop, which can never be the cause
  • Fixed Claude not being told when you stop a long-running MCP tool call from the tasks panel or a connected client
  • 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
  • Fixed raw terminal hyperlink bytes in a reply or a teammate's message being drawn as a clickable link with a hidden address
  • Fixed plugin marketplaces whose repository has large git submodules failing to add or refresh: only the submodules that hold plugin files are now fetched
  • Fixed the /advisor dialog showing a checkmark on a saved advisor model that is no longer available; it now opens on "No advisor"
  • Fixed the notification for an MCP tool call that moved to the background showing a shortened task id
  • 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

…

Release v2.1.294

Claude Code v2.1.294

What's changed Fixed prompt and agent hooks written as instructions (such as "Block commands that...") allowing what they should block Improved how prompt hooks on Stop and SubagentStop written as instructions (such as "Carry on if the build is broken") are…

Read full notes

What's changed

  • Fixed prompt and agent hooks written as instructions (such as "Block commands that...") allowing what they should block
  • Improved how prompt hooks on Stop and SubagentStop written as instructions (such as "Carry on if the build is broken") are judged, so Claude is less likely to stop early

Wednesday, October 7Oct 7, 2026

Release v2.1.293

Claude Code v2.1.293

What's changed Added Claude Haiku 5.5 (claude-haiku-5-5), now the default Haiku model on the Anthropic API — 1M context, $0.10/$0.50 per Mtok ($0.50/$2.50 for prompts over 100K) Added agentType to the subagentStatusLine payload, so scripts can tell custom…

Read full notes

What's changed

  • Added Claude Haiku 5.5 (claude-haiku-5-5), now the default Haiku model on the Anthropic API — 1M context, $0.10/$0.50 per Mtok ($0.50/$2.50 for prompts over 100K)
  • Added agentType to the subagentStatusLine payload, so scripts can tell custom subagent types apart
  • Added isDeferred to $.tool.register for mods: false lists the tool's schema in the prompt from the start instead of behind tool search
  • Fixed Claude sometimes treating its own last actions before a context compaction as done after it, and retracting or redoing finished work
  • Fixed a memory leak where an HTTP MCP connection kept every request it had sent until it closed
  • Fixed a message sent while Claude was working being lost when ← moved the session to the background; if a queued message can't move, ← now stays put and says so
  • Fixed /model effort ←/→ wrapping past the highest or lowest level, which could accidentally save Low as a model's default effort
  • Fixed /tui disconnecting Claude in Chrome in a session started with --chrome, and ignoring --no-chrome
  • Fixed Claude being told to continue or message subagents with SendMessage in sessions, including resumed ones, where a host, a permission rule or a --tools list removed that tool
  • Fixed subagents and --agent sessions being told a built-in tool was disabled for the whole session when only their own tool list left it out
  • Fixed a claude.ai-synced skill's edited description sometimes not reaching the model until a new conversation or /clear
  • Fixed claude logs, stop, kill, rm and claude daemon status, stop, uninstall sometimes signing you out when your login had expired or was about to
  • Fixed the footer's agents count disappearing after a momentary failure to read the sessions folder (for example, too many open files)
  • Fixed a custom agent named worker being shown as "Agent" when it starts, and the agent detail dialog's title losing the agent type once the agent finishes
  • Fixed the Artifact tool's transcript row briefly reading Artifact("(unprintable path)") while a publish call was still streaming in
  • Fixed the /ultrareview upload on Linux wrongly refusing some repositories, such as one inside another checkout, over a settings file that "could not be parsed" while a sandboxed command was running
  • Fixed the /ultrareview upload's refusal over split-index files advising a git command that could leave git unable to read its index
  • Fixed replies in very long Remote Control and cloud sessions that could still appear a block at a time instead of streaming in
  • Fixed Remote Control uploading a session's starting history again after every credential recovery
  • Fixed PushNotification reporting "Remote Control inactive" in sessions started with claude remote-control
  • Fixed a mod's hooks on classic.* events being skipped while the plugin hooks worker restarts, which left settings hooks to answer without them
  • Fixed claude plugin test failing for mods that call $.session.append; tests can read the appended rows back with the new mock.session
  • Fixed claude plugin eval refusing every Bash-granting run on Macs with Docker Desktop (links under ~/.docker/bin); the refusal now names which part of a credential store held the link
  • Fixed the Claude apps gateway refusing to start when a desktop policy sets Claude Desktop's built-in browser keys, such as builtinBrowserEnabled
  • Fixed claude agents offering bypass permissions that background sessions then ignored when consent was saved only in .claude/settings.local.json or a --settings file; it now asks for consent first, and a session that ignores bypass shows a short notice that stays
  • Fixed ← backgrounding a session after 10 seconds while the prompt held unsent text (it now cancels the move) or a question was waiting for your answer
  • Fixed Esc, or No without feedback, on a permission prompt not stopping the turn when ← had just been pressed to move the session to the background
  • Fixed the agents view briefly replacing the session list with placeholder rows when the sessions folder could not be read (for example, too many open files)
  • Fixed path-scoped rules and nested CLAUDE.md files not loading when Claude views a file with a single-file cat, head, tail, sed -n or grep command in the Bash tool instead of the Read tool
  • Fixed pasted text that begins and ends with the same words sometimes being sent to Claude as if it had been typed
  • Fixed a skill name in pasted text being treated as typed when an accent typed or pasted right after the paste merged into its last letter
  • Fixed /feedback returning to the drafts list after Ctrl+O or Ctrl+Z while a report was sending, leaving the send impossible to cancel
  • Fixed claude purge stopping silently (exit 0, or a hang in a terminal) when a file or folder could not be deleted; it now deletes the rest, lists what it could not delete, and exits 1
  • Fixed keybindings.json checks: a lone " " (space key) is no longer reported as an error, and keys like "ctrl+ k" now get a warning
  • Fixed vim mode >> and << on a line of only spaces leaving the cursor past the end of the line, where a following x deleted nothing
  • Fixed vim mode: after deleting whole lines in Visual mode (V then d) the cursor lands on the first non-blank, and . after it acts on the cursor's line
  • Windows: Fixed stopping a status line, hook, or shell command sometimes terminating an unrelated process that had been given the same process ID
  • Reverted the auto mode denial message change from 2.1.281 that told Claude a denial covers the outcome, not only the exact command
  • Reverted the 2.1.290 fix for cloud sessions staying asleep after a container restart lost a pending /loop wakeup or scheduled task; Claude is no longer told, and the session stays asleep
  • Improved startup for Team and Enterprise organizations: policy and managed settings are fetched earlier, and a stalled request is retried after 3 seconds
  • Improved Claude in Chrome: fewer page actions are refused when the browser is slow to report its tabs
  • Improved the Claude in Chrome message in cloud sessions when the browser can't be reached: if you belong to more than one organization, it now says the extension must be signed in to the same one, and how to change that
  • Improved the Bash edit diff note to say the listed files changed while the command ran, which can include writes by other processes
  • Improved artifacts: Claude pins libraries to exact versions two weeks old or older
  • Changed claude.ai skill syncing to check for changes about every 40 minutes, instead of every 10, while no session is in use
  • Changed the order of agent lists and of MCP servers announced to the model: names with non-ASCII characters now sort after ASCII names
  • Changed OpenTelemetry claude_code.at_mention logging to emit at most 100 agent and 100 MCP-resource events each time a prompt is read
  • Self-hosted runner: Changed the orchestrator to sleep 4 to 6 seconds between polls instead of a constant 5, so several replicas for one environment stop polling at the same moment
  • [Claude Tag] Fixed Claude in Slack saying a workspace isn't set up in Enterprise Grid channels shared across workspaces when Slack labels a message with a workspace that isn't connected
  • [Claude Tag] Fixed Claude in Slack stopping mid-task in a channel when an admin changed the channel's connectors, plugins, skills or rules; the change now applies once Claude finishes
  • [Claude Tag] Fixed asking Claude in Slack to run a thread's routine now with extra notes starting a separate run that couldn't post back; the run now continues in that thread
  • [Claude Tag] Fixed an access bundle's Add a connector dialog in Claude Tag admin settings showing every Google connector as connected after one Google sign-in
  • [Claude Tag] Improved Claude Tag admin settings to list an Enterprise Grid that isn't connected yet, with a Connect button

…

Tuesday, October 6Oct 6, 2026

Release v2.1.292

Claude Code v2.1.292

What's changed Added --marketplace <source> to claude plugin install: adds the marketplace if needed, under the same policy checks as claude plugin marketplace add, then installs the plugin from it Added an effort parameter to the Agent tool, so Claude runs a…

Read full notes

What's changed

  • Added --marketplace <source> to claude plugin install: adds the marketplace if needed, under the same policy checks as claude plugin marketplace add, then installs the plugin from it
  • Added an effort parameter to the Agent tool, so Claude runs a sub-agent at the effort level you ask for
  • Added CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS environment variable to set a longer base delay for the backoff when retrying an overloaded (529) request
  • Added prompt.autocomplete, an event a mod hooks to add its own rows to the prompt box's autocomplete list
  • Added prompt caching to $.model.complete for mods: prompt and system take blocks of text, and cache: true on a block caches the request up to it
  • Added workflow agents to the agent.spawn mod hook, with their run and index, so a mod can refuse them
  • Fixed subagent definitions with permissionMode: auto entering auto mode when auto mode is unavailable (disabled by settings, circuit breaker, or a model that doesn't support it)
  • Fixed sandboxed commands being able to read the staged file copies of /ultrareview uploads under ~/.claude/seed-admin
  • Fixed a managed sandbox read-deny path (and user ones beside it) that appears or re-points mid-session not dropping project grants inside it or ending credential injection from files it covers
  • Fixed a notebook or PDF read on macOS and Windows being able to return a file outside what was approved, through a link swapped in mid-read
  • Fixed a tampered on-disk cache of server-managed settings being able to switch off or unseat the built-in policy plugin while the settings fetch failed
  • Fixed rm -rf on the 8.3 short name or another alternate Windows spelling of the home folder or a drive not being treated as removing it
  • Security: Fixed PreToolUse hook approvals and auto mode bypassing the permission prompt for file reads from network (UNC) paths
  • Fixed a skill's or slash command's allowed-tools rule coming back in a later turn when you leave auto mode or plan mode partway through that turn
  • Fixed NO_PROXY being ignored for Claude Code's own API requests (sign-in, policy, feedback, artifacts) when HTTPS_PROXY is set
  • Fixed an MCP tool with a name longer than 128 characters making every request fail; that tool is now left out and an MCP error names it
  • Fixed claude plugin commands such as marketplace add and install running before an organization's managed settings had loaded on a first run
  • Fixed one-shot claude -p and Agent SDK runs stopping a background command 5 seconds after the final result, and one-shot claude -p runs dropping a scheduled wakeup; both are now waited for
  • Fixed plan mode not being restored when resuming a session from the claude --resume session picker or with /resume
  • Fixed saved scheduled tasks created after /resume, /branch or /clear never firing, and saved tasks ignoring later creates and deletes after two writes to the tasks file milliseconds apart
  • Fixed a background session's /loop silently stopping when the session's process restarted (for example after a crash), because its pending wakeup was lost
  • Fixed Grep and Glob reporting no matches when the file or folder they were given could not be read; Claude now retries once or tells you
  • Fixed the Read tool returning only the first entry, with no error, when a PDF's pages was a list such as "6,9,15"; it now returns an error saying to read each page or range separately
  • Fixed @-mentioned text files over 256KB being left out silently: Claude is now told the file's size and to read it in portions
  • Fixed the usage limit alert repeating once per background agent when agents failed on a limit that had already stopped the main conversation
  • Fixed Remote Control viewers seeing an empty subagent pane for background subagents in sessions hosted by the desktop app or an IDE
  • Fixed cross-session delivery notices showing two sessions with similar names as one recipient, and the expiry notice blaming the desktop app when a terminal session let the message lapse
  • Fixed Send now in the desktop app ending the subagent a turn was waiting on when another message was already queued
  • Fixed /bug, /share and /feedback <text> starting over after Ctrl+O or Ctrl+Z while a report was being sent, and closing as cancelled after it had been sent
  • Fixed /remote-env replacing your saved default environment when you pressed Enter right away: the list now opens on your default, and no row has a check mark when no default is in effect
  • Fixed some pasted text reaching Claude as typed text when several pastes overlapped in one prompt
  • Fixed vim mode leaving the cursor past the end of a line, j/k losing their column on shorter lines, and f/t/F/T/;/, jumping to, or deleting up to, a match on another line of the prompt
  • Fixed /add-dir path box letting Shift+Enter or a paste add a line break, and treating fast-typed "tab", "up" or "down" as those keys
  • Fixed fast typing, input-method text and decomposed accents being dropped while a prompt footer row was selected, and ! leaving the row selected
  • Fixed fullscreen mode sending a full-screen clear on every window resize and Ctrl+L when iTerm2 is detected, which may be what filled iTerm2's scrollback with stale pages
  • Fixed a spurious "could not be examined" note for @-words that name no file when a Read deny rule is set and the working directory is under a symlink
  • Fixed "instruction file not loaded" lines going stale or missing after /cd or a permission change, and added a transcript line when a nested one isn't loaded
  • Fixed a compaction summary that repeated /name letting Claude invoke a skill that is reserved for the user
  • Fixed Write, Edit, NotebookEdit and LSP rows, and single Read, Grep and Glob rows, hiding why a mod denied the call: the row now shows the reason
  • Fixed a cloud session showing a turn that never ended when its worker was stopped just as the turn finished
  • Fixed cloud sessions with a large transcript sometimes asking for a permission again after it was approved
  • Fixed scheduled tasks and other queued notifications being lost in cloud sessions when a message was retried or edited while Claude was reading them
  • Fixed cloud sessions forgetting the thinking setting chosen in the client when the session's container restarted
  • Fixed Cowork cloud sessions saying a proxy blocked artifacts when Anthropic couldn't confirm the organization's settings
  • Fixed plugins whose hooks module makes many $.state calls through one const taking minutes to load or validate
  • Fixed claude plugin validate listing a matcher or state value for a hooks module that the engine reads from elsewhere
  • Fixed claude plugin validate listing a $.state value read through a top-level var that was declared again or reassigned; such a module is now refused
  • Fixed a plugin's served $ method restarting the hook origin, which could run a guard hook with a .catch above it again without end
  • Fixed plugin interface calls made while the plugin hooks worker restarts running without the hooks other plugins put on them
  • Fixed a mod's config.set, state.set, env.set or agent.spawn hook that denies after calling next(e) being answered as a refusal: the hook is now reported as failed, by name
  • Fixed /theme, the /config Theme menu and the first-run theme step saving a theme before a plugin's config.set hook was asked
  • Fixed a plugin's tool.check hook answering allow running a tool that requires your answer (a question, a plan approval) without showing its dialog
  • Fixed a mod's start-up prompt, command or subagent being queued a second time when the hooks worker was replaced
  • Fixed a mod's hook that called next(e) and then failed while the turn was interrupted letting the call through; the call is now rejected

…

Release v2.1.291

Claude Code v2.1.291

What's changed Fixed a regression in 2.1.290 where cloud sessions could drop answers to permission prompts Fixed a regression in 2.1.288 where the last messages of a session could be lost when quitting

Read full notes

What's changed

  • Fixed a regression in 2.1.290 where cloud sessions could drop answers to permission prompts
  • Fixed a regression in 2.1.288 where the last messages of a session could be lost when quitting

Monday, October 5Oct 5, 2026

Release v2.1.290

Claude Code v2.1.290

What's changed Added serverToolUses to the result of a mod's turn.step hook: the tool calls the API ran itself (the advisor), each with its id, name, input, start and end Added agentId to the tool.check event of plugin hooks, so a hook can tell a subagent's…

Read full notes

What's changed

  • Added serverToolUses to the result of a mod's turn.step hook: the tool calls the API ran itself (the advisor), each with its id, name, input, start and end
  • Added agentId to the tool.check event of plugin hooks, so a hook can tell a subagent's permission check from the main session's
  • Added ceiling to the question and verdict a mod's tool.check hook reads, naming the approval an organization requires for a tool
  • Added ThemeKey and Color types to the plugin hooks typings, so an editor lists the theme colors a mod's drawing can name
  • Added to claude plugin validate: each hook a mod registers at a gating site is listed with whether it has a .catch (gatingHooks under --json)
  • Added a Deny button to the Claude apps gateway's sign-in approval page: it ends the pending sign-in, so the waiting terminal stops within seconds
  • Added claude attach <name> and claude logs <name>: part of a session name works in place of the id
  • Added /claude-api managed-agents-onboard <url> to set up the Managed Agents pattern a page describes as ant apply files
  • Added /claude-api managed-agents-onboard <quickstart-name> to build a Console quickstart template, such as deep-researcher, with the ant CLI
  • Added a warning when a managed settings file is a link to a file outside the managed settings folder
  • Added a /status and doctor warning when managed settings ignore user-configured sandbox allowRead paths or allowed domains
  • Fixed requests failing behind proxies and gateways that reject one of Claude Code's beta headers with a status other than 400, or together with a second beta
  • Fixed long sessions with hundreds of images getting stuck on "Request rejected as unprocessable by the model" errors
  • Fixed a turn ending at once when the API's output content filter stopped a reply while Claude was still thinking; the request is now retried once before the error is shown
  • Fixed resumed subagents and teammates losing their earlier thinking and prompt cache after receiving a message mid-run
  • Fixed WebFetch silently dropping page text past 100,000 characters; it now says how much was unread and takes an offset to read on
  • Fixed a crash ("Maximum call stack size exceeded") when a response nested lists or quotes thousands of levels deep
  • Fixed /rewind not listing a prompt sent while Claude was still working
  • Fixed scheduled tasks (/loop with an interval, reminders) silently not coming back on resume once the conversation was compacted; covers compactions made from this version on
  • Fixed scheduled tasks set in the foreground never firing after a ← or /background hand-off, and recurring ones firing an extra run on every resume, respawn or fork
  • Fixed headless --json-schema runs exiting non-zero with is_error: true on a success result when the connection dropped after the structured output was already delivered
  • Fixed plan mode letting the auto mode classifier approve non-read-only connector tools that carry a server-pushed ask policy
  • Fixed a project CLAUDE.md, rule or AGENTS.md symlinked outside the working directories loading under permissions.blockReadsOutsideWorkingDirectories or a Read deny rule
  • Fixed URL allow and deny patterns with a wildcard inside an xn-- host label matching differently from one process to the next
  • Fixed an MCP server provided by your organization being relisted as your own after signing in or reconnecting, including from a late result in headless and SDK sessions
  • Fixed /ultrareview dropping uncommitted changes without a warning on Windows when git stash create failed, and refusing them after a git add -N file was deleted or moved
  • Fixed the plansDirectory setting's project-root check for paths that contain a backslash on macOS and Linux
  • Fixed replies in very long Remote Control and cloud sessions that could appear a block at a time instead of streaming in
  • Fixed the background daemon's log passing terminal control characters to the screen under claude daemon run and claude daemon logs; they now show as \uXXXX escapes
  • Self-hosted runner: Fixed a crafted, very long line of a session's error output freezing the runner for several seconds
  • Fixed a plugin hook with a .catch being unloaded, and its .catch skipped, when the hook kept the hooks worker busy on a prompt or tool call
  • Fixed a mod's turn.step result listing a tool call that a mid-response model fallback had discarded
  • Fixed a Cowork cloud session's reply sometimes never finishing when its container restarted just after Claude sent a message or a file
  • Fixed claude plugin validate and plugin loading refusing a hooks module that destructures an option named like one of its top-level functions
  • Fixed /ultrareview failing to upload uncommitted changes when core.safecrlf=true is set in git's configuration
  • Fixed the effort level changing when a flagged message is retried on a fallback model that has a different level saved in settings
  • Windows: Fixed multi-line ! shell blocks in skills and commands failing when the file is saved with CRLF line endings
  • Fixed Claude Code hanging until killed when a /permissions tab was clicked while searching in fullscreen mode
  • Fixed conversation compaction sometimes failing with a "null is not an object" error
  • Fixed plugin hooks reading an empty answer on turn.complete for a subagent that hands its report back in auto mode
  • Fixed a mod being unloaded without a message when a refresh followed its failed reload; its failure line now says the version loaded before is unloaded
  • Fixed a mod's prompt.submit hook that drops a prompt after calling next(e) being ignored silently: the hook is now reported as failed, by name
  • Fixed a mod's pane or band being redrawn without end when it followed its end over a tree that changed height at every drawing
  • Fixed an image read on macOS and Windows being able to return a file outside what was approved, through a link swapped in mid-read
  • Fixed a case where a user-installed mod could get an organization's plugin unloaded; the mod is now the one unloaded
  • Fixed disableClaudeAiConnectors and allowedMcpServers URL rules not being applied to some MCP entries declared in .mcp.json, plugins or agents
  • Fixed a mod's inline pane being redrawn without end when its tree changed height at every drawing
  • Fixed an @-mention under the read block or --restricted being able to read a file outside the working directories through a link changed mid-read
  • Fixed Esc in the agents view confirming "Press enter again to restart this session — it isn't responding"; Esc now just reopens the session
  • Fixed agent view losing a background session's /loop run count, countdown and live status line after the session enters a worktree that it creates
  • Fixed claude agents sessions in manual permission mode asking for approval to read an image pasted into a reply or a new agent's prompt
  • Fixed a deny or ask rule missing a command or path whose name came from a variable set as a prefix on declare, typeset, export or readonly
  • Fixed Read deny rules not applying to image paths pasted or dragged into the prompt, or to file names listed for an @-mentioned folder
  • Fixed a case where a user-installed mod could make an organization's guard skip its check; such a mod is now unloaded
  • Fixed plugin hooks stalling each redraw when a mod draws a long multi-line text holding non-Latin characters
  • Fixed repeated Ctrl+X in the agents view deleting the whole next section after the bottom session of a section was deleted
  • Fixed You should know writing its notes in English regardless of the language setting
  • Fixed a freeze after sending some very long messages

…

Saturday, October 3Oct 3, 2026

Release v2.1.289

Claude Code v2.1.289

What's changed Fixed a deny or ask rule on a nested part of a compound shell command not holding over a user-installed mod's approval on managed machines Fixed the terminal freezing on short code blocks with many unclosed <script> tags or deeply nested ${…

Read full notes

What's changed

  • Fixed a deny or ask rule on a nested part of a compound shell command not holding over a user-installed mod's approval on managed machines
  • Fixed the terminal freezing on short code blocks with many unclosed <script> tags or deeply nested ${ substitutions
  • Fixed Read deny rules not applying to files @-mentioned, changed, or selected in the IDE through a symlink
  • [VSCode] Reverted a 2.1.288 change to claude auth status that may have made sign-outs more frequent
  • Improved how quickly large files open in a plugin code pane by laying the highlighted view out once at its final width
  • Fixed plugin list, plugin eval and plugin update showing a stale copy of a plugin installed from a local folder marketplace, and hot reload for a symlinked --plugin-dir
  • Fixed installed mods not loading in the first session after an upgrade
  • Fixed a plugin's rows above the prompt showing a stale row while the Background tasks dialog was open in fullscreen
  • Fixed plugin panes drawing nothing when a link used a localhost address, an @ in its path, an uppercase host or a file: path
  • Fixed a user-installed plugin being able to rewrite the descriptions of an organization-managed MCP server's sign-in tools
  • Fixed a freeze or forced quit at launch when a plugin drew a Box with a border style the terminal does not know
  • Fixed supervised and background sessions ending when a plugin's on-screen handler threw asynchronously
  • Fixed sessions ending with an interface error when a plugin region with no height kept growing
  • Fixed Bash deny and ask rules missing a command behind an environment variable prefix with an expanded value (e.g. TZ="$HOME" rm -rf build) when the sandbox auto-allows commands
  • Fixed a Bash deny or ask rule being skipped under sandbox auto-allow when a bare variable assignment came before the command
  • Fixed claude plugin validate skipping the plugin when the folder also holds a marketplace manifest
  • Added agent.spawn for teammates, one agent id across plugin hook events, and idle and waiting states in $.agent.list()
  • Fixed sessions ending with "unrecoverable interface error" when a value a mod's ui.render hook wrote made a row throw while drawn; the engine now draws its own row instead
  • Fixed text with a tab, a stray escape and a C1 control, or a short text with a tab and CRLF line endings, drawing over the rows below it
  • Fixed right-aligned content in a mod's pane or band drawing under the close mark or [-], which now also keep one column in from the terminal's edge
  • Fixed a mod's Client that fails while drawn taking down everything the mod drew around it; it now fails alone and raises ui.fault
  • Fixed claude plugin validate failing an Anthropic marketplace's own plugin and listing a clean plugin.json in --json
  • Fixed a mod's band that fails to draw briefly telling the cards under it to step aside
  • Fixed a failed plugin component showing Error or nothing as its reason when the failure carried no message
  • Improved the line a mod's author sees when its band or pane fails to draw: it names the mod and says nothing was drawn
  • Fixed published artifact pages freezing or crashing the reader's browser tab on short code blocks with many unclosed <script> tags
  • Fixed a mod's Client region staying failed for the whole session after the terminal threw while drawing it

Friday, October 2Oct 2, 2026

Release v2.1.288

Claude Code v2.1.288

What's changed Added $.ui.selection() for mods: returns the text you last selected in fullscreen mode and, when the selection lies within one transcript row, that row Added a built-in gh api to cloud sessions whose image has no GitHub CLI, and fixed the…

Read full notes

What's changed

  • Added $.ui.selection() for mods: returns the text you last selected in fullscreen mode and, when the selection lies within one transcript row, that row
  • Added a built-in gh api to cloud sessions whose image has no GitHub CLI, and fixed the built-in sending control characters from file names, jq filters or GitHub errors to the terminal
  • Added recovery for a prompt cleared with Ctrl+C: pressing Up on the empty prompt brings the draft back, including pasted text and images
  • Added a re-authenticate prompt when an MCP server asks for more OAuth scope during a tool call
  • Added --max-findings <n>|all to /code-review to report more or fewer findings than the usual limit; the choice is reused until you pass --max-findings default
  • Added Ctrl+F to find a session by name and Alt+↑/↓ to jump between groups in the agents view; both, and rename, can be rebound in keybindings.json
  • Added a screen reader mode announcement of the new permission mode when you approve a plan, including with Shift+Tab
  • Fixed mid-response API timeouts failing the turn: non-interactive sessions and subagents now continue from the partial response, and thinking-only responses are retried
  • Fixed long conversations failing with "Prompt is too long" instead of auto-compacting when the last reply reported zero token usage
  • Fixed --resume sometimes dropping files and other context that a compaction had just restored
  • Fixed a resumed session sometimes not saving the last response of a turn, so that the next --resume showed the prompt unanswered
  • Fixed resume occasionally loading a transcript cut short when the same session rewrote the file during the load
  • Fixed resuming a conversation started on 2.1.286 or earlier dropping the model's earlier thinking
  • Fixed session titles, memory recall and prompt hooks failing on Mantle or behind gateways that reject structured outputs; added CLAUDE_CODE_DISABLE_STRUCTURED_OUTPUTS to turn structured outputs off
  • Fixed auto mode denials pointing Claude at a Bash permission rule when the blocked tool was not Bash
  • Fixed auto mode on Bedrock and Mantle switching to the local classifier for the rest of the session after a request to an older model, such as a WebFetch summary or a sonnet subagent
  • Fixed cloud sessions that restarted on a newly picked model replying with that model after the server refused it
  • Fixed Cowork cloud sessions staying marked as waiting for input after a WebFetch permission prompt for an unapproved URL went unanswered for five minutes
  • Fixed prompt suggestions not appearing on a phone that joins a Cowork cloud session started on another device
  • Fixed a mod's button sometimes running a different button's action when pressed on a view drawn before Claude Code restarted
  • Fixed a plugin's pane showing nothing when one Code element held a diff that does not parse; it now draws as plain code
  • Fixed plugin LSP servers receiving literal ${user_config.*} and ${CLAUDE_PLUGIN_ROOT} placeholders in initializationOptions and settings instead of substituted values or manifest defaults
  • Fixed a plugin's tool.call hook making Bash fail and file searches read the wrong folder in subagents that run in a worktree
  • Fixed git-subdir plugin installs failing, or caching an incomplete plugin, on older git (before 2.39, e.g. Ubuntu 22.04's 2.34)
  • Fixed plugins loaded with --plugin-dir not showing "Configure options" in /plugin
  • Fixed background sessions ending when a plugin was reloaded or disabled while one of its timers or reads was still running
  • Fixed sandboxed heredocs with an unquoted delimiter (python3 <<EOF) asking for approval on every run under sandbox auto-allow when the body holds only plain text and simple $VAR references
  • Fixed Bash tool permission check to prompt before a BASHPID assignment whose value the shell would evaluate as arithmetic, instead of allowing it silently
  • Fixed fullscreen sessions exiting with "unrecoverable interface error" when opening the background tasks dialog while a plugin or mod showed rows above the prompt
  • Fixed Claude reporting a message to another session as delivered when that session held it: the notice now says it wasn't delivered and names the session, and in SDK sessions Claude can now learn of it mid-turn
  • Fixed OpenTelemetry claude_code.tool.blocked_on_user spans reporting unknown source or decision in -p and SDK sessions and for PreToolUse hook approvals
  • Fixed permission asks that ended unanswered, in -p or on an interrupted turn, emitting no tool_decision event
  • Fixed Edit and Retry in Cowork cloud sessions refusing a message sent before /compact even though its history was still saved
  • Fixed unattended sessions (CLAUDE_CODE_RETRY_WATCHDOG) retrying for hours after a very long response stream failed; Claude Code now streams again, and gives up after three timeouts
  • Fixed /login reporting "Login successful" when credentials could not be saved to secure storage; it now shows the failure, and offers a retry when the new login didn't take effect (anthropics/claude-code#73861)
  • Fixed a Stop during Bedrock credential lookup sometimes moving the session to a fallback model instead of ending the request
  • Fixed a second gcpAuthRefresh/awsAuthRefresh browser sign-in opening when a laptop wakes from sleep while another Claude Code process is signing in
  • Fixed agent teams: a plugin-defined agent spawned by name now runs with its own prompt, tools, disallowedTools and effort instead of the defaults
  • Fixed headless (-p / SDK) sessions occasionally ignoring SIGTERM when a supervisor such as timeout or systemd sends SIGCONT alongside it
  • Fixed restarted cloud sessions restoring a model that the organization's enforced model list refuses
  • Fixed MCP tool calls sometimes running twice when a remote server's result was over 16 MB or could not be parsed
  • Fixed subagents in Claude Desktop's Code tab getting none of the tools of a user-configured MCP server named memory
  • Fixed Claude in Chrome asking before every screenshot and page read on a site you allowed when auto mode is unavailable (such as with disableAutoMode or an older model); typing, navigation and JavaScript still ask
  • Fixed claude plugin install failing for GitHub-source plugins on macOS and Linux machines with no GitHub SSH key: the clone now falls back to HTTPS and prints a notice
  • Fixed sandbox.credentials.files entries on git config files not taking effect while permissions.blockReadsOutsideWorkingDirectories is on
  • Fixed Claude leaving out your organization's design systems when starting slides or a design with the Artifact tool on Team and Enterprise plans or machines with managed settings
  • Fixed the keyboard not working on Windows after Claude Code restarts itself (first sign-in to a Claude apps gateway, provider setup, /tui)
  • Fixed a stall when launching an agent whose tools: lists very many Agent(...) entries
  • Fixed sessions on Claude 3 Opus and Claude 3 Sonnet failing on every turn after a whole PDF entered the conversation
  • Fixed the npm auto-updater reporting success when the platform-native binary failed to download and only the placeholder claude stub was installed
  • Fixed Remote Control cleanup archiving a session that is still connected or was just re-attached by another Claude Code process
  • Fixed owner/repo plugin marketplaces showing only the second attempt's error when both the SSH and HTTPS fetch fail; both errors are now shown, with the transport tried first on top
  • Fixed path-scoped .claude/rules and nested CLAUDE.md files not loading when Write or Edit creates or changes a file in their scope (previously only Read loaded them)
  • Fixed a dangerous rm (such as one on / or the home directory) inside a bash -c or sh -c script running without a prompt in bypassPermissions mode or under a shell allow rule (anthropics/claude-code#96300)

…

Thursday, October 1Oct 1, 2026

Release v2.1.287

Claude Code v2.1.287

What's changed Added Claude Mods: plugins may now modify deeper behavior Added You should know, a built-in mod where a side agent watches your back and flags things you or Claude might miss. Turn it on with /plugin enable cc-plugin-you-should-know@builtin (for…

Read full notes

What's changed

  • Added Claude Mods: plugins may now modify deeper behavior
  • Added You should know, a built-in mod where a side agent watches your back and flags things you or Claude might miss. Turn it on with /plugin enable cc-plugin-you-should-know@builtin (for first-party sessions with telemetry on)
  • Added an n:<text> filter to the agents view that matches session names and tasks; a filter now shows matches in collapsed sections and Enter opens the first match
  • Added prompt_text to the OpenTelemetry user_prompt event, a copy of prompt for backends that nest dotted keys; drop or mask it wherever you drop or mask prompt (anthropics/claude-code#70763)
  • Added URL prompts from MCP servers on the 2025-11-25 protocol, for example to sign in. If a server no longer connects after this update, add "bareElicitationCapability": true to its MCP config entry
  • Windows: Added a startup warning when denying the Bash tool also turns off the PowerShell tool, so Claude has no shell tool
  • Self-hosted runner: Added a built-in gh api (REST only) for sessions that use Anthropic-managed git on macOS and Linux machines where the GitHub CLI is not installed
  • Fixed fast mode staying off in remote sessions owned by an agent with no user account, even when the organization allows it
  • Fixed Remote Control not receiving messages for minutes at a time when a reconnect request got no response; it now gives up after 30 seconds and retries
  • Fixed hooks configured with asyncRewake waking Claude over and over with "found issues" notifications when the hook's script file is missing; the broken hook is now reported once
  • Fixed tool heartbeats not reaching SDK hosts while the model's response stream was stalled with no data arriving
  • Fixed Bedrock and Vertex startup model checks ignoring an enforced availableModels list, which could collapse /model to one Opus row
  • Fixed the Claude in Chrome browser picker showing a JSON parse error when Chrome could not be reached
  • Fixed picking Fable in /model on a claude.ai login saving the current version's id, so your saved default now follows the newest Fable like Opus and Sonnet do
  • Fixed switching between Opus 5.5 and Sonnet 5.5 (/model, opusplan) rewriting earlier MCP tool announcements, which could drop earlier extended thinking
  • Fixed Amazon Bedrock Guardrails blocks that arrive mid-response ending the turn with an API error instead of the guardrail's message when the reply began with thinking
  • Fixed a dangerous rm (such as one on / or the home directory) losing its always-ask safeguard when the same command also redirected output to a ~ or wildcard path
  • Fixed claude -p and SDK sessions repeating a model fallback on every later message after the model was switched while a reply was running
  • Fixed a folder's CLAUDE.md being attached a second time after resuming a session or after a compaction
  • Fixed background sessions that could not be reopened from claude agents after the agent exited and removed the worktree the session was started in
  • Fixed /advisor pairing checks: Sonnet 5.5 can now advise Opus 4.7 and 4.8, and advisors the API would refuse are flagged up front instead of being silently dropped
  • Fixed Bash permission prompts showing internal parser names such as "Contains simple_expansion" instead of a plain explanation
  • Fixed a cause of fullscreen sessions on slow or busy machines exiting with "Claude Code exited after an unrecoverable interface error" while a scroll key was held in a long conversation
  • Fixed organization per-tool permission ceilings being silently dropped for an MCP tool named __proto__
  • Fixed Claude being told to page large MCP results saved as JSON with Read's offset and limit, which cannot split one long line
  • Fixed the commit attribution reminder being delivered inside a tool result after a compaction
  • Fixed screen reader mode leaving the cursor away from the typed text in search boxes (such as /resume and /permissions) and sign-in code fields
  • Fixed screen reader mode refusing Enter with nothing typed on /rewind's summarize options, whose added context is optional
  • Fixed screen reader mode showing a "Tab to amend" hint on approval prompts, where Tab does nothing
  • Fixed screen reader mode listing arrow keys that do nothing in /permissions and /mcp, and saying "Select with numbers" in empty menus or while a search box has the keys
  • Fixed screen reader mode leaving out the changed lines in file edit approval prompts and other diffs
  • Fixed screen reader mode sending the claude --teleport progress screen, and an MCP form field while it is being checked, to the screen reader again on every spinner frame
  • Fixed CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS not removing the structured-output format from session-title and prompt-hook requests, which Bedrock-backed gateways reject
  • Fixed screen reader mode leaving out the top lines of a second approval prompt, a changed /config row or the rejected-plan line when the previous screen was taller than the terminal window
  • Fixed --include-partial-messages sending a cut-short reply's message_stop late or never, so apps could show the reply as still in progress
  • Fixed claude agents sometimes not showing the permission prompt a background session is waiting on
  • Fixed /ultrareview giving advice about .git/info/attributes when the upload stops on a committed .gitattributes it cannot read, such as one saved as UTF-16
  • Fixed claude remote-control failing to register behind an HTTP proxy with a misleading "Check your organization permissions" error (anthropics/claude-code#97352)
  • Fixed sandboxed Bash commands on Linux inheriting an open handle on the Claude Code executable
  • Fixed the running-tool dot and three spinners still moving with the "Reduce motion" setting on, and /rewind's confirm screen updating its "ago" time while you type a note
  • Fixed times in claude agents changing every second in screen reader mode; they now change at most every 10 seconds
  • Fixed a revoked claude.ai login showing a generic API Error: 401 instead of "OAuth token revoked"; in -p mode the error now starts with "Failed to authenticate"
  • Fixed /ultrareview upload refusals advising you to copy a variable named by a repository's settings file into your own user settings
  • Fixed --output-format stream-json and the SDK not streaming the turns of a context: fork skill run by typing /<skill> as the prompt, as they do for the Skill tool's fork
  • Fixed /feedback and /bug: the pre-filled GitHub issue no longer includes your recent error messages, and the confirmation screen now lists them as part of the report
  • Fixed claude plugin marketplace add --sparse and git-subdir plugin installs failing with "transport 'http' not allowed" when the repository is served over plain http
  • Fixed cloud sessions sometimes losing the earlier conversation when the session restarted while it was being compacted
  • Fixed a plugin reload that overlapped the startup --plugin-url download corrupting the session's cached copy of the plugin archive
  • Fixed /desktop quoting partial output when opening Claude Desktop timed out or printed too much output; the error now names the cause
  • Fixed an MCP connector tool call occasionally running twice, or the connector's calls failing until restart, when its server changed which MCP protocol version it supports
  • Fixed SessionStart hooks from synced plugins not running in new cloud sessions
  • Fixed the transcript's "N hooks ran" summary and the verbose debug log's matched-hooks count including Claude Code's internal callbacks, so one configured hook no longer shows as two
  • Fixed files Claude sends from cloud and Remote Control sessions failing when the upload finished just after the 30-second timeout; it now waits 35 seconds
  • Fixed repositories added mid-session in cloud and SDK sessions not loading their skills and plugins, and loading CLAUDE.md late, after Claude changed directory
  • Fixed PNG, JPEG and WebP images over 8,000 pixels on a side failing to send from a remote session; Claude now sends a scaled-down copy

…

Wednesday, September 30Sep 30, 2026

Release v2.1.286

Claude Code v2.1.286

What's changed Added a count such as "2 of 5" to the permission prompt when several permission requests stack up Added mouse support for the "N more" rows of lists in fullscreen mode: click one to jump to that end of the list, with hover and pressed states…

Read full notes

What's changed

  • Added a count such as "2 of 5" to the permission prompt when several permission requests stack up
  • Added mouse support for the "N more" rows of lists in fullscreen mode: click one to jump to that end of the list, with hover and pressed states
  • Fixed several Claude Code processes and IDE extensions each opening a login browser when gcpAuthRefresh or awsAuthRefresh credentials expire
  • Fixed claude --resume and --continue sometimes losing every turn after a batch of parallel tool calls when the earlier session crashed or was killed
  • Fixed API 400 errors after a tool or hook returned an object, number or boolean instead of text, including in resumed sessions
  • Fixed cloud sessions with very large histories never waking up because the container was stopped while the transcript was still loading
  • Fixed the Claude apps gateway's spend meter pricing 1-hour prompt cache writes at the cheaper 5-minute rate, and counting only the first model call's input tokens on streamed turns that run a server-side tool such as web search
  • Fixed macOS sessions still showing "Not logged in" or "Login expired" after /login succeeds in another Claude Code window when a leftover ~/.claude/.credentials.json exists
  • Fixed every turn failing when the Anthropic API refuses the model your default or a model alias resolves to: Claude Code now retries once on the previous model of the same tier
  • Fixed Remote Control sessions (including claude remote-control) staying connected after your organization's policy turns Remote Control off; they now disconnect with a notice
  • Fixed refusal and --fallback-model retries failing when the fallback model can't run fast; they now run at standard speed, with a one-time notice in interactive sessions
  • Fixed headless sessions repeating the "MCP servers require authentication" reminder after a successful re-authentication when the MCP discovery cache is enabled
  • Fixed claude auth status reporting a Console sign-in's stored API key as claude.ai; it now reports api_key, and the VS Code extension treats that session as an API key session
  • Fixed /status listing an Anthropic profile beside an API key as if both were in effect; the profile is now marked as not in use
  • Fixed Claude not being told when a file attached to a message sent over Remote Control did not arrive, and a file sometimes getting only 10 seconds for its last download try
  • Fixed a Remote Control message that arrived while Claude Code was exiting being marked delivered and then never answered; it now stays queued for the session's next run
  • Fixed MCP error messages showing a credential's value when "Bearer" or "Basic" came before its key name
  • Fixed percent-encoded Bearer tokens being only partly masked in error messages
  • Fixed redacted logs and transcripts showing a secret whose key name has an invisible character inside, such as a zero-width space
  • Fixed logs and transcripts showing part of a URL password that contains punctuation such as ), quotes, ], & or a second @, or that runs past a / to a bracketed host such as [::1] in an ssh URL
  • Fixed the session transcript in the zip that /feedback saves to disk containing invalid JSON lines after secret redaction
  • Fixed MCP connectors listing no tools for up to a day after their server dropped the older MCP handshake
  • Fixed a repeat MCP sign-in request from Claude replacing the pending sign-in link, which could stop that link from working
  • Fixed /usage not crediting an MCP server for a tool call made while that server was still connecting or had only just connected, such as right after a restart
  • Fixed plugins enabled on claude.ai occasionally going missing from Claude Code for a session after a transient server error
  • Fixed a message typed into a running subagent showing twice in its transcript after the subagent read it
  • Fixed subagent hand-back messages showing a raw task id instead of the agent's name when the subagent had no registered name
  • Fixed foreground subagents sometimes missing the task-tracking tools (TaskCreate/Get/Update/List, TodoWrite) in sessions that have them enabled
  • Fixed subagents spawned with worktree isolation loading the project CLAUDE.md and its imports a second time from the worktree copy on their first file read
  • Fixed Workflow tool subagents being restarted from their original prompt when a connection stalled for a few minutes mid-response
  • Fixed /compact, /clear, and /rewind typed while viewing a background agent's or teammate's transcript silently acting on the main conversation: a dialog now names the target and asks first
  • Fixed background jobs showing done while waiting for your approval
  • Fixed the commit attribution reminder being re-sent inside tool output when a model fallback lasts only one turn
  • Fixed a click on the space between words of a collapsed row (such as "Thought for 4s") highlighting the row without expanding it in fullscreen mode
  • Fixed a row with no details, such as an action row with a long name, pushing every other row's details to the right in list screens
  • Fixed files with very long names not reaching a cloud session when attached to it
  • Fixed plugin errors for a marketplace Claude Code refuses to load: they now say why and how to fix it instead of "not found"
  • Fixed /plugin's Discover tab showing a marketplace name unquoted in its "Checking … for new plugins" line when its rows already show that name in quotes
  • Improved commit guidance: when your project or user skills include one named verify, Claude is now told to run it right before committing, except for docs-only and tests-only commits
  • Improved send now (ctrl+enter) in a subagent's view: it now moves the subagent's running command to the background so your message is read right away
  • Improved replies from background agents to your messages so they no longer open with a separate recap of what you said
  • Improved claude.ai artifact link reads: WebFetch now asks the same questions as the Artifact tool's read (no artifact prompt while the session's network access is on, one per artifact while it is off), and an auto-mode yes no longer counts where only you can answer
  • Improved fetch, skill, file read, sandbox network, Claude in Chrome, workflow script and notebook edit permission prompts to match the look of file edit prompts
  • Improved Bash, PowerShell and Monitor permission prompts to show the command between dashed lines, matching file edit prompts
  • Improved list scrollbars in fullscreen mode: in most lists the bar no longer shifts as the "N more" rows come and go, and it now has ↑/↓ arrows you can click or hold to scroll
  • Improved the external editor (Ctrl+G): editors that take a line number now open on the line your cursor is on in the prompt
  • Improved slash command suggestion responsiveness while typing when many skills or plugin commands are installed; command descriptions now match by word prefix
  • Improved the output style picker: it now opens on your current style instead of Default, with each style's description on the line under its name; number keys no longer pick a style
  • Improved /hooks: the closing line of a hook's detail screen now says "this hook" instead of "it"
  • Improved the model fallback notice and the autocompact-thrashing error to say when a fallback dropped the context window from 1M to 200K tokens
  • Improved responsiveness of SDK and -p sessions when a host re-sends an MCP server enable for a server that is already connected
  • Improved the protocol page a Claude apps gateway serves at /protocol: it now says not to reject unknown input and matches what Claude Code sends today
  • Changed prompts sent while nothing is running or queued to show in the normal text color right away instead of gray
  • Changed how failed API requests are retried: one limit now covers a whole model call, so with the default retry settings a failing call sends at most 14 requests
  • Changed --bare to connect only the MCP servers named on the command line, send the model no system reminders, and start no background tasks; under --bare, a shell command that reaches its timeout now stops instead of moving to the background

…

Tuesday, September 29Sep 29, 2026

Release v2.1.285

Claude Code v2.1.285

What's changed Added CLAUDE_CODE_DISABLE_WEB_FETCH environment variable to turn off the WebFetch tool Added claude --desktop to open the Claude desktop app on the current directory, or on a session with --continue / --resume <id> Added claude plugin configure…

Read full notes

What's changed

  • Added CLAUDE_CODE_DISABLE_WEB_FETCH environment variable to turn off the WebFetch tool
  • Added claude --desktop to open the Claude desktop app on the current directory, or on a session with --continue / --resume <id>
  • Added claude plugin configure <plugin> to show a plugin's options and which are unset, or save new values read from stdin with --values-stdin
  • Added <server>.<key>=<value> to claude plugin install --config, so a bundled .mcpb MCP server's own settings can be set at install time and it starts without visiting /plugin → Configure
  • Added allowedProviders managed setting to limit which API providers a machine may use (Anthropic API, a custom endpoint, Bedrock, Mantle, Vertex AI, Foundry, Claude Platform on AWS, or a Cloud gateway)
  • Added CLAUDE_CODE_NONSTREAMING_TIMEOUT_RETRIES environment variable to cap re-sends of a non-streaming fallback request that timed out
  • Fixed claude -p with CLAUDE_CODE_FORK_SUBAGENT=1: a subagent's own Agent call now runs in the foreground, so the subagent gets the child's result
  • Fixed plugin and marketplace installs and updates over SSH ignoring the ssh program set in GIT_SSH or in your git config's core.sshCommand
  • Fixed Claude Code refusing to start when the OS denies reading the managed settings file; it now warns and starts without that file's policies. Other read errors and unparseable files stop every session
  • Fixed cloud sessions that restarted after their conversation was compacted refusing the next update to an artifact the session had already read or published
  • Fixed claude plugin disable and enable with a full name@marketplace id changing a settings entry in another letter case instead of the installed plugin's own
  • Fixed files attached to a message sent over Remote Control being left out after a single failed download; a network error, timeout or server error is now retried up to twice
  • Fixed switching models mid-session with a set_model request (such as the Agent SDK's setModel) leaving the new model on the built-in output-token limit and auto-compact window until restart
  • Fixed redacted logs and transcripts showing part of a URL password that contains @, or all of it when the URL writes its @ as %40
  • Fixed SSH passphrase and new-host prompts from worktree and /teleport fetches taking over the terminal; these fetches now fail fast instead of asking
  • Fixed switching off an MCP server added mid-session in SDK and -p sessions leaving its tools available
  • Fixed claude -p --permission-prompt-tool: a background subagent's permission request now goes to the prompt tool instead of being auto-denied
  • Fixed claude mcp list and claude mcp get, and the not-found error of claude mcp remove, login and logout, printing line breaks and terminal escape sequences from MCP server names and values
  • Fixed sandbox auto-allow asking for approval on every run of many inline scripts (python3 -c, node -e) just because they contain =
  • Fixed fork subagents not keeping the session's plan mode or dontAsk mode: a fork now runs under its parent's permission mode and cannot exit plan mode
  • Fixed claude remote-control --help saying --[no-]chrome defaults to the machine's /chrome setting; spawned sessions keep Claude in Chrome off unless --chrome is passed
  • Fixed background subagents in auto mode prompting a second, redundant reply after each report
  • Fixed cloud session creation and /remote-env reading only the newest 20 of an account's environments
  • Fixed Remote Control marking a message as read as soon as it arrived instead of when Claude started on it, and losing a message still queued when the terminal quit (it now arrives on the next resume)
  • Fixed installing a plugin with claude plugin install or /plugin putting it into an installed plugin's cache or data folder when their ids differ only in ., -, @ or (macOS, Windows) capitals; the install is now refused
  • Fixed hooks and SDK permission callbacks seeing a missing or outdated plan on ExitPlanMode when the plan was written in the same response
  • Fixed the first reply in cloud sessions arriving tens of milliseconds late, a regression in 2.1.283
  • Fixed sessions that authenticate with ANTHROPIC_AUTH_TOKEN against the Anthropic API never loading the organization's policy
  • Fixed a failed agent(), parallel() or pipeline() call that a workflow script awaits later, or not at all, being treated as an unhandled promise rejection, which could end a background session
  • Fixed synchronous hooks hanging Claude Code while a background process the hook started (for example some-daemon &) kept its output open; the hook now finishes shortly after its own process exits
  • Fixed WebFetch reporting a rate-limited domain safety check as a network or enterprise policy block
  • Fixed the fullscreen ctrl+o transcript freezing briefly when opened on turns with hundreds of file reads or searches; tool calls still running when the transcript opens now show their results when they finish
  • Fixed Amazon Bedrock mid-stream modelTimeoutException and serviceUnavailableException errors showing a raw JSON body instead of the error message
  • Fixed /autofix-pr and /schedule saying the Claude GitHub App is not installed on a repository whose install status had not been checked yet
  • Fixed dismissing a row (x) in /artifacts unlinking its file from the artifact, so publishing the same file again created a new artifact instead of updating it
  • Fixed Artifact tool publishes after a conversation rewind (Esc Esc) overwriting a file's newer content that Claude had read only in the rewound turns; the publish is now refused until Claude re-reads the file
  • Fixed an Artifact allow rule ("don't ask again") letting the Artifact tool publish a file outside the working directories without asking; add the file's folder with --add-dir for the rule to cover it
  • Fixed /cost and SDK modelUsage reporting a turn under the wrong model when the server answered a refusal with a different fallback model than the client expected
  • Fixed the Artifact tool so that publishing a page no longer lets Claude overwrite its source file without re-reading it when Claude's earlier read was cut short or the file had changed since
  • Fixed auto mode skipping its classifier for Artifact tool asset uploads and reads of someone else's artifact when you had approved that artifact earlier in another permission mode
  • Fixed a misleading "core.worktree is set" error from /ultrareview when the project folder briefly could not be read
  • Fixed /ultrareview on macOS and Linux failing to upload the working tree from a git worktree whose per-worktree config sets core.longpaths
  • Fixed the Artifact tool sometimes reporting a publish as a conflict with another session after retrying a temporary server error, when the first attempt had actually succeeded
  • Fixed /ultrareview uploads including uncommitted changes to credential files whose name has a colon before the extension, such as server:8443.key
  • Fixed a rare auth failure when two sessions recover a login refresh lock left by a crashed process at the same time
  • Fixed the PowerShell tool's permission check skipping deny and ask rules, and caching that failure for later checks, when its command parser failed to start (for example when the machine was out of memory)
  • Fixed /ultrareview uploads on macOS and Linux running slowly on some unusual file names, and their credential-file check missing file or folder names with many backup or editor marks
  • Fixed a cancelled shell command or hook still starting, and running to its end, when the cancel arrived while it was being set up
  • Fixed vim mode: after editing in the external editor (Ctrl+G), x or r

…

Monday, September 28Sep 28, 2026

Release v2.1.284

Claude Code v2.1.284

What's changed Added Claude Sonnet 5.5 (claude-sonnet-5-5), now the default Sonnet model on the Anthropic API — 1M context, $2/$10 per Mtok with $0.20/Mtok cache reads Added a "Yes, but ask again next time" answer to auto mode's prompt before a read outside…

Read full notes

What's changed

  • Added Claude Sonnet 5.5 (claude-sonnet-5-5), now the default Sonnet model on the Anthropic API — 1M context, $2/$10 per Mtok with $0.20/Mtok cache reads
  • Added a "Yes, but ask again next time" answer to auto mode's prompt before a read outside the working directories, so you can allow that one read and still be asked about later ones
  • Added dollar amounts to the Claude apps gateway spend limit in /usage and the status line (for example "$271.40 / $500.00 spent this month") when the gateway runs this version or later; the status line's rate_limits.spend_limit also gains used_usd, limit_usd and period
  • Added effortSlider:decreaseEffort, increaseEffort and toggleUltracode keybinding actions, so the /effort slider's arrow and Tab keys can be rebound in keybindings.json
  • Added /rate-limit-options to /help and the command menu for claude.ai subscribers, so the usage-limit notices that mention it point to a command you can find
  • Added /mcp reconnect all in the interactive terminal to retry every MCP server that failed to connect or needs authentication at once
  • Added Claude apps gateway startup warnings when a managed policy's availableModels is empty, or leaves out the model Claude Code starts on without setting model or enforceAvailableModels
  • Added auth: { google: {} } for Claude apps gateway telemetry.forward_to destinations, so telemetry can be exported straight to Google Cloud's OTLP endpoint using the gateway's Google Cloud credentials
  • Added certificate client authentication (private_key_jwt) between the Claude apps gateway and its identity provider, for identity providers that issue certificate credentials instead of client secrets
  • Fixed a damaged response stream showing raw errors such as "JSON Parse error" or "undefined is not an object", or writing the word "undefined" into an answer, instead of being retried or reported as an interrupted response
  • Fixed an overloaded or server error arriving right after a thinking block ending the turn with an error instead of being retried
  • Fixed "Prompt is too long" errors that persisted after compacting: when the compacted request is still too long, Claude Code now compacts once more, keeping less of the recent conversation
  • Fixed a session whose model is unavailable, with no fallback model left, showing a bare "is currently unavailable" message (or "Something went wrong" in cloud sessions) instead of the model-unavailable notice and its Learn more link
  • Fixed Agent SDK sessions crashing when a user message contains an image with a malformed source, and failing on every later turn after a malformed document block; a malformed image is now replaced with an explanatory note
  • Fixed MCP tool calls in a resumed session failing with "No such tool available" while their server was still connecting; the call now waits up to 10 seconds for the server
  • Fixed repeated calls to the plan-usage endpoint after it rate-limits or rejects your login: /usage, /extra-usage and IDE usage views now back off instead of re-asking
  • Fixed claude mcp add reporting success when managed settings restrict MCP servers to plugins; it now refuses and says what to do, instead of saving a server that never loads
  • Fixed the /plugin configure screen: boolean options are now a true/false choice instead of free text, number options refuse invalid input, and ←/→ change an options field instead of switching tabs
  • Fixed ANTHROPIC_FOUNDRY_RESOURCE being interpolated into the Foundry endpoint host unvalidated; a value that is not a plain resource name is now refused
  • Fixed Claude Desktop behind a Claude apps gateway offering no 1M context option: the gateway now marks each 1M-capable model for Desktop automatically
  • Fixed ↓ in shell mode selecting a hidden background-tasks pill, which stopped Backspace and Ctrl+U from editing the prompt
  • Fixed Bash tool failing on Windows with many plugins enabled: plugin bin/ directories that don't exist are no longer added to PATH, and inherited entries aren't added twice
  • Fixed sparsePaths plugin marketplaces cloning empty and replacing a working local copy on older git (before 2.39), which failed every refresh with "marketplace.json file is no longer present"
  • Fixed fullscreen rendering erasing the terminal output above the session when [ in transcript mode writes the conversation to scrollback (macOS and Linux)
  • Fixed fullscreen scroll position jumping to the previous message or to the bottom when a reply finished streaming while scrolled up
  • Fixed tab bars in dialogs such as /config and /plugin breaking the title and tab labels mid-word in a narrow terminal; a tab that doesn't fit now moves to the next line whole
  • Fixed the /model picker showing "+1 model" below the list after scrolling to the last model; the count now covers only the models below the visible rows
  • Fixed /keybindings writing Backspace and Delete bindings for a footer action that does nothing into the generated keybindings.json
  • Fixed a rebound agent panel close key (footer:close) typing "x" instead of itself on the row of the agent you're viewing
  • Fixed vim mode . not repeating text typed very fast (for example over ssh or in tmux) or pasted without bracketed paste, and leaving the prompt in INSERT mode after repeating a change with nothing typed (such as cw then Esc)
  • Fixed vim mode leaving the cursor on an image placeholder's opening bracket after dd on the last line or yy at the end of the prompt, where r or x would break or delete the image
  • Fixed a key pressed the instant the terminal regained focus answering the Remote Control enable prompt before its short safety delay restarted
  • Fixed the workspace trust dialog appearing a second time after switching renderers or updating when Claude Code was started in the home directory
  • Fixed rules symlinked into .claude/rules from outside the project being skipped without ever showing the external-imports approval prompt; a .claude directory symlinked from outside the project now asks for the same approval
  • Fixed plugins from marketplaces, claude.ai and npm pre-approving their own tools via allowed-tools under managed allowManagedPermissionRulesOnly; only plugins from an official Anthropic source or a source that managed settings vouch for keep that pre-approval
  • Fixed a failed first claude plugin install leaving the plugin enabled and recorded when a dependency's version range could not be met
  • Fixed the debug log dropping a failed hook's stderr when the hook also wrote to stdout, and logging nothing for a failed hook with no output; failed hooks now also log their status code
  • Fixed {"decision":"block"} returned by Elicitation and ElicitationResult hooks being ignored; it now declines the MCP elicitation, as exit code 2 does
  • Fixed sessions launched without the SendMessage tool (such as by Claude Desktop) still being told to message other sessions with it
  • Fixed a photo sent from the Claude app over Remote Control being lost when its queued message was pulled back into the terminal prompt to edit, and the cursor moving one character for a photo with no caption
  • Fixed typing a message during an automatic usage-limit wait taking the wait out of the "Continue automatically at usage limit" setting's control when that turn hit the limit again
  • Fixed usage-limit warnings suggesting /upgrade to users already on the highest Max plan; the warnings and /upgrade itself now point at /usage-credits when it is available
  • Fixed the Explore subagent switching to Opus on the Claude API when the session runs a model ID Claude Code doesn't recognize, such as a custom model behind a proxy; Explore now inherits that model
  • Fixed /loop status updates in self-paced mode often not being shown because Claude wrote them only in its reasoning; Claude now writes each update, and the outcome when the loop stops, as visible text
  • Fixed /ultrareview

…

Friday, September 25Sep 25, 2026

Release v2.1.283

Claude Code v2.1.283

What's changed Added x-claude-code-prompt-id to the gateway hint headers so LLM gateways can group the requests that serve one user prompt; opt in with CLAUDE_CODE_GATEWAY_HINT_HEADERS=1 Added availableModelsMatch managed setting: with "exact", an…

Read full notes

What's changed

  • Added x-claude-code-prompt-id to the gateway hint headers so LLM gateways can group the requests that serve one user prompt; opt in with CLAUDE_CODE_GATEWAY_HINT_HEADERS=1
  • Added availableModelsMatch managed setting: with "exact", an availableModels entry allows only the model version it names, so new releases stay blocked until listed
  • Added deniedModels managed setting to block specific models, even when availableModels allows them
  • Added MCP tool, WebFetch and WebSearch outputs to the tool.output OpenTelemetry span event when OTEL_LOG_TOOL_CONTENT=1
  • Added /doctor prompt-audit (also /checkup prompt-audit) to audit your CLAUDE.md files, skills, agents and commands for prompting patterns written for older models
  • Added click-to-expand for truncated messages from your other sessions in fullscreen mode
  • Added path to --plugin-dir load-failure entries in the stream-json system/init plugin_errors, naming the directory that did not load
  • Added an opt-in load_test_mode block to the Claude apps gateway config: requests are built and signed but not sent upstream, and clients get a canned reply, so a deployment can be load tested
  • Added a mantle upstream provider to the Claude apps gateway for Amazon Bedrock's Mantle endpoint
  • Fixed SDK sessions losing a deferred tool call or finished tool result when a turn ended early, a held approval prompt after a worker restart, and a non-streaming fallback's result.usage
  • Fixed MCP progress notifications being discarded once a long-running tool call moved to the background; the background task now shows the latest progress
  • Fixed stdio MCP servers being left running when the session ended while they were still starting
  • Fixed a brief HTTP 404 from a stateless remote MCP server (for example a proxy mid-redeploy) leaving that server unusable for the rest of the session while still shown as connected
  • Fixed MCP sign-in for a server with no valid URL failing with an opaque SDK error; /mcp no longer offers Authenticate for such servers
  • Fixed the weekly Fable limit not appearing in /usage and the VS Code usage meters when telemetry is disabled
  • Fixed /model accepting Sonnet 4.6 or Sonnet 5 with [1m] when the id carried a date or -v1:0 suffix, in the cases where the plain id was refused
  • Fixed /model picker showing a hardcoded Haiku version and price when ANTHROPIC_DEFAULT_HAIKU_MODEL pins a different model
  • Fixed dynamic workflows started during a model fallback running every agent on the fallback model instead of retrying the configured model
  • Fixed DISABLE_PROMPT_CACHING_HAIKU having no effect when Haiku is the session's main model
  • Fixed claude plugin validate saying Claude Code accepts a plugin or marketplace name it cannot install; such names in marketplace.json now fail validation
  • Fixed claude plugin validate passing plugins whose outputStyles, themes, monitors, or lspServers paths are missing or point outside the plugin directory
  • Fixed claude plugin details showing 0 MCP servers for plugins that declare their servers in plugin.json
  • Fixed claude plugin marketplace remove not saying which installed plugins it uninstalled with the marketplace; it now lists them
  • Fixed claude plugin uninstall removing the other of two installed plugins whose ids differ only in case, with its options and secrets, when the one named had no enabledPlugins entry at that scope
  • Fixed plugins that declare no version being silently restored at their source's newest commit, not the installed one, when their cached files were missing
  • Fixed user-installed plugins and marketplaces failing to load with "cache-miss" after the home or config directory was moved, for example in bind-mounted devcontainers
  • Fixed installed_plugins.json showing no plugins when it holds a record under an invalid plugin id; such a file loads again
  • Fixed installed_plugins.json being rewritten, losing records, when it holds a record this version cannot read; claude plugin commands now name the record and say how to recover
  • Fixed permission dialogs in screen-reader mode reading quoted commands and paths as if they were the dialog's own text
  • Fixed /context not counting MCP server instructions: they now appear as their own row and count toward the total
  • Fixed markdown links in the Warp terminal rendering as plain text instead of clickable hyperlinks
  • Fixed claude mcp add, add-json, and remove reporting success when the user or local config file could not be written, for example inside a sandbox
  • Fixed the first words of a reply in a cloud session sometimes appearing late instead of streaming as Claude writes them
  • Fixed Claude's built-in keybindings guide saying chords time out after 1 second instead of 3, and calling cmd an alias of meta, which could produce cmd+ shortcuts most terminals never send
  • Fixed keybindings.json silently accepting a misspelled modifier such as ctl+k; it now warns in the debug log and suggests the fix
  • Fixed footer hints still saying "Enter to view" after footer:openSelected was rebound or unbound in keybindings.json
  • Fixed keys typed quickly together (type-ahead, key repeat, bursts over ssh or tmux) sometimes being handled against stale state
  • Fixed worktree checkouts failing certificate verification (for example on Git LFS downloads) when the CA certificate is passed to git as GIT_CONFIG_COUNT environment pairs
  • Fixed sandboxed git asking credential helpers to store the sandbox proxy's login, which printed "failed to store"
  • Fixed managed sandbox settings being ignored entirely when one nested value was invalid; the invalid value now fails closed and the rest of the block still applies
  • Fixed Claude's edits to its own auto-memory notes being blocked as sensitive-file writes when Claude Code was started in a subdirectory of a git repository
  • Fixed Remote Control being unavailable on paid plans when telemetry is turned off with DISABLE_TELEMETRY or DO_NOT_TRACK
  • Fixed the /remote-control menu cutting its QR-code hint mid-word in narrow terminals
  • Fixed vim mode . dropping a Shift+Enter newline, leaving the cursor inside an accented letter, and repeating an older change after 3J or Visual-mode J on the last line
  • Fixed vim mode cursor placement: recalling a prompt over 10,000 characters in normal mode no longer leaves the cursor past the end, and V then p now lands on the first non-blank
  • Fixed vim mode J joining lines with different spacing than Vim (such as a space before ) or after a tab), and 3J or Visual-mode J on the last line not moving the cursor as Vim does
  • Windows: Fixed the PowerShell tool letting cmd /c rd, rmdir, del or erase delete drive roots, the home folder and other folders that Remove-Item refuses
  • Improved the /mcp tool list: it shows more tools at once, scrolls with the page keys and mouse, and marks tools your organization blocked with a warning icon
  • Improved MCP tool results: images returned by MCP tools are now also saved to a file, so Bash, Read and other tools can open them
  • Improved /tasks: rows show a status icon, the name and whole facts, the title and key hints stay on screen with many tasks, and the list gains paging keys, the mouse wheel and clicks
  • Improved lists in /help, /hooks, /copy, /chrome, /memory, /ide, /release-notes, /rewind, /diff, /remote-env, /plugin and other pickers with page keys, mouse wheel and clicks
  • Improved lists beside a search box, such as /skills and /artifacts

…

Thursday, September 24Sep 24, 2026

Release v2.1.282

Claude Code v2.1.282

What's changed Added a maxProseWidth setting that caps the width of Claude's prose in wide terminals while tables and code blocks keep the full width Added a startup notice, and /status and claude doctor entries, listing telemetry variables in a project's…

Read full notes

What's changed

  • Added a maxProseWidth setting that caps the width of Claude's prose in wide terminals while tables and code blocks keep the full width
  • Added a startup notice, and /status and claude doctor entries, listing telemetry variables in a project's settings files that were ignored or that turned telemetry off
  • Added the allowClaudeInChromeWithManagedMcp managed setting to let claude --chrome run alongside an exclusive managed-mcp.json; the error shown when Chrome is blocked now names it
  • Added store.readiness_grace_seconds to the Claude apps gateway so /readyz can stay ready through a short Postgres outage such as a database failover
  • Added a scrollbar to the /feedback drafts list in fullscreen mode; it appears while the mouse is over the list
  • Fixed every request failing with a 400 error in conversations whose history holds web search results the API cannot decrypt (for example, from a turn answered through a third-party gateway)
  • Fixed more cases of continued or resumed sessions (--continue, --resume) re-sending earlier messages in a changed form, which could make the API drop Claude's earlier reasoning
  • Fixed earlier extended thinking being dropped when /model, /rename, /artifacts or another immediate slash command was used while Claude was working
  • Fixed continued or resumed conversations losing earlier extended thinking when relaunched with a --tools list that leaves out a built-in tool offered earlier in the conversation
  • Fixed sessions failing on every turn with an "Invalid data in redacted_thinking block" API error; Claude Code now drops the conversation's thinking blocks and retries once
  • Fixed compaction failing when the summarization request is refused; it now retries on a fallback model
  • Fixed a failed turn ("Effort 'xhigh' isn't available with thinking turned off") after a safety-related model switch in sessions with thinking off and effort above high
  • Fixed an unanswered Fable usage-credits prompt switching models in SDK-hosted sessions such as Claude Desktop; the turn now ends instead, and Remote Control clients now see the model-switch notice
  • Fixed /model with a full Fable model id stopping at an API error instead of opening the usage-credits prompt when the plan needs usage credits that aren't turned on yet
  • Fixed requests failing for up to a minute with an "another Claude Code process is refreshing it" login error after that other process was closed or killed mid-refresh
  • Fixed sessions started while another Claude Code window was refreshing the sign-in (common with several VS Code windows) not retrying their organization policy fetch
  • Fixed CLAUDE.md and rules being read at startup through a repository symlink reaching macOS's /Network via .. or a /.vol-style kernel path, or a rules link to macOS's /home being listed
  • Fixed Bash permission rules with a mid-pattern :* being skipped in settings files while --allowedTools honored them; they now work from every source, with a startup warning on how they match
  • Fixed a command approved on a restored permission prompt running twice when a remote session's worker restarted
  • Fixed managed settings ignoring a mistyped value for boolean lock keys such as disableClaudeAiConnectors or allowManagedPermissionRulesOnly; the lock now applies and startup names the key
  • Fixed managed permissions, autoMode, worktree and attribution settings being ignored entirely when one nested value was invalid; the rest of the block now still applies
  • Fixed repository, user and --add-dir skills, commands and skills-directory plugin manifests pre-approving their own tools via allowed-tools under managed allowManagedPermissionRulesOnly
  • Fixed safeguard block messages on Amazon Bedrock and Bedrock Mantle not showing a request ID; block messages now also show the message ID
  • Vertex AI: Fixed web search not being offered for models Claude Code doesn't recognize yet, such as newly released ones
  • Fixed Bash and PowerShell hiding a full disk quota behind "Exit code 1" and leaving large output files in temp
  • Fixed tool input validation errors naming only an unknown, missing or mistyped parameter when other parameters in the same call were also invalid; those are now listed too
  • Fixed pasted multi-line text being submitted line by line after the terminal's bracketed paste mode was reset mid-session
  • Fixed the prompt's example text flashing and disappearing at startup in projects with a SessionStart hook
  • Fixed a blank screen flashing before the first frame when starting in fullscreen mode
  • Fixed garbled, misplaced rows in the non-fullscreen renderer after the screen got shorter while still taller than the terminal, e.g. deleting a prompt line while a shell command streams output
  • Fixed a stale character left in the last column of a diff when a redrawn line's CJK character or emoji wrapped to the next row
  • Fixed the cursor landing before the end of a prompt recalled from history when the prompt contains a tab
  • Fixed the send-now hint showing ctrl+enter on terminals that send it as a newline (Windows Terminal before 1.25); it now shows ctrl+x ctrl+s there
  • Fixed claude remote-control --debug failing with "Unknown argument: --debug", although Remote Control's own eligibility error says to run with --debug
  • Fixed /install-github-app saying "cancelled" and then still pushing the branch and saving the API key secret; leaving now stops the remaining steps and reports what was already done
  • Fixed /feedback, /bug and /share on Bedrock, Vertex and other third-party providers still saving the report file after you cancelled during the save
  • Fixed plugin uninstall reporting success and deleting the plugin's saved options when its settings file still enabled it or could not be read; it now stops and names the file
  • Fixed plugin uninstall deleting a plugin's saved options and secrets when the list of installed plugins could not be read after the removal; they are now kept and the uninstall says so
  • Fixed a key typed right after / in /skills moving the skill list instead of reaching the search box
  • Fixed the terminal cursor jumping from the /skills search box to the skill list while typing, which could hide the caret and put IME input in the wrong place
  • Fixed lists with a scrollbar, such as /skills and /mcp, being two columns narrower outside fullscreen mode, where the scrollbar can never appear
  • Fixed the agent panel footer wrapping onto two lines with long rebound keys, and its "Esc to collapse" hint ignoring a rebound collapse key
  • Fixed a doubled · separator in the /tasks dialog footer when the stop-all-agents shortcut is unbound in keybindings.json
  • Fixed artifact publishes failing when Claude gave the version a label longer than 60 characters; the label is now shortened
  • Fixed screen-reader mode, quoted lists and very long lists dropping the blank lines at the top of a code block that opens a list item, directly or inside a quote
  • Fixed PDF page-read error messages: paths with accented or non-Latin characters now appear readably, and a folder named like "password" or "invalid" can no longer make the error name the wrong cause
  • Fixed vim mode >> indenting empty lines, r with a count longer than the line changing text, 2J joining one line too many, and a count on the last line (2dd, 2>>) shifting or deleting it
  • Fixed vim mode cursor placement: after dd, dj, dG or a whole-line p/P it lands on the first non-blank, yy no longer moves it, and Esc after an emoji no longer leaves it inside the emoji
  • Fixed vim mode ignoring a count typed before . when repeating x, s, p, d or c, and whole-line p/P, o, O, J, >> and << acting on the wrong line when a line above wraps

…

Wednesday, September 23Sep 23, 2026

Release v2.1.281

Claude Code v2.1.281

What's changed Added Claude apps gateway support for newer Claude Desktop keys in desktop policy blocks, including blockReadsOutsideWorkingDirectories and disableBypassPermissionsMode Added assume_role on Claude apps gateway Bedrock upstreams: the gateway…

Read full notes

What's changed

  • Added Claude apps gateway support for newer Claude Desktop keys in desktop policy blocks, including blockReadsOutsideWorkingDirectories and disableBypassPermissionsMode
  • 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)
  • Added telemetry.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
  • 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.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
  • 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_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
  • 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
  • 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
  • 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
  • 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
  • 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)

…

Tuesday, September 22Sep 22, 2026

Release v2.1.280

Claude Code v2.1.280

What's changed Added Claude Opus 5.5 (claude-opus-5-5), now the default Opus model — 1M context, $4/$20 per Mtok with $0.20/Mtok cache reads Added mouse support to more lists in fullscreen mode: the wheel scrolls the /skills list, and a skill's state options…

Read full notes

What's changed

  • Added Claude Opus 5.5 (claude-opus-5-5), now the default Opus model — 1M context, $4/$20 per Mtok with $0.20/Mtok cache reads
  • Added mouse support to more lists in fullscreen mode: the wheel scrolls the /skills list, and a skill's state options in /plugin can be clicked
  • Added CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH to change the 2,048-character cap on MCP tool descriptions and server instructions for every MCP server in the session
  • Added hook output sizes and the number of oversized outputs saved to a file to the hook_execution_complete OpenTelemetry event
  • Fixed writes through a symlinked path being judged by their in-tree spelling: the prompt names where the write lands, and acceptEdits, allow rules and auto mode no longer approve one landing outside
  • Fixed auto mode retrying an action over and over when a safety check declined to review it; the action is now denied once, noting that retrying won't help
  • Fixed auto mode denying actions over and over without pause when a safety check gave no answer; retries now back off, and the turn stops with a message after ten in a row
  • Fixed Write calls failing validation when a model sends path, file_text, file_content or a stray description instead of file_path and content
  • Fixed Ctrl+C or Ctrl+D pressed twice in most dialogs (/model, /effort, /config, /status, /usage, /plugin, /sandbox, /permissions, /artifacts, /mobile, /login, /upgrade, /usage-credits, /install-github-app, /setup-bedrock, /setup-vertex) quitting Claude Code instead of closing the dialog
  • Fixed a click that only brought the terminal window to the front also triggering the item under the pointer — in search pickers, tab bars, agent/workflow rows, slash-command links and suggestion dropdowns
  • Fixed a stray n closing dialogs and a stray y confirming them; Enter and Esc accept and cancel (bind y/n to confirm:yes/confirm:no in keybindings.json to restore)
  • Fixed text fields in dialogs losing a typed letter, digit or Space to a keybinding on that key
  • Fixed the prompt line staying scrambled on Windows terminals after invisible characters were removed on Enter; the screen is now repainted so you review the exact text that will be sent
  • Fixed the invisible-character cleanup removing the zero-width non-joiner that Persian and Arabic text uses to attach a suffix to a Latin word or number, such as the plural of "PDF"
  • Fixed voice dictation not stopping on Ctrl+C (the prompt cleared but the microphone kept recording), Esc not cancelling while a transcript was processing, and held Space starting dictation from the transcript view and vim NORMAL mode
  • Fixed a model switch made from a host app (Claude Desktop, VS Code, SDK) while Claude is working causing a prompt-cache miss on the next prompt
  • Fixed resumed fork subagents rebuilding their tool list instead of re-sending the one they first used, which broke prompt caching for that agent
  • Fixed subagent hand-back messages showing an internal provenance preamble when expanded outside verbose mode
  • Fixed installed_plugins.json keeping the install-time commit after updating a plugin from a GitHub repository or git URL that tracks a branch or tag
  • Fixed skills in ~/.claude/skills/ being moved to ~/.claude/skills/.trash/ when a manifest.json in that folder listed their names
  • Fixed the session feedback survey showing no hover highlight on light and ANSI themes
  • Fixed /workflows briefly showing a one-row list before opening the only run
  • Fixed the mouse wheel not scrolling selection lists with hidden options (such as /model and /permissions) in fullscreen mode
  • Fixed a skill you switched off showing the same red ✘ as a plugin that failed to load in /plugin and /skills; off now shows a dim ◯
  • Fixed multi-select option descriptions being indented under the option number instead of under the label
  • Fixed the search box in /plugin, /skills and /mcp losing its right border in fullscreen mode
  • Fixed /mcp showing △ in the server list but ⚠ in the detail view for the same server; the list, detail views and /plugin now all show ⚠
  • Fixed Home and End doing nothing in the /config settings list and in selection lists such as /model, /memory and permission prompts
  • Fixed PgUp/PgDn in the /skills menu wrapping past the first or last skill instead of stopping there
  • Fixed Tab silently changing the selected setting's value in the /config list; it now does nothing there
  • Fixed conversations failing on every turn with a "role 'system' must precede an 'assistant' message" API error
  • Fixed conversations with the advisor on failing every turn with API Error 400 "Input tag 'advisor_20260301'" behind a proxy or gateway that doesn't support it; the request now retries without it
  • Fixed a session failing on every turn and /compact when its saved history held a malformed notice about MCP tools that could not be loaded
  • Fixed a crash when resuming a session whose saved transcript holds a malformed system message or a memory-saved notice without its file list
  • Fixed one cause of long-running fullscreen sessions exiting with "Claude Code exited after an unrecoverable interface error": a damaged cached message list is now rebuilt
  • Fixed Claude Code hanging when a settings file, or a file it re-reads after an edit, is replaced by a named pipe mid-read
  • Fixed /config crashing and some on/off preferences being misread when a preference that has moved to settings.json still holds a value like null or "false" in ~/.claude.json
  • Fixed resuming a session with unfinished background agents, shells or workflows starting a model turn on its own before you typed anything
  • Fixed messages sent to a background subagent being silently lost in headless and SDK sessions when the subagent was finishing its turn
  • Fixed a finished subagent's report being lost when the conversation that launched it was compacted before the report was read
  • Fixed background subagents being unable to use the LSP tool when an LSP plugin is active
  • Fixed background shell tasks reporting benign non-zero exits (e.g. grep with no matches) as failures
  • Fixed background sessions (claude --bg) being unable to run git, hooks, plugins and other helper programs when an environment variable handed to the session contained a NUL character
  • Fixed Ctrl+C needing three or four presses to exit while background subagents are running; two presses now exit
  • Fixed IDE selection being dropped when a sent prompt comes back into the input, such as pressing Esc to edit it, rewinding to it, or pressing Esc while startup hooks run
  • Fixed a ! shell-mode prompt stashed with Ctrl+S coming back as a plain prompt when restored, and / listing file paths right after stashing one
  • Fixed claude agents showing a blank, unresponsive screen instead of an error when the temp directory is full, not writable or owned by another user
  • Fixed an MCP server re-added under the same name after claude mcp remove still showing as needing authentication instead of reconnecting
  • Fixed background plugin marketplace auto-update ignoring git credential helpers, so private-repo marketplaces were re-cloned every run or never updated
  • Fixed claude plugin update clearing a plugin's recorded commit and moving it to version "unknown" when the official marketplace's snapshot file is a link or too large
  • Fixed the Artifact tool silently disappearing when your organization's policy can't be loaded (for example behind a web proxy); Claude now says what's blocking it
  • Fixed artifact republishes silently resetting stored database access rules or dropping the viewer profile scope when that capability was re-sent without them; they are now refused
  • Fixed /ultrareview

…

Saturday, September 19Sep 19, 2026

Release v2.1.278

Claude Code v2.1.278

What's changed Changed auto mode for Claude API and Enterprise users, and on Bedrock, Vertex, Foundry and gateways, to default to the server-side classifier, which does not charge for classifier overhead (CLAUDE_CODE_AUTO_MODE_SERVER=0 opts out on Bedrock,…

Read full notes

What's changed

  • Changed auto mode for Claude API and Enterprise users, and on Bedrock, Vertex, Foundry and gateways, to default to the server-side classifier, which does not charge for classifier overhead (CLAUDE_CODE_AUTO_MODE_SERVER=0 opts out on Bedrock, Vertex, Foundry and gateways); warns on billed fallback. See https://code.claude.com/docs/en/auto-mode-classifier-billing
  • Added an Auto mode server row to /status showing whether this session's auto mode classifier runs on the server

Friday, September 18Sep 18, 2026

Release v2.1.277

Claude Code v2.1.277

What's changed Added AGENTS.md support: in a project with no CLAUDE.md, Claude Code reads AGENTS.md instead; change it under "Project instructions" in /config (not yet on Bedrock, Vertex or Foundry) Added CLAUDE_GATEWAY_PROXY_IS_EGRESS_BOUNDARY=1 for Claude…

Read full notes

What's changed

  • Added AGENTS.md support: in a project with no CLAUDE.md, Claude Code reads AGENTS.md instead; change it under "Project instructions" in /config (not yet on Bedrock, Vertex or Foundry)
  • Added CLAUDE_GATEWAY_PROXY_IS_EGRESS_BOUNDARY=1 for Claude apps gateways whose only egress is a forward proxy: every outbound request hands the proxy the hostname instead of resolving it locally
  • Added an optional headers: map on Claude apps gateway upstreams, to send static headers to a proxy you run in front of a provider
  • Added a line saying a background task's update is waiting when it finishes while a panel such as /tasks is open
  • Fixed claude -p and Agent SDK sessions that could hang with no result after an internal error; they now report the error and exit with code 1
  • Fixed conversations failing every request with "text content blocks must be non-empty" when an earlier assistant turn held an empty text block beside other content, including after --resume
  • Fixed being unexpectedly logged out when an older Claude Code build (for example an IDE extension's bundled CLI) runs on the same machine as the current one
  • Fixed interactive start-up hanging or showing an error for ANTHROPIC_API_KEY users when ~/.claude.json holds a malformed customApiKeyResponses value
  • Fixed update checks erroring every 30 minutes, and claude update hanging when a minimum or maximum version is set, if a proxy returns an invalid version; a malformed minimumVersion is now ignored
  • Fixed claude update on winget- or apk-managed installs reporting "up to date" when the version lookup failed
  • Fixed claude plugin install sometimes failing and breaking the installed copy when reinstalling a plugin version that a session or another program was using; an unchanged copy is now left alone
  • Fixed Grep and Glob reporting no matches when the search could not start because the system was out of processes, memory or file handles; they now return an error saying so
  • Fixed the Write tool silently ending the turn as a declined permission when the target path is an existing directory; it now reports a clear error
  • Fixed the Edit tool treating an escaped backslash followed by uXXXX text as a \uXXXX escape, which could make an edit of a non-ASCII character rewrite an escaped backslash sequence instead
  • Fixed the Edit tool reporting "Invalid regular expression: regular expression too large" instead of "String not found in file" when a very large edit containing non-ASCII text did not match the file
  • Fixed a turn ending early with "Path contains null bytes" when a tool call's file path contained \u0000 written as an escape sequence; escaped control characters now stay as literal text
  • Fixed background sessions (claude --bg) exiting when a plugin's LSP server exited or closed its stdin
  • Fixed a crash ("Type error") when opening /mcp or /plugin manage with a malformed claudeAiMcpEverConnected value in ~/.claude.json
  • Fixed a crash at launch when ~/.claude.json holds a malformed theme value
  • Fixed a crash ("unrecoverable interface error") when the prompt held text containing terminal color codes, for example a prompt recalled from history or text loaded from the external editor
  • Fixed a crash when resuming a session whose saved history holds an assistant message stored as a plain string
  • Fixed sessions on slow or heavily loaded machines sometimes exiting with "Claude Code exited after an unrecoverable interface error" when the first spinner appeared
  • Fixed a rare case where the screen could stop updating for the rest of the session after an internal rendering error
  • Fixed a rare case on Windows where a turn could stop with an error such as "Out of memory" right after Claude replied, so that reply's tool calls never ran
  • Fixed sessions continued after /clear (restart, --continue, --resume) missing part of their first message when a SessionStart hook printed output, causing a full prompt-cache miss
  • Fixed messages from other agents (such as a subagent's SendMessage) that arrived mid-turn showing up below the "Ran N shell commands" row instead of where they arrived
  • Fixed the "copied" notice not appearing after drag-selecting text in the fullscreen /resume picker and other panels that cover the prompt area
  • Fixed $TMPDIR expanding empty in Bash commands that run outside the sandbox while sandboxing is enabled
  • Fixed WebFetch and WebSearch in Cowork cloud sessions not telling Claude why a request was refused, such as a used-up fetch budget or an admin policy
  • Fixed the Claude apps gateway's telemetry relay ignoring a collector hostname or domain listed in NO_PROXY when a proxy is set
  • Fixed one malformed strictKnownMarketplaces or blockedMarketplaces entry silently disabling the whole enterprise marketplace policy
  • Fixed failed auto-updates leaving large staged downloads behind in ~/.cache/claude/staging
  • Fixed /plugin not stripping terminal control characters from messages on the Installed tab, such as the error of a failed plugin update
  • Fixed /plugin → Installed and /skills crashing when a skill or legacy command is named like a built-in Object property such as constructor or toString
  • Fixed /plugin closing with no message when every install in a multi-select failed
  • Fixed uninstalled plugins reappearing as "failed to load" rows in /plugin Installed, and Remove not clearing such a row
  • Fixed plugins from the official marketplace being recorded without their commit in installed_plugins.json, and installed_plugins.json keeping the old commit after updating a pinned-commit plugin
  • Fixed plugin reload previews keeping every previewed copy of a plugin archive unpacked until exit, and overwriting the cached --plugin-url archive a reload falls back to when its download fails
  • Fixed Remote Control session bookkeeping failing when ~/.claude.json holds a malformed placeholder record
  • Fixed the error after a revoked claude.ai login blaming an expired Anthropic profile; it now leads with /login
  • Fixed typed or pasted text occasionally coming out scrambled in the claude agents dispatch input during key repeat or very fast input
  • Fixed a crash ("unrecoverable interface error") when resuming a session whose saved transcript contains a stop hook summary without a well-formed hook list
  • Fixed Enter on a selected agent panel row doing nothing when keybindings.json rebinds Enter in the Chat context, for example to chat:queueSubmit
  • Fixed PDF page reads on Windows failing when the working folder's path is long (about 120 characters or more)
  • Fixed a headless resume (claude -p --resume, the SDK, a VS Code extension window reload) starting the session's cost and usage totals at zero; headless sessions now save their totals at exit
  • Fixed project skills from the main repository not loading in --worktree sessions when .claude/skills is untracked
  • Fixed a sandbox.excludedCommands glob exempting an entire compound Bash command from the sandbox when only one part matched; every part must now match
  • Fixed resumed subagents and teammates re-rendering the MCP tool definitions they had loaded, which broke prompt caching for that agent
  • Fixed rate-limited artifact publishes telling Claude to stop retrying; Claude is now told nothing was published and when to send the same publish again
  • Fixed attachments recorded earlier in a conversation being re-rendered after a resume or relaunch, which dropped extended thinking and missed the prompt cache
  • Fixed Console sign-in showing only "Request failed with status code 400" when the server refuses to create an API key; it now shows the server's message
  • Fixed messages typed while Claude is still working sometimes being ignored by the model
  • Improved session start-up for SDK and headless (-p) use: the first turn no longer waits on the per-directory CLAUDE.md lookup
  • Improved the Claude apps gateway's loopback error messages to name CLAUDE_GATEWAY_ALLOW_LOOPBACK

…

Release v2.1.276

Claude Code v2.1.276

What's changed Fixed every request failing with 400 … Input tag 'advisor_20260301' when ANTHROPIC_BASE_URL points at a proxy or gateway (2.1.275 regression)

Read full notes

What's changed

  • Fixed every request failing with 400 … Input tag 'advisor_20260301' when ANTHROPIC_BASE_URL points at a proxy or gateway (2.1.275 regression)

Thursday, September 17Sep 17, 2026

Release v2.1.275

Claude Code v2.1.275

What's changed Added the signed-in account to Claude apps gateway sign-in: when the gateway names it, you confirm it before the credential is saved, and /status shows it Added a send-now key (ctrl+enter, or ctrl+x ctrl+s) that interrupts the current turn and…

Read full notes

What's changed

  • Added the signed-in account to Claude apps gateway sign-in: when the gateway names it, you confirm it before the credential is saved, and /status shows it
  • Added a send-now key (ctrl+enter, or ctrl+x ctrl+s) that interrupts the current turn and sends all queued messages at once; sent and queued messages show in gray until the model receives them
  • Added a startup warning when a configured otelHeadersHelper fails, so sessions that silently export no telemetry are noticed
  • Added syncing of the skills and plugins enabled on your claude.ai account to terminal sessions signed in with it; opt out with syncClaudeAiSkills: false or syncClaudeAiPlugins: false
  • Added /plugin install <plugin> --marketplace <source>, which offers to add the marketplace before installing the plugin
  • Fixed a restored memory file's age note changing between requests after a compaction or resume, which caused prompt cache misses
  • Fixed --forward-subagent-text stream-json and SDK output dropping the messages of subagents spawned by a context: fork skill, and of forked skills invoked by a subagent or another forked skill
  • Fixed @-mention file suggestions being buried below MCP resources when using a custom fileSuggestion command or typing @./@./
  • Fixed fullscreen mode placing background-task completion notices beneath a long turn's collapsed tool row instead of where they arrived; each notice now closes the open row
  • Fixed claude plugin marketplace update deleting a GitHub marketplace's local copy when the fetch failed and the marketplace was named after its repository
  • Fixed plugin and marketplace messages, logs and claude plugin marketplace list showing a password or token stored in a git, ssh or marketplace URL
  • Fixed a resumed cloud session leaving an unanswered question open in the transcript after a queued message superseded it
  • Fixed vim mode placing the cursor one character right after a dot-repeated "!" or a fast-typed "i!" switched a non-empty prompt into shell mode
  • Fixed fullscreen mode freezing or blanking for several seconds when scrolling up past a large file diff
  • Fixed a stray </ccmemory>-style closing tag occasionally appearing in responses
  • Fixed plugin messages, logs and the VS Code plugin dialog showing the wrong server for some git addresses
  • Fixed a terminal API Error: 400 on every turn for users behind a network gateway that rewrites API error responses when a beta request header is rejected
  • Fixed sandboxed Bash commands on Linux reporting exit code 0 for failed commands when the shell is zsh
  • Fixed the Read tool hanging instead of reporting an error when part of a large file could not be decoded under memory pressure
  • Fixed --resume, the resume picker preview, resumed background agents and the transcript view failing on a session whose saved history contains a malformed task-reminder or @-file attachment entry
  • Fixed a crash when resuming a conversation whose transcript contains a malformed message entry, and a fullscreen crash when such a conversation received new messages while scrolled up
  • Fixed sessions failing to resume or start when their saved transcript contains a malformed message content block
  • Fixed Grep, Glob and @-file suggestions hanging or running out of memory on searches over the 20MB output cap, and system ripgrep reporting "no matches" instead of an error after a flood of warnings
  • Fixed /rewind in a forked or background session restoring a zero-filled or truncated file when the session's file-history backups could not be fully copied
  • Fixed fullscreen sessions sometimes exiting with "Claude Code exited after an unrecoverable interface error" when typing fast or holding a key with the slash-command dropdown open
  • Fixed background sessions crashing and restarting their worker when a command fed through stdin ran on a machine that had run out of file descriptors
  • Fixed a crash at launch when ~/.claude.json holds a malformed mcpNeedsAuthNoticed value
  • Fixed --resume and --continue dropping a conversation's earlier thinking when a built-in tool it started with has since been switched off by a server-side flag
  • Fixed text selected with the mouse in the fullscreen claude --resume session picker never reaching the clipboard
  • Fixed plugin reload previews replacing a running session's extracted plugin files when the plugin was loaded from a --plugin-dir or --plugin-url archive
  • Fixed self-hosted runners with --drain-wait-sec losing the final result of a turn that finished during a SIGTERM drain; the runner now waits briefly for the turn to be reported
  • Fixed SubagentStop hooks with a specific matcher firing for every stopping subagent whose agent type was empty
  • Fixed sandboxed Bash commands being unable to write to project directories named hooks/ or config/
  • Fixed Artifact updates failing with "File not found" after a session resumes on another machine or its scratchpad is cleared: the page's last published version is restored
  • Fixed /update-config writing Write(path) permission rules, which file permission checks don't match, instead of Edit(path) rules
  • Fixed four dead documentation URLs (Pricing, Computer Use, Skills, CLI) in the bundled claude-api skill's live-sources table
  • Improved prompt caching for a --system-prompt that contains a __SYSTEM_PROMPT_DYNAMIC_BOUNDARY__ line: the text above it is now cached globally, as the SDK's array form already is
  • Improved the /desktop error when Claude Desktop does not open: it now says why and what to do next
  • Improved the Artifact tool's publish and read results: they now say who can open the page and what the owner's Share menu offers
  • Improved artifact publish results: they name the tab icon sent, warn when the page contains a NUL byte, and retry a flaky fetch of the newer page to merge after a stale publish
  • Improved pasted and attached images: they are now saved where Claude can open them as files without a permission prompt, including in Desktop and VS Code
  • Improved the Artifact tool's guidance so Claude updates a shared artifact in place when you were given edit access to it, instead of publishing a separate copy
  • Improved plan-usage reads: editor windows and non-interactive sessions on one machine now share a read made in the last minute instead of each calling the usage endpoint
  • Improved the ListPlugins tool description so Claude knows it lists plugins enabled on your claude.ai account, not plugins installed locally with /plugin
  • Improved responsiveness when the terminal is slow or paused: output no longer falls further behind while the terminal catches up
  • Improved Write and Edit results for files in the synced account-skills folder: they now say the change is not saved to your account and how to save it
  • Updated /logout for Claude apps gateway sign-ins to also end the session on gateways that advertise token revocation
  • Changed hosted sessions to keep an unanswered permission prompt up after a container restart, instead of asking again
  • Changed the Artifact tool to ask for a one-word tab icon on a first publish instead of an emoji favicon
  • Changed Claude in Chrome in auto mode to skip the extension's per-site check for classifier-approved calls, as bypass mode does, fixing browser_batch "Permission denied" after a redirect
  • Changed plugins installed from an npm source to be fetched with npm pack --ignore-scripts and integrity-verified, so a package's install scripts no longer run
  • Changed scheduled and Run now routine runs to save data to, and republish the page of, an artifact you can edit without asking; public artifacts, first publishes and deletes still ask
  • Removed the startup notice that told you a one-off scheduled routine had run since your last session
  • [VSCode] Added viewing, editing and deleting a saved memory inside the Memory dialog
  • [VSCode] Added sending an attached image without typing any text
  • [VSCode] Added a Retry link to the MCP servers dialog when the server list fails to load

…

Release v2.1.274

Claude Code v2.1.274

What's changed Added a visible warning when memory usage is critical, with steps to free memory or restart safely Added CLAUDE_CODE_MCP_STARTUP_WAIT_MS to bound how long the first non-interactive turn waits for connecting MCP servers (0 = don't wait) Added…

Read full notes

What's changed

  • Added a visible warning when memory usage is critical, with steps to free memory or restart safely
  • Added CLAUDE_CODE_MCP_STARTUP_WAIT_MS to bound how long the first non-interactive turn waits for connecting MCP servers (0 = don't wait)
  • Added effort attribute to the claude_code.llm_request OpenTelemetry trace span, matching the api_request event
  • Added claude_code.managed_settings_resolved OTel event: managed-settings sources and policy helper state; redacted settings and digests with OTEL_LOG_MANAGED_SETTINGS=1
  • Added store.connect_timeout_seconds to the Claude apps gateway config to lengthen the Postgres connect timeout (default 5 seconds), and improved the boot error when the database is unreachable to point to store.postgres_url and the configured timeout
  • Added enduser.sub, the IdP subject, to the telemetry Claude Desktop and Cowork send through a Claude apps gateway
  • Added a Claude apps gateway warning when a replica has more requests open than the 256 it sends upstream at once, and a startup log line showing that limit
  • Added click-to-expand for collapsed teammate and agent messages in fullscreen mode
  • Fixed sessions getting stuck endlessly retrying "unexpected tool_use_id" 400 errors: corrupted transcripts now self-heal where possible, and otherwise a clear error (with a /rewind hint) ends the loop
  • Fixed MCP servers configured as http that only speak legacy HTTP+SSE failing to connect when they answer the first request with 422 or another 4xx error
  • Fixed Streamable HTTP MCP tool calls timing out after about 5 minutes even when a longer per-server timeout was set
  • Fixed MCP prompts and resources not refreshing when a server sends list-changed notifications without declaring listChanged
  • Fixed MCP tool calls refused with 403 insufficient_scope being reported as an expired sign-in: the error now names the missing permissions and points to /mcp re-authentication
  • Fixed hook-driven sessions (such as an active /goal) ending with "Prompt is too long" instead of compacting when the context overflowed again after a reactive compaction
  • Fixed an active /goal being lost when resuming (--continue / --resume) a session that had compacted
  • Fixed claude agents losing --model, --effort, --permission-mode, --allow-dangerously-skip-permissions and --agent after an auto-update relaunch
  • Fixed a per-turn slowdown when a language server publishes project-wide diagnostics for thousands of files
  • Fixed subagents with model: "opus" on Bedrock, Vertex or Foundry leaving the session's model when its id has no recognizable model family (unless ANTHROPIC_DEFAULT_OPUS_MODEL is set)
  • Fixed self-hosted runner sessions failing every turn with a 401 after a few failed token refreshes, until the next scheduled refresh; the runner now keeps retrying, and fetches a new token after a 401
  • Fixed clickable links to local file paths doing nothing in VS Code and other terminals that require a file:// URI
  • Fixed the transcript renumbering ordered lists in your own messages (typing "3. 2. 1." displayed "3. 4. 5."); numbers and "N)" markers now show as typed
  • Fixed AskUserQuestion preview notes being attached to a previously chosen option instead of the highlighted one
  • Fixed AskUserQuestion preview mode dropping the highlighted option when submitting a note with Enter
  • Fixed a resumed background agent keeping half of an interrupted tool batch when one of its calls was approved with a message
  • Fixed a local claude -p --resume started with CLAUDE_CODE_RESUME_INTERRUPTED_TURN not reporting background tasks the previous process left unfinished
  • Fixed the first turn of a cloud session sometimes starting without the tools of an SDK-hosted MCP server that was still connecting
  • Fixed background agent notifications claiming the agent had no live background work when it was still waiting on its own background task and would resume
  • Fixed error hints in Claude Desktop sessions to suggest slash commands like /usage-credits instead of CLI flags that cannot be used there
  • Fixed /schedule saving a routine's prompt without its message role when Claude writes the routine in the shape that listing routines returns
  • Fixed /status not showing the apiKeyHelper failure that its own error banner told you to check
  • Fixed /fast on in non-interactive sessions reporting on and then turning off under an organization's managed fast mode policy; it now says the organization has disabled it
  • Fixed the Artifact tool asking you to approve an update to an artifact that it then refused because the session had not read the latest version
  • Fixed Cowork and claude.ai cloud sessions with network access on treating reads of a teammate's artifact as if network access were off
  • Fixed a plugin or marketplace directory with no git repository of its own taking its version from an enclosing git repository, such as a git-managed ~/.claude
  • Fixed --strict-mcp-config with an empty --mcp-config holding the first non-interactive turn for up to MCP_TIMEOUT on incidental MCP servers
  • Fixed Stop prompt hooks re-sending their whole prompt on every block in a conversation; repeat blocks now name the condition with a 500-character label
  • Fixed extra empty editor windows opening at startup on Linux under Wayland when running inside the Cursor or VS Code terminal
  • Fixed an unhandled promise rejection in the Claude apps gateway when Postgres drops a connection during a spend check
  • Fixed Claude apps gateway cutting every open stream on SIGTERM: it now lets in-flight requests finish for up to 25 seconds before exiting (CLAUDE_GATEWAY_DRAIN_TIMEOUT_MS)
  • Fixed installed_plugins.json being rewritten on nearly every start-up when plugin policy comes from remote managed settings, which made Claude Desktop reload every open session's plugins
  • Fixed headless and SDK sessions making a separate model call for every background task that finished; completions already queued are now answered by one call
  • Fixed the Bash tool re-sourcing the shell profile (a multi-second stall on the next command) after every plugin reload; it now does so only when the plugins' bin/ directories changed
  • Fixed plugins with a top-level $schema in hooks/hooks.json showing an "unknown key" notice
  • Fixed MCP connection errors and the MCP login tool's description showing secrets resolved from ${VAR} placeholders in MCP configs
  • Fixed Bash permission checks for commands that loop over or assign certain special shell variables; these commands now ask for permission
  • Fixed worktree-isolated sessions accepting Bash commands with certain nested shell expansions; these are now refused
  • Fixed the Edit permission prompt preview sometimes showing a different location than the approved edit in files with multi-byte characters
  • Fixed background commands being stopped after 30 idle minutes on machines under mild memory pressure; they're now stopped only when memory is critically low, and the debug log says why
  • Fixed a message a subagent sends to the main session disappearing from the Claude Desktop transcript after a relaunch
  • Fixed a plugin loaded from a .zip being served from a stale extraction after several overlapping reloads
  • Fixed a sub-agent's progress summary being replaced by a runaway multi-paragraph reply
  • Improved startup in --input-format stream-json sessions: the first turn no longer waits up to 2s for still-connecting MCP servers whose tools tool search defers; they arrive on a later turn
  • Improved Monitor tool notifications: a script's final output and its exit now arrive as one notification instead of two, saving a model turn
  • Improved Artifact tool errors: when you are not signed in to claude.ai the terminal now says so on the first attempt, and Claude is told to stop retrying a rejected call sooner
  • Improved artifact publishing: a publish built on an older version is stopped before it is sent, with the newer page to merge

…

Tuesday, September 15Sep 15, 2026

Release v2.1.273

Claude Code v2.1.273

What's changed Added x-claude-code-request-class, x-claude-code-agent-type, x-claude-code-prev-tool-durations, x-claude-code-compaction and x-claude-code-context-compacted request headers for LLM gateways; opt in with CLAUDE_CODE_GATEWAY_HINT_HEADERS=1 Added a…

Read full notes

What's changed

  • Added x-claude-code-request-class, x-claude-code-agent-type, x-claude-code-prev-tool-durations, x-claude-code-compaction and x-claude-code-context-compacted request headers for LLM gateways; opt in with CLAUDE_CODE_GATEWAY_HINT_HEADERS=1
  • Added a notification when an MCP server disconnects mid-session and automatic reconnection gives up, pointing at /mcp
  • Added forking a session started with claude --remote-control or /remote-control from the Claude app; the fork runs as a background session on your computer
  • Fixed Bash commands the permission checker cannot fully analyze skipping the prompt under permissions.blockReadsOutsideWorkingDirectories, and a subshell hiding a dangerous rm in bypass mode
  • Fixed skills synced from claude.ai staying available after your organization turns Skills off; they now move to the recoverable trash
  • Fixed allowManagedMcpServersOnly, deniedMcpServers and disableClaudeAiConnectors set via MDM or managed-settings.json being ignored when server-managed settings are also present
  • Fixed 401/403 errors on Bedrock, Vertex and Foundry, and Claude apps gateway 403s, telling you to run /login; the message now names the credential to refresh or points to your gateway administrator
  • Fixed /login, /upgrade, and /extra-usage discarding earlier thinking from the conversation, which forced a full prompt-cache rewrite on the next request
  • Fixed auto mode stopping for approval when the Artifact tool uploads a file you attached to the chat in a cloud or Remote Control session
  • Fixed a long-running session recreating a stub .git/info/exclude after the repository's .git directory was removed or moved away
  • Fixed the main prompt dropping a ! typed at the start while already in shell mode, so negated commands like ! grep … can be typed
  • Fixed Read on macOS refusing a dragged-in screenshot, or any file the system reports under a second path, with "symlink resolution changed after permission was checked"
  • Fixed permissions.blockReadsOutsideWorkingDirectories: a memory directory chosen by a repository's settings is no longer loaded into the prompt, recalled, indexed, or used by memory extraction
  • Fixed sub-agents and background agents being reported as failed, with their result never delivered, when the final streamed reply omitted token usage or carried no model id
  • Fixed the context meter and auto-compact counting advisor-tool turns at roughly twice their real context size, which made auto-compact fire at about half the real window
  • Fixed /tui refusing to restart because of an agent-team teammate that had already finished its work and was no longer shown in the agents panel
  • Fixed saved scheduled tasks running in the wrong session after .claude/scheduled_tasks.json was copied into another folder, such as a new worktree
  • Fixed SDK and --output-format stream-json output dropping a subagent's remaining messages and final report after it is moved to the background mid-run (e.g. by CLAUDE_AUTO_BACKGROUND_TASKS)
  • Fixed /install-github-app reporting a SAML single sign-on block as "admin permissions required"
  • Fixed Remote Control clients attached to a Claude Desktop, VS Code or JetBrains session being refused when they ask for the session's context window usage
  • Fixed the spinner showing a doubled ellipsis ("……") on compaction status lines such as "Running PreCompact hooks…"
  • Fixed a false-positive spinner tip suggesting the frontend-design plugin after reading or publishing Artifacts
  • Reverted a 2.1.268 change that checked Read and Edit deny rules on Bash lines the permission checker can't analyze (eval, env -C); commands like time -p make build prompt again instead of being denied
  • Improved responsiveness in long sessions: hook progress and sub-agent activity no longer re-process the whole conversation on every update
  • Improved the Artifact tool's error when a publish includes a file type artifacts don't serve: Claude is told which types are served and what to do instead, and the terminal shows one plain line
  • Improved the Artifact tool's page read to state the capabilities and database rules the artifact service holds for the page, for anyone who can publish to it
  • Improved artifact database writes: an update can now remove a single field instead of rewriting the whole document
  • Improved artifact publishing: a publish whose connection drops after reaching claude.ai is now re-sent safely instead of failing or creating a duplicate version
  • Improved the cloud-session GitHub error for an IP allow list, a suspended app installation or SAML single sign-on to show the cause instead of a generic install hint
  • Improved /autofix-pr: when gh pr view fails it now shows gh's own error (sign-in, SAML, rate limit) instead of a generic exit-code line
  • Improved /autofix-pr to say why GitHub webhook delivery couldn't be set up for the PR (for example, no linked GitHub account) instead of a generic warning
  • Improved /web-setup errors: a refused GitHub token now lists the likely reasons and the fix, and a connection failure names a configured proxy or TLS certificate problem
  • Improved the in-session SSL certificate and proxy connection errors to name the error code and what to fix, such as NODE_EXTRA_CA_CERTS for an untrusted corporate CA
  • Improved the error when a cloud session can't be created because your Claude login expired or was revoked: it now tells you to run /login
  • Improved the error shown when an MCP server's sign-in expires mid-session to say how to re-authenticate (/mcp)
  • Changed auto mode on Bedrock, Vertex and Foundry to use the local classifier by default for now; set CLAUDE_CODE_AUTO_MODE_SERVER=1 to use the platform's server-side classifier
  • Changed OTEL_LOG_TOOL_DETAILS=1 to also include real agent, skill, plugin and MCP server names on cost and token metrics
  • Changed sign-in with a Claude account to also request access to your claude.ai plugins
  • Changed /bug and /feedback reports to include only model-behavior params (model, system prompt, tools) from the last API request, omitting request metadata and CLAUDE_CODE_EXTRA_BODY fields
  • [VSCode] Fixed "Report a problem" still appearing, and /bug / /feedback opening a report form, for organizations that have product feedback disabled
  • [VSCode] Fixed a red "Claude Code process exited with code 4294967295" banner appearing after completed turns on Windows
  • Windows: Improved the network-path permission check for UNC paths when a mapped network drive was added with --add-dir
  • [Claude Code on the web] Fixed routines losing access to an organization connector, and still calling the old one, after an admin removed and re-added that connector
  • [Claude Code on the web] Fixed creating a self-hosted environment from organization settings occasionally failing with a server error and leaving a half-created environment behind
  • [Claude Code on the web] Changed the admin "Share cloud sessions" setting to live under Data and privacy instead of the Claude Code page, where Data and privacy admins can also manage it
  • [Claude Code on the web] Added a "Discard unsaved changes?" confirmation before the New routine page or the Edit routine dialog throws away a routine name, prompt or edit you typed
  • [Claude Code on the web] Removed the full-page desktop-app download screen that new users without a cloud environment saw on Mac and Windows; they now go straight to setup
  • [Claude Code on the web] Improved the routine detail page: menu and rename in the breadcrumb, the on/off switch and Run now at the top, and run history beside the routine's settings
  • [Claude Tag] Fixed Claude going silent minutes after reinstalling the app when an Enterprise Grid was disconnected but one of its workspaces stayed connected
  • [Claude Tag] Fixed scheduled tasks set up in an organization-shared private Slack channel silently never posting; they now keep running in the thread they were created in

…

Release v2.1.272

Claude Code v2.1.272

What's changed Bug fixes and reliability improvements

Read full notes

What's changed

  • Bug fixes and reliability improvements

Monday, September 14Sep 14, 2026

Release v2.1.271

Claude Code v2.1.271

What's changed Added fast mode in Claude Code Remote sessions (cloud and self-hosted runners): the host's fast-mode setting or /fast typed in the session applies where your organization allows it Added mouse support to the /config panel in fullscreen mode: the…

Read full notes

What's changed

  • Added fast mode in Claude Code Remote sessions (cloud and self-hosted runners): the host's fast-mode setting or /fast typed in the session applies where your organization allows it
  • Added mouse support to the /config panel in fullscreen mode: the wheel scrolls the settings list, a click on a setting's value changes it, and the row under the pointer is highlighted
  • Added claude self-hosted-runner --drain-marker-file <path>: when that file exists at a SIGTERM drain, the runner reports its exit to the server as a host drain (telemetry only)
  • Added per-command allowed_domains to Bash, PowerShell and Monitor in auto mode with sandboxing: the hosts a command needs are reviewed with it and opened for it alone; other hosts are refused
  • Added omitClaudeMd to agent frontmatter and --agents JSON, letting custom and plugin subagents run without user, project and local CLAUDE.md files; managed policy files still load
  • Added --accept-command <sha256> to claude plugin install and claude plugin update to accept exactly the command a previous --json run displayed, instead of -y
  • Added support for a multiplier above 1, up to 10, in the modelPricing managed setting and the Claude apps gateway pricing block, for marked-up internal chargeback rates
  • Added a spinner tip pointing Bedrock, Vertex AI, Foundry and LLM gateway users to the Claude desktop app; the claude.ai desktop app tip now suggests /desktop, which offers to download the app
  • Fixed a cached organization policy being reused after switching accounts, organizations, or API keys, and the policy not refreshing until the hourly check when the credential changes mid-session
  • Fixed the tool and command lists not updating when the organization policy finishes loading after startup or changes mid-session
  • Fixed an enterprise managed-mcp.json that can't be read or parsed being ignored: it now keeps exclusive MCP control (user, project and plugin servers don't load) and warns at startup
  • Fixed org policy being fetched through, and rejected by, third-party local proxies set via ANTHROPIC_UNIX_SOCKET; they are again treated like other custom gateways, including for Remote Control
  • Fixed cloud sessions rejecting every subagent tool call ("updatedInput … failed schema validation") when a workflow or agent approval was applied after the session's worker restarted
  • Fixed /fast off answering "Fast mode unavailable" instead of turning fast mode off when the organization has fast mode disabled
  • Fixed sessions started with CLAUDE_CODE_SKIP_FAST_MODE_ORG_CHECK re-sending fast requests every turn after the API rejected fast mode; the rejection now stands and its reason is shown
  • Fixed fast mode under CLAUDE_CODE_RETRY_WATCHDOG failing the turn on a usage-credits limit, or retrying an overload at fast speed, instead of falling back to standard speed
  • Fixed Bash permission checks missing the file that fmt, column and similar commands read when it follows an option the checker doesn't recognize
  • Fixed Bash permission checks skipping files a wildcard expands to when the wildcard sits in a command's pattern or option value (for example grep -v dir/* file)
  • Fixed Bash permission checks so that shell variable declaration flags cannot misrepresent the command being run
  • Fixed Bash commands with two directory changes, a subshell, or a cd+git chain skipping the prompt under permissions.blockReadsOutsideWorkingDirectories in bypass and auto mode
  • Fixed a stale .git/config.lock breaking git checkout -b, git push -u and git config for the rest of a session after a sandboxed command failed to start (Linux)
  • Fixed settings file changes made outside the session going unnoticed on macOS machines whose system file-event service is saturated; the watcher now falls back to polling
  • Fixed resumed claude -p sessions whose tools all come from MCP servers failing with "At least one tool must have defer_loading=false"
  • Fixed turns failing with "API returned an empty or malformed response" when an LLM gateway returns the non-streaming reply as text/plain
  • Fixed sustained high CPU usage and repeated tool-list requests when an MCP server sends list_changed notifications in a tight loop
  • Fixed MCP OAuth mishandling client registrations: denying consent forced a new one, one for another redirect URI was reused, and a concurrent write could delete a valid one or keep a mismatched one
  • Fixed tool search returning no match when Claude selects an MCP tool by its bare name instead of its full mcp__server__tool name
  • Fixed Ctrl+O cancelling pending MCP server reconnects, and /mcp sent from Remote Control failing while the transcript view is open
  • Fixed the Claude in Chrome prompt telling the model to load tools through ToolSearch when ToolSearch is unavailable
  • Fixed cross-session messages held by the receiving session's permission-mode policy leaving no trace: headless senders now get a delivery notice, and SendMessage results no longer imply it was read
  • Fixed Claude starting a second copy of a background command (such as a watch task or dev server) that was still running after the conversation was compacted
  • Fixed /model warning about losing the conversation cache when switching back to the model the conversation actually ran on
  • Fixed /reload-skills reporting a skill count that disagreed with the slash menu after /cd
  • Fixed /resume and /continue showing only 1-2 sessions in fullscreen mode on short terminals
  • Fixed /resume and /teleport keeping the previous conversation's file-read tracking, so Claude could edit files the resumed conversation had never read
  • Fixed --resume dropping the 1M context window ([1m]) when the resumed session's model family differs from the configured default model
  • Fixed artifacts attached with /artifacts disappearing from the session after --resume
  • Fixed background sessions (claude --bg, claude agents) not watching the artifacts they publish for republishes made elsewhere
  • Fixed custom agents, slash commands and output styles beyond the first not loading from a virtual drive that reports inode 0, such as an encrypted vault mounted as a Windows drive
  • Fixed self-hosted runner sessions silently losing all host config (settings, skills, plugins, MCP servers) when the host config directory exceeds 64 MiB; added --host-config-snapshot disk|memory
  • Fixed skills synced from claude.ai staying on disk indefinitely after signing out; copies not refreshed within cleanupPeriodDays now move to the recoverable trash at the next launch
  • Fixed spinner tips suggesting commands that aren't available for your account type or are disabled in your session
  • Fixed the /add-dir path input: the left and right arrow keys now move the cursor, and Enter adds only the typed path instead of also adding the highlighted completion
  • Fixed text fields outside the main prompt moving a leading ! to the end of what you typed (!foo came out as foo!)
  • Fixed the interactive /hooks menu crashing when a hook matcher is named after an inherited object property such as __proto__ or constructor
  • Fixed a fullscreen rendering glitch where text kept a stale background color after the box around it lost its background
  • Fixed Delete in st and Alt+arrow keys in rxvt-unicode not working in attached background sessions
  • Fixed the terminal's replies to capability queries (^[[?1;2c) appearing at the shell prompt or in an editor when Claude Code exits, is suspended, or opens an editor right after starting
  • Improved terminal rendering performance: large diffs and long transcripts render faster, with fewer slow frames
  • Improved startup time slightly by skipping a redundant validation of built-in model data on every launch

…

Saturday, September 12Sep 12, 2026

Release v2.1.270

Claude Code v2.1.270

What's changed Fixed read-only git commands in Bash unexpectedly asking for permission after a session had been running for a while (regression in 2.1.269)

Read full notes

What's changed

  • Fixed read-only git commands in Bash unexpectedly asking for permission after a session had been running for a while (regression in 2.1.269)

Friday, September 11Sep 11, 2026

Release v2.1.269

Claude Code v2.1.269

What's changed Added claude plugin eval: run a plugin's eval suite against Claude Code and get scored, reproducible results (JSON + HTML report); see claude plugin eval --help Added /output-style [name] to list and switch output styles, including over Remote…

Read full notes

What's changed

  • Added claude plugin eval: run a plugin's eval suite against Claude Code and get scored, reproducible results (JSON + HTML report); see claude plugin eval --help
  • Added /output-style [name] to list and switch output styles, including over Remote Control and in cloud and other headless sessions
  • Added a diff of the files a Bash command changed to the Bash tool result when the Bash tool handles file edits (setting bashEditDiffEnabled)
  • Added OTEL_METRICS_INCLUDE_REPOSITORY to tag OpenTelemetry metrics and events with vcs.* repository attributes; commit events get vcs.ref.head.* with OTEL_LOG_TOOL_DETAILS
  • Added CLAUDE_CODE_GATEWAY_MODEL_DISCOVERY_TIMEOUT_MS to extend the LLM gateway /v1/models discovery timeout (default 3s)
  • Added a spinner tip suggesting /focus for a view with just your prompt, a one-line work summary, and the response
  • Added CLAUDE_CODE_WORKFLOW_MAX_CONCURRENT_AGENTS (1–256) to raise the Workflow tool's per-run concurrent agent limit for inference-bound fan-outs
  • Fixed the prompt cache being partially invalidated on the turn after a response was cut off at the output-token limit and automatically resumed
  • Fixed a case where resuming a session after interrupting Claude mid-thought could change how earlier context was re-sent, hurting prompt-cache reuse
  • Fixed F1/F2/F4 not working in kitty-protocol terminals and Delete in st, Alt+arrows acting as Escape in rxvt-unicode, and Shift+punctuation typing the unshifted key in WezTerm (regression in 2.1.247)
  • Fixed remote and headless sessions reporting "waiting for your input" while background agents were still running (set CLAUDE_CODE_BG_TASKS_REPORT_RUNNING=0 to restore the old behavior)
  • Fixed the terminal's replies to capability queries (^[[?1;2c) appearing as stray text at startup in some terminals
  • Fixed rows at the top or bottom of the transcript going blank in fullscreen after resizing the terminal
  • Fixed a deny or ask permission rule starting with ! applying beyond the settings source that wrote it; such a rule now applies only within its own source, and a bare ! negation is ignored
  • Fixed the git status Claude is told after a compaction: it is now the current status, not the one from the start of the session
  • Fixed synced plugin MCP servers not connecting when a remote session resumes
  • Fixed resumed headless sessions losing a turn's replies when the model was switched or a request was retried mid-turn
  • Fixed terminal escape codes, line breaks and oversized text from a background task's on-disk record reaching the task list and task notifications when work is resumed
  • Fixed CMYK JPEG images failing to attach with "cannot decode"; they are now converted and resized like other JPEGs
  • Fixed the managed settings approval dialog not naming the collector for a gRPC telemetry endpoint set without a scheme
  • Fixed plugin headersHelper consent prompts showing a URL path that could be misread as a different host
  • Fixed plugin errors showing [redacted URL] in place of a relative Windows path with a folder name that starts with @
  • Fixed missing cursor in the permission-rule, auto-mode-rule, add-directory, session-rename and feedback-review text fields when the terminal's native cursor is enabled
  • Fixed repeated clicks on a /fork receipt, each under a second apart, never backgrounding the session right away while it waited for the current tool to finish
  • Fixed plugin LSP servers that reject shutdown params (e.g. rust-analyzer) being left running at session end; exit is now sent even if shutdown fails
  • Fixed the attribution reminder overriding a CLAUDE.md or memory rule against commit and pull request attribution; lines set by managed settings still apply
  • Fixed prompt suggestions being dropped for text in Japanese, Chinese, Thai and other languages written without spaces between words
  • Fixed synchronized output being assumed from the terminal's name in GNOME Terminal and Konsole versions that do not support it
  • Fixed permission_denials in --output-format stream-json results omitting Read, Edit and Write calls blocked by a path-scoped deny rule
  • Fixed sessions run through the SDK or the desktop app showing an unknown status in other sessions' agent list
  • Fixed /insights failing on Bedrock, Vertex, Foundry, and gateway deployments whose account can't reach the default Opus model by using the session model there instead
  • Fixed organization policy limits not loading for the session when another Claude Code process refreshed the login at the same moment
  • Fixed Claude Desktop sessions using Bedrock, Vertex, or a gateway not getting the contextual "what Claude needs" turn-end notification text
  • Fixed MCP servers reconnecting when an updated config only changed the order of the server URL's query parameters
  • Fixed the prompt box's top border splitting into extra lines when viewing a background agent whose name or description has line breaks or is wider than the terminal
  • Fixed sessions getting permanently stuck on "Prompt is too long" when auto-compaction had no complete earlier exchange to summarize (mostly Agent SDK sessions with very large prompts)
  • Fixed /goal runs silently stalling after API errors, network drops, or token limits: the goal now retries with backoff, or pauses and says why, including until a usage limit resets
  • Fixed prompt cache misses in cloud sessions by waiting briefly for server configuration before the first request
  • Fixed /btw answers that contained made-up tool calls and output: the side question is now told not to write them, and any that appear are flagged as not executed
  • Fixed CLAUDE_CODE_RESUME_INTERRUPTED_TURN re-running a turn that had failed with an API error over 6 hours earlier, or longer ago than CLAUDE_CODE_RESUME_INTERRUPTED_TURN_MAX_AGE_MS when set
  • Fixed organization plugins enabled through managed settings not loading in headless sessions and on Claude Desktop (once Desktop bundles this CLI version); they load from the next session
  • Fixed plugin archives extracted for a session being readable by other local users, extracted files keeping world-writable bits from the archive, and stale files surviving re-extraction
  • Fixed Edit() deny rules and the write-path check not applying to the file a Bash tee command writes; a Bash(tee:*) allow rule no longer covers destinations outside the working directories
  • Fixed stray characters like 22c, or a terminal's color or version reply, being typed into the prompt at startup over slow connections (ssh, browser terminals)
  • Fixed the terminal's block cursor showing under the interface in rxvt-unicode after leaving or re-entering fullscreen
  • Fixed the cursor block staying visible after returning from an external editor in fullscreen mode on rxvt-unicode
  • Fixed the interface being drawn twice after returning from an external editor (Ctrl+G) outside fullscreen mode
  • Fixed the interface being drawn twice in Konsole after returning from an external editor
  • Windows: Fixed PowerShell tool commands sent to the background stopping when Claude Code exits
  • Improved the /diff panel to open fully rendered in one step instead of showing a loading state first
  • Improved prompt suggestion filtering for Japanese, Chinese and Korean text: mixed-script and single-word suggestions are kept, and meta or evaluative text is dropped as it is for English
  • Improved the Skill tool's "Unknown skill" error to name the plugin skill's full name when a bare name matches exactly one plugin skill
  • Improved keyboard support over SSH and in unrecognized terminals: terminals that answer the kitty keyboard query (such as foot and Alacritty 0.16+) now get Shift+Enter and Ctrl+Shift shortcuts
  • Improved responsiveness in long sessions: transcript updates no longer re-process the whole conversation to build the collapsed tool-use summaries
  • Improved first-party sessions with telemetry disabled: an alwaysLoad MCP server that finishes connecting mid-conversation is usable on the next turn without a tool-search round trip
  • Changed /ultrareview --post

…

Thursday, September 10Sep 10, 2026

Release v2.1.268

Claude Code v2.1.268

What's changed Added to the Claude apps gateway: with pricing: set in gateway.yaml, signed-in Claude Code clients receive the same rates through managed settings, so /cost and telemetry match the spend meter Added a startup warning for gateways when…

Read full notes

What's changed

  • Added to the Claude apps gateway: with pricing: set in gateway.yaml, signed-in Claude Code clients receive the same rates through managed settings, so /cost and telemetry match the spend meter
  • Added a startup warning for gateways when access_control.allow_cidrs is empty, and a one-time warning the first time a request arrives from a public address
  • Added the gatewayInternalNetworks managed setting, letting administrators allow /login to a Claude apps gateway on their organization's own public IPv4 block
  • Added claude self-hosted-runner --remove-session-state (default off): delete each session's per-session directories under <base-dir>/_sessions/ when the session ends
  • Added configDirectory to the output of claude auth status --json
  • Added --json to claude plugin install, uninstall, update, enable and disable, and errorDetails/noteDetails to each row of claude plugin list --json
  • Added browser-tab icons for published artifacts, chosen by Claude to match each page
  • Fixed every turn failing with HTTP 400 on third-party Anthropic-compatible endpoints (ANTHROPIC_BASE_URL) since 2.1.265: a regex in the Artifact tool's input schema that those endpoints reject
  • Fixed WebFetch hanging indefinitely on a server that keeps the response open without finishing; a fetch now fails after 300 seconds. Set CLAUDE_CODE_WEBFETCH_DEADLINE_MS to override the deadline (0 turns it off)
  • Fixed a respawned in-process teammate picking up tools or a system prompt from a same-named agent file in a folder you have not trusted
  • Fixed sustained high CPU usage: a busy loop in long-running idle sessions no longer pins a CPU core, and rapid terminal focus reports during a session recap no longer keep the CPU high
  • Fixed Claude sometimes replying "your message came through empty" after an MCP tool call
  • Fixed deny and ask permission rules on symlinked directories (/etc, /tmp, /var on macOS; /bin on Linux) not applying when a path was given by its real location, and Bash commands ignoring deny rules written on a symlinked path spelling
  • Fixed a case where a Read or Edit deny rule did not apply when an env -C, eval or similar command the permission checker cannot analyze was on the same line
  • Fixed plugin and marketplace errors showing a token or password from a git source URL
  • Fixed /mcp and /plugin server details, claude mcp list/get, and MCP login errors showing secrets resolved from ${VAR} placeholders in MCP configs
  • Fixed prompt caching and extended thinking breaking mid-session for SDK sessions using excludeDynamicSections: the first message is no longer re-rendered each request
  • Fixed entitled users being told a model is restricted after restart or in the Desktop Code tab when a cached model-access denial was stale
  • Fixed a running session silently switching to the organization's default model when another Claude Code process refreshed a stale model-access entry
  • Fixed long-context 429s on Fable models showing the usage-credits consent prompt instead of the 1M-context message on Pro and Team plans
  • Fixed workload identity federation via a profile (as claude-code-action configures it): processes sharing the profile could fail mid-run with 401 … jti reused
  • Fixed MCP server OAuth sign-in failing with "No available ports for OAuth redirect" when the local callback port range can't be bound
  • Fixed the conversation summary produced by /compact and auto-compact mangling text that contained $ sequences
  • Fixed resuming a conversation that ended with /compact: its restored-file notes now load in the same order on every resume
  • Fixed SDK prompt suggestions, side questions and /rename sending the conversation from before a compaction
  • Fixed @ file and / command suggestions not appearing after recalling a previous prompt with the up arrow and editing it
  • Fixed claude agents: pressing ← again at a natural pace to go back to the agent list no longer gets ignored until you pause for over a second
  • Fixed claude agents session delete getting stuck when a worktree can't be removed: the message names the cause and next step, and for a git worktree ctrl+x again deletes the directory anyway
  • Fixed background agent and workflow rows in the agents panel expanding to many lines when their text contained line breaks
  • Fixed Claude in Slack sessions losing their Slack tools when org managed settings set an MCP allowlist
  • Fixed Claude in Chrome asking to allow the host "https" when a navigation URL had a scheme but a host that could not be parsed
  • Fixed the spinner wrapping onto several lines when the current task's label is long; the label and the "Next:" task line now stay within one terminal row
  • Fixed the /bug and /feedback description field showing no cursor when the terminal's native cursor is enabled
  • Fixed Remote Control sessions served by claude remote-control showing a generated name instead of their session title in ListAgents
  • Fixed claude plugin validate rejecting plugin paths whose directory name begins with two dots, which the plugin loader accepts
  • Fixed plugins silently skipping a default monitors file or root SKILL.md that could not be checked
  • Fixed WebFetch's error for localhost and other dotless hostnames to explain why the URL is refused and suggest curl
  • Fixed PermissionRequest hooks not firing in --print mode
  • Fixed policy-helper warnings not printing on headless (-p) runs
  • Fixed /resume listing a /fork background session under its parent's name instead of its own ⑂ fork name
  • Fixed /remote-control and other claude.ai-gated commands to suggest /login when signed out instead of showing a Claude for Enterprise migration message
  • Fixed CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS not extending SessionEnd hooks that have no per-hook timeout (they were still cancelled after 1.5 seconds)
  • Fixed /autofix-pr and other cloud-session commands saying to retry or install the Claude GitHub App when no GitHub account is connected; they now point to /web-setup or the web connect page
  • Fixed cloud-session commands such as /teleport and /remote-env to explain when an organization policy turns them off, instead of answering "Unknown command"
  • Fixed Bash sandbox instructions over-stating confinement: no unenforced path lists when filesystem isolation is off, and strict mode no longer claims commands can never run unsandboxed
  • Improved fullscreen mode: adding or removing a prompt line (Shift+Enter) now repaints as fast as typing a character instead of re-rendering the visible transcript
  • Improved --continue / --resume: the conversation appears immediately instead of waiting for SessionStart hooks, and the first message no longer re-reads the whole transcript
  • Improved responsiveness during tool-heavy turns by no longer redrawing the transcript for a hidden per-tool-batch reminder
  • Improved startup time in projects with .claude/workflows/ scripts: listing them no longer parses each script
  • Improved auto mode denials: the message Claude receives now names the rule that blocked the action and asks Claude to try a safer method and finish unrelated work before stopping to ask you
  • Improved Claude in Chrome: long page reads now stay inline instead of being saved to a file and read back
  • Improved the MEMORY.md truncation warning to say how many lines were cut and where the cut starts
  • Improved the terminal permission prompt for artifacts: it now leads with the ask's question
  • Improved the prompt footer: an editor or /diff selection now shows inside the prompt input, and fullscreen mode shows Remote Control status in the header instead of the footer
  • Improved the "Usage credits required for 1M context" message to say that usage credits turned on mid-session take effect after restarting Claude Code

…

Wednesday, September 9Sep 9, 2026

Release v2.1.267

Claude Code v2.1.267

What's changed Added maxEffortLevel setting (top-level or per model under modelSettings): caps the effort level on every provider, including Bedrock, Vertex and Foundry; users can still pick a lower level Added --system-prompt-snapshot off to render the system…

Read full notes

What's changed

  • Added maxEffortLevel setting (top-level or per model under modelSettings): caps the effort level on every provider, including Bedrock, Vertex and Foundry; users can still pick a lower level
  • Added --system-prompt-snapshot off to render the system prompt fresh on every request instead of reusing the conversation's recorded prompt (for iterating on prompt text)
  • Fixed Cowork scheduled tasks in the cloud failing at startup for organizations whose managed settings require sandboxing
  • Fixed /context and other local command output rendering blank on mobile clients
  • Fixed shift+enter and option+backspace not working after reconnecting to a tmux or ssh session inside an agent view
  • Fixed the dim last-prompt header not appearing at the top of the conversation when scrolling up in fullscreen mode
  • Fixed Workflow agent() calls with large output schemas being refused in auto mode instead of being checked by the safety classifier
  • Fixed a case where a marketplace entry path containing a backslash could bypass the containment check for fetched marketplaces on macOS and Linux
  • Fixed expired AWS or Google Cloud credentials under a host app such as Claude Desktop retrying ten times with a generic "request failed" before the re-authenticate error appeared
  • Fixed resuming a session after /compact or another slash command ran via -p --resume: a spurious "Continue from where you left off." turn is no longer inserted
  • Fixed resuming a large session (transcript over 5 MB): parallel tool calls and their hook output are no longer dropped from the reloaded conversation
  • Fixed managed allowedHttpHookUrls, httpHookAllowedEnvVars and allowedChannelPlugins to admit nothing, not everything, when unreadable
  • Fixed /login on machines whose managed settings require Claude apps gateway sign-in: Esc now closes the dialog instead of doing nothing
  • Fixed artifact publishes cut off by a dropped connection mid-upload: they now retry once when Claude Code can tell the upload never completed, instead of reporting an unknown outcome
  • Fixed effort: frontmatter on custom commands, skills, and subagents being ignored on models whose default effort is still pinned (Opus 4.7, Opus 4.8, Fable 5)
  • Fixed artifact publish failing with an unhelpful error when the page file isn't valid UTF-8 or contains a replacement character (U+FFFD); the error now names the line and column to fix
  • Fixed claude agents @ directory menu not listing repositories created after the session started
  • Fixed Remote Control clients that join a Claude Desktop or VS Code session showing a stale permission mode until it was changed again
  • Fixed claude remote-control exiting and dropping every attached session when its server credential expires (about 30 days after start); the host now re-registers and keeps going
  • Fixed the usage-limit warning flickering on and off during a session when requests for different models or modes report different limit windows
  • Fixed earlier reasoning being dropped when an MCP server re-sends, or a built-in tool re-renders, a tool the model already loaded
  • Fixed a tool that disappears mid-conversation, from a disconnected MCP server or an upgrade, rewriting the tool list and discarding earlier thinking
  • Fixed a background worker forked from a conversation adding EnterWorktree to the conversation's tool block mid-session, which broke prompt-cache reuse
  • Fixed mid-session MCP and plugin tools being added to the tool list in sessions without ToolSearch, which broke prompt-cache reuse; supported models now receive them as deferred definitions
  • Fixed switching models with /model re-sending every tool definition (a prompt-cache miss); commit and PR attribution text now arrives as a conversation note that updates on model changes
  • Fixed resumed sessions rewriting the inline tool set when an MCP connector reconnects at a different moment than before
  • Fixed resumed sessions re-rendering tool descriptions instead of replaying the recorded ones when the first turn ran a tool
  • Fixed prompt-cache misses and dropped extended thinking when a claude.ai connector's tools change between a session and its resume
  • Fixed resumed sessions rewriting earlier MCP tool announcements (and dropping extended thinking) before their connectors reconnect
  • Fixed a prompt-cache break when a print-mode (-p) conversation is resumed interactively: the system prompt prefix no longer changes
  • Improved the /diff panel: it no longer flashes "0 files changed" and a spinner before settling, and its empty state is centered in the panel
  • Improved the Bash tool's description guidance so Claude describes what a command does in plain words instead of echoing the command
  • Improved sandbox guidance so Claude suggests /copy when clipboard commands such as pbcopy fail inside the sandbox
  • Improved --resume first-render time for sessions with many Bash tool calls
  • Improved prompt input responsiveness: keystrokes no longer occasionally wait a frame behind spinner or streaming repaints
  • Improved prompt-cache stability: subagents and sessions started with --system-prompt or --append-system-prompt now record the system prompt and tool definitions once instead of re-rendering them
  • Improved Artifact tool publish errors: when a publish is refused, the message now says why and what to do about it
  • Self-hosted runner: Changed --use-anthropic-git-proxy to be reported to the server at registration and to print a warning for each session that still clones through the legacy git proxy
  • Gateway: Changed forward_user_identity upstreams to return a 429 as-is to a developer whose email was forwarded, instead of failing over to the next upstream, so the proxy's per-user limits hold
  • [VSCode] Fixed the extension host hanging at 100% CPU when forking, editing an earlier message, or rewinding in a conversation whose saved transcript contains a cyclic parent link
  • [VSCode] Fixed pasting a screenshot on WSL2/WSLg inserting raw image bytes into the chat input; the image is now attached when the clipboard provides it, otherwise the paste is ignored
  • [VSCode] Fixed chat diff blocks always rendering with a dark editor theme; they now follow the active VS Code color theme, including high contrast
  • [VSCode] Fixed mixed right-to-left and English text rendering in the wrong order while typing in the message input
  • [VSCode] Fixed accepting an edit in the diff view on a file with Windows (CRLF) line endings failing with "String not found in file"
  • [VSCode] Fixed @-mentions dropping files whose paths contain spaces
  • [VSCode] Fixed the sessions list view failing to load in windows connected over Remote-SSH when the workspace folder exists only on the remote host
  • [VSCode] Fixed runaway ripgrep processes when viewing files in large or symlink-heavy workspaces
  • [Claude Code on the web] Fixed GitHub Enterprise Server sessions showing your GitHub account as disconnected once its token expired; PR and issue operations now refresh it automatically
  • [Claude Code on the web] Fixed gh and GitHub API calls failing in organizations without the Claude GitHub App; they now use your connected GitHub account and say so when none is connected
  • [Claude Tag] Added a "Use a custom connector" link to the preset connection forms in Claude Tag admin settings, so you can switch to a custom connection without starting over
  • [Claude Tag] Fixed Claude replying "The API rejected the request as invalid" when the organization has run out of usage credits; the reply now says so and explains how to add more
  • [Claude Tag] Fixed thread requests to edit or delete a message Claude posted at the channel's top level being answered with a correction instead of reaching the session that posted it
  • [Claude Tag] Fixed Connect on Tool access requests under Admin settings > Review requests failing with "Authorization failed" or showing the requested access bundle as deleted

Tuesday, September 8Sep 8, 2026

Release v2.1.266

Claude Code v2.1.266

What's changed Fixed a 2.1.265 regression affecting LLM-gateway and proxy setups: the undocumented CLAUDE_CODE_USE_GATEWAY environment variable, previously ignored unless ANTHROPIC_BASE_URL and ANTHROPIC_AUTH_TOKEN were both set, began forcing Cloud-gateway…

Read full notes

What's changed

  • Fixed a 2.1.265 regression affecting LLM-gateway and proxy setups: the undocumented CLAUDE_CODE_USE_GATEWAY environment variable, previously ignored unless ANTHROPIC_BASE_URL and ANTHROPIC_AUTH_TOKEN were both set, began forcing Cloud-gateway sign-in on its own in 2.1.265, so configurations that set it alongside an API key, apiKeyHelper, or custom auth headers failed every request with "Not signed in to the Cloud gateway". The variable on its own is ignored again; no configuration change is needed
Release v2.1.265

Claude Code v2.1.265

What's changed Added user.email and user.groups to the telemetry Claude Desktop and Cowork send through a Claude apps gateway, matching terminal sessions Added support for pointing --plugin-dir at a folder of plugins: each child folder with a manifest loads,…

Read full notes

What's changed

  • Added user.email and user.groups to the telemetry Claude Desktop and Cowork send through a Claude apps gateway, matching terminal sessions
  • Added support for pointing --plugin-dir at a folder of plugins: each child folder with a manifest loads, and children added or removed while running are picked up
  • Added a 1 GB cap on tool results saved to disk; the in-conversation preview says when a saved file was truncated
  • Fixed resuming a foreground-spawned subagent changing its tool list and system prompt prefix, which broke prompt-cache reuse for that agent
  • Fixed agent teammates and resumed subagents moving SubagentStart hook context and preloaded skills out of the prompt prefix on later turns, which broke prompt-cache reuse
  • Fixed resume after the previous process died while a tool was running: the last prompt is no longer rewritten, and the interrupted tool call is kept and marked interrupted
  • Fixed /model opusplan[1m] being rejected with "Model not found"
  • Fixed syntax-highlighted code in permission prompts and messages sometimes omitting a character after a Ruby ?, Erlang $, or Perl $ sigil
  • Fixed the fullscreen transcript jumping by one row whenever the slash-command or @-file suggestion list opened or closed
  • Fixed a plugin path containing a backslash bypassing the symlink containment check on macOS and Linux
  • Fixed plugin directories whose names begin with two dots being wrongly refused as outside the plugin root
  • Fixed VS Code and SDK sessions occasionally requiring re-login when a session was closed while refreshing its token
  • Fixed Remote Control sessions sending the end-of-turn signal before the reply's last message, which could show a reply as finished in the Claude app before its last part arrived
  • Fixed background (--bg) sessions occasionally being retired mid-turn when a message arrived just before the idle timeout
  • Fixed Claude Code's own git status and diff probes running clean filters configured by a nested repository inside the working tree
  • Fixed the advisor tool and its instructions being re-decided per request from the request's model; the decision is now made once and announced in the conversation when it changes
  • Fixed artifact publish accepting connector tool names the connector doesn't expose; the publish is now refused when none of the declared tools exist, and warned when only some don't
  • Fixed /add-dir <subdirectory> refusing to load a subdirectory's agents when managed settings lock only skills to plugins, and promising agents when only agents are locked
  • Fixed two-key keyboard shortcuts cancelling silently when the second key arrived more than a second later, as happens inside tmux; they now wait 3 seconds and show a notice when they time out
  • Fixed forked skills (context: fork) not streaming their kickoff prompt and, with --forward-subagent-text, their text turns as progress events in stream-json
  • Fixed a plugin's default component folder that the OS cannot check, such as a symlink loop, being silently skipped; it is now reported in /plugin with the error code
  • Fixed the Claude apps gateway's OTLP telemetry relay pausing all forwarding to a collector for 30 seconds after it rejected a few payloads as malformed or too large
  • Fixed /plugin Discover/Browse and claude plugin list --json --available showing no description or display name for marketplace plugins whose metadata lives only in their plugin.json
  • Fixed /login showing "no gateway URL is configured" when re-run in a session that signed in to a Claude apps gateway set by managed settings
  • Fixed /model claiming a model was "saved as your default" when the settings file couldn't be written; it now says the save failed and why
  • Fixed /clear from Remote Control waiting on SessionStart hooks and on open terminal dialogs before completing
  • Fixed the /config dialog changing height when switching between its tabs
  • Fixed resuming a workflow run after its container restarted; a resume whose run journal is missing now fails with a clear error instead of rerunning every agent
  • Fixed the claude-api skill's error-code reference: model access failures return 404 and unavailable beta headers return 400, not 403
  • Fixed non-interactive sessions (-p with stream-json input, Agent SDK, cloud sessions) resetting the shell working directory at each new user message; a cd now persists across turns
  • Fixed MCP servers configured as http that only speak the legacy HTTP+SSE transport never connecting; Claude Code now falls back to SSE as the MCP spec describes
  • Fixed some claude.ai connectors in cloud sessions showing as needing authentication even though they are connected in claude.ai (servers that answer an unsupported request with HTTP 401)
  • Fixed remote sessions keeping their sandbox container alive while a connector approval or sign-in link waits for you
  • Fixed resumed sessions showing long model-facing recovery instructions in "background task didn't finish" notices instead of a short status line
  • Windows: Fixed Read, Write and Edit refusing every file ("symlink resolution changed after permission was checked") when running inside an AppContainer or restricted-token sandbox
  • Improved --worktree startup on large repositories: the new worktree is now checked out in parallel (git 2.32+)
  • Improved /workflows agent detail: tool calls are marked running, failed or done, the subagent's task list is shown when it has one, and Enter unfolds the listed calls with their inputs and results
  • Improved slash commands typed mid-prompt: matches now show in a list (Tab opens it outside fullscreen) instead of a single suggestion, and a plugin skill is now found by its bare name
  • Improved remote MCP servers that need sign-in: Claude Code no longer registers an OAuth client with them until you actually authenticate
  • Improved the time to resume long sessions that read many files
  • Improved the error shown when an image over the size limits cannot be decoded: it now names the cause and how to fix it instead of only citing the limit
  • Improved the Artifact tool's read of an artifact someone else wrote: the summary now treats the page as untrusted content and flags embedded instructions rather than relaying them
  • Updated the .claude folder permission option to say what it actually allows: editing files in the project's .claude folder (or ~/.claude) for the session
  • Changed machines with forceLoginGatewayUrl in managed settings to be Claude apps gateway sessions from startup, like forceLoginMethod: "gateway"; a leftover claude.ai login or API key is not used
  • Changed image processing to use the runtime's built-in image support; the CLI no longer extracts a native image module to the temp directory
  • Changed plugin display metadata to prefer the marketplace entry over plugin.json on the Installed tab and claude plugin details, filling gaps from plugin.json
  • Changed Claude apps gateway sessions to export OpenTelemetry directly to a collector the gateway's managed settings name in OTEL_EXPORTER_OTLP_ENDPOINT, instead of through the gateway's relay; sessions without a named collector still use the relay
  • [VSCode] Added automatic archiving of sessions inactive for a set period (new "Archive inactive sessions" setting, default 14 days)
  • [VSCode] Fixed the sidebar chat coming back blank after Reload Window or a restart when the conversation had been open for more than 10 minutes
  • [VSCode] Fixed the timeline dot sitting below the text on the "Remote Control is active" message

Sunday, September 6Sep 6, 2026

Release v2.1.263

Claude Code v2.1.263

What's changed Bug fixes and reliability improvements

Read full notes

What's changed

  • Bug fixes and reliability improvements

Friday, September 4Sep 4, 2026

Release v2.1.261

Claude Code v2.1.261

What's changed Added an "Organization policy" line to /status and claude doctor that says why your organization's policy could not be loaded, such as a proxy not passing the endpoint through Added bashOutputMaxChars and taskOutputMaxChars settings to raise how…

Read full notes

What's changed

  • Added an "Organization policy" line to /status and claude doctor that says why your organization's policy could not be loaded, such as a proxy not passing the endpoint through
  • Added bashOutputMaxChars and taskOutputMaxChars settings to raise how much command and background-task output Claude receives inline before it is saved to a file, up to 128K characters
  • Added --append-subagent-system-prompt-file to read the subagent system prompt from a file, for prompts too large to pass on the command line
  • Added /skill-doctor to show which loaded skills go unused and what they cost in context, so you can prune them
  • Fixed typed or pasted characters occasionally landing out of order or being dropped during fast input or key repeat
  • Fixed /add-dir <subdirectory> printing a false "couldn't be resolved" error when the working directory is on a /net automount
  • Fixed the Bedrock setup wizard hanging when AWS or an AWS credential helper never responds (it now times out with a clear error), and its model checks failing behind a TLS-inspecting proxy
  • Fixed cloud sessions discarding a plugin synced from claude.ai when managed settings force-enable it in enabledPlugins, then falling back to a marketplace clone that could fail
  • Fixed being unable to delete the character immediately before an inline [Image #N] chip in the prompt input
  • Fixed resuming a session losing hook output and other context around parallel tool calls, which changed the resumed request
  • Fixed Remote Control showing a stale permission mode when a phone, browser, or claude.ai app attaches to a terminal session or after the mode changes in the terminal
  • Fixed Remote Control sessions showing as still working (stuck spinner and Stop button) after stopping a turn from a connected phone or browser, or after a local slash command like /clear
  • Fixed SDK and cloud sessions ignoring a Stop or interrupt sent just after the first prompt, before the turn had started; the turn now stops instead of running to completion
  • Fixed Remote Control uploading a session pulled with /teleport into the connected session, which appeared appended to the original on phone and web
  • Fixed Remote Control's inbound event stream failing behind TLS-inspecting corporate proxies on native Windows
  • Fixed Remote Control sessions showing the default effort level on claude.ai when the effort comes from settings
  • Fixed gcpAuthRefresh opening a browser at startup when the Google credential check was slow, even though the credential was still valid
  • Fixed claude.ai connectors staying absent for the whole session when the startup connector fetch timed out — the CLI now retries in the background
  • Fixed sustained high CPU usage when a background agent could not be resumed and its wake-up was retried in a tight loop
  • Fixed feature flags gated to a newer version occasionally applying to an older Claude Code version running on the same machine
  • Fixed /usage and the VS Code usage panel dropping a model-specific weekly limit row when the usage endpoint is rate limited or when opened right after startup
  • Fixed claude -p --resume <file> adopting a malformed session ID recorded in the transcript; it now resumes under a fresh session ID instead
  • Fixed the terminal progress indicator (iTerm2, Ghostty, ConEmu) showing the session as finished while a background workflow or agent was still running
  • Fixed a rare layout glitch where a box could render with the wrong height after its container switched between row and column direction
  • Fixed Claude apps gateway client IP when a trusted proxy appends a port to X-Forwarded-For; with an access list set, an unreadable entry now gets 403
  • Fixed Claude apps gateway telling Claude Desktop to export OpenTelemetry as JSON even when the terminal CLI uses protobuf, so protobuf-only collectors rejected Desktop's data
  • Fixed Desktop and web showing a session as busy while it only watches an artifact for updates
  • Fixed Claude in Chrome file_upload failing with "paths: expected array, received undefined" in local Cowork sessions run from the Claude Desktop app
  • Fixed SendMessage to an offline Remote Control session on another machine reading as delivered; the result now says delivery is queued until that machine reconnects
  • Fixed plugin install hints from CLIs run in background Bash commands: they are now detected, and the raw <claude-code-hint> tag no longer leaks into the conversation
  • Fixed in-process agent-team teammates re-sending their first-turn tool and skill announcements on the second turn, which changed the request prefix and missed the prompt cache
  • Improved the /model picker and the VS Code model pill to show a model's name instead of its raw Bedrock, Vertex AI, or LLM gateway ID when Claude Code recognizes it
  • Improved startup on Google Vertex AI when GOOGLE_APPLICATION_CREDENTIALS is set: API client creation no longer re-runs Google Cloud project discovery or spawns extra gcloud processes
  • Improved streaming performance: already-rendered blocks are no longer re-checked by layout on each update
  • Improved the dangerous-rm safety prompt to also catch rm -rf on positional parameters and inside double-quoted sh -c scripts
  • Improved handling when the API sends no response headers: the retry now waits up to API_TIMEOUT_MS (10 minutes by default) instead of another 3 minutes, and the messages say what to change
  • Changed a Claude apps gateway 403 on the managed settings load (at startup or after /login) to say Claude Code may not be enabled for the organization, instead of advising a new sign-in
  • Changed machines whose managed settings pin forceLoginMethod: "gateway" to ignore a leftover API key or claude.ai login and ask for /login; Bedrock, Vertex AI, and Foundry sessions are unaffected
  • Changed auto mode to treat a link that packs content into a public diagram renderer's URL as an upload to that site: no longer auto-approved unless you asked for it
  • Changed the prompt's word-editing keys to match Bash: Ctrl+W deletes back to whitespace, Alt+F and Alt+D stop at word end, punctuation separates words; keybindingFlavor no longer has any effect
  • Changed /context token counting to use a local estimate when the token-counting API is unavailable, instead of extra small-model requests
  • [VSCode] Added a "Build a custom style" walkthrough to the Output styles menu that writes a custom output style file and lists it right away
  • [VSCode] Added an Add server form and a Remove action to the MCP servers dialog, so MCP servers can be added and removed without leaving the IDE
  • [VSCode] Added a hollow ring in the session list for sessions open in a terminal, another VS Code window, or Claude Desktop, so they no longer look closed
  • [VSCode] Added a fold button to permission and question prompts so the conversation behind them can be read without dismissing them; the space beside the prompt now scrolls the conversation
  • [VSCode] Added "Archive session" to the session list's right-click menu and gave Unarchive its own icon
  • [VSCode] Fixed a session teleported from Claude Code on the web treating a question that was cut off when the cloud session shut down as declined
  • [VSCode] Fixed the session tab's Rename box opening empty for a tab restored with the window; it now starts with the current name
  • [VSCode] Fixed collapsed sections in the session list panel briefly showing expanded each time the panel loaded
  • [VSCode] Fixed Focus view showing a tool call as still running after Claude had moved on, such as while a question waited for your answer
  • [VSCode] Fixed the session list's active-row highlight going stale when an unfocused Claude tab's session ID is corrected
  • [VSCode] Fixed Cmd/Ctrl+Shift+T reopen and deep-link opens placing the Claude tab outside the Claude editor group when a Claude tab has focus
  • [VSCode] Fixed the session tab's "Add to group" putting a session opened from Claude Code on the Web in two groups; it now moves the entry the session list shows
  • [VSCode] Fixed the model picker showing models an organization has since disabled until the window was reloaded twice

…

Thursday, September 3Sep 3, 2026

Release v2.1.260

Claude Code v2.1.260

What's changed Added a diff panel that opens beside the conversation in fullscreen mode and shows your uncommitted changes as Claude edits; toggle it with /diff Added a likely cause for prompt-cache misses (e.g. tool definitions or system prompt changed, idle…

Read full notes

What's changed

  • Added a diff panel that opens beside the conversation in fullscreen mode and shows your uncommitted changes as Claude edits; toggle it with /diff
  • Added a likely cause for prompt-cache misses (e.g. tool definitions or system prompt changed, idle past the TTL) to /cost and the status line's prompt_cache field
  • Added /reload-plugins to headless sessions, so it appears in the Claude Code Desktop and SDK command lists
  • Added a text form of /advisor (/advisor, /advisor <model>, /advisor off) for the desktop app, Remote Control, and other headless (-p/Agent SDK) sessions
  • Added oidc.scope_on_refresh to the Claude apps gateway for IdPs that return an id_token on refresh only when asked for openid again
  • Added Claude apps gateway support for newer Claude Desktop keys in desktop policy blocks, including userPluginMarketplacesEnabled and userPluginUploadsEnabled
  • Fixed Edit/Write/Read permission rules whose path contains parentheses being dropped as invalid or ignored by the Bash sandbox, which left "read-only" folders writable
  • Fixed one file permission rule with an uncompilable pattern (e.g. an unclosed [) making every file edit fail with Invalid regular expression; such a deny rule now guards the literal path it spells
  • Fixed Bash permission checks auto-approving zsh commands that hide a command substitution in a REPORTTIME, REPORTMEMORY or DIRSTACKSIZE assignment; these now prompt for approval
  • Fixed Bedrock model discovery, token counting and AWS SSO/STS credential calls failing with "unable to get local issuer certificate" when the corporate root CA is only in the OS certificate store
  • Fixed permissions.blockReadsOutsideWorkingDirectories on macOS hiding the user's git config from sandboxed git and hiding a worktree-isolated sub-agent's own checkout
  • Fixed managed settings not loading for claude.ai Enterprise/Team users who also had a leftover API key from an earlier /login
  • Fixed /status listing a signed-in claude.ai account and a configured API key as if both were in effect; the credential not in use is now marked
  • Fixed managed skillOverrides entries keyed on a bundled skill's alias (e.g. checkup for /doctor) not applying, and Skill(name) deny rules not covering a nested skill listed as <dir>:name
  • Fixed model: fable agents ignoring the [1m] tag on an ANTHROPIC_DEFAULT_FABLE_MODEL pin and silently running with a 200K context window
  • Fixed the /model picker not showing Fable 5.1 for organizations that can use it, which was only accepted when typed as /model claude-fable-5-1
  • Fixed prompt caching on Claude Fable 5.1 not covering the context attached after tool results, so it was re-sent as uncached input on every tool-call turn
  • Fixed model switching staying blocked for the rest of the session after a plugin hook load failure; each switch now re-checks and the refusal names the cause
  • Fixed model switching being blocked for the session when an organization-managed plugin's marketplace could not be loaded
  • Fixed SDK-provided MCP servers (e.g. Desktop connectors) sometimes missing from the first turn and only appearing on the next one
  • Fixed Claude in Chrome tools failing with "Not connected" mid-task in cloud-hosted claude.ai sessions when a connector was added or removed
  • Fixed flags, joined emoji and accented letters splitting across wrapped lines, and stale text staying on screen when a flag or joined emoji falls in the terminal's last two columns (now shown as …)
  • Fixed Remote Control accepting a model pick that is not a valid model name; it is now refused with an error instead of failing on the next message
  • Fixed /rewind and --rewind-files reporting success when checkpoint backup files were missing and nothing was actually restored
  • Fixed /rewind leaving stale file-read tracking from the rewound-away turns, which caused "File unchanged since last read" stubs and full-file re-injection after external edits
  • Fixed -p --resume/--continue (as used by the desktop app) failing on every retry once a session's worktree directory lost its git metadata; it now fails once, then resumes without the worktree
  • Fixed a subagent that resumed another agent via SendMessage never being woken by that agent's completion (the notification went to the main conversation instead)
  • Fixed agent teams: an in-process teammate's transcript losing messages, or going blank, during long API retry waits (e.g. under CLAUDE_CODE_RETRY_WATCHDOG) as retry notices evicted real messages
  • Fixed a session that moved to the background appearing twice in ListAgents (once as a phantom "interactive" twin with the same name) and receiving SendMessage deliveries in the viewer
  • Fixed intermittent "task output swap refused" errors when many sessions share a project directory
  • Fixed Ctrl+Z in fullscreen leaving the shell on the alternate screen, drawn over the paused interface
  • Fixed Workflow tool subagents being restarted as stalled while a long context compaction was still in progress
  • Fixed plugins from a URL marketplace failing to install with "marketplace entry path does not stay inside the marketplace directory" when a host app (e.g. Claude Desktop) stores it as a directory
  • Fixed an extra browser tab opening when an artifact is published in a session you're driving from claude.ai, the desktop app, or mobile (Remote Control)
  • Fixed the Artifact tool's first call failing with an "Invalid tool parameters" validation error in some Cowork sessions
  • Fixed IDE line selections being dropped when running a skill or slash command (the "N lines selected" context now reaches Claude)
  • Fixed repository detection for GitLab projects in nested subgroups (e.g. gitlab.com/group/subgroup/project)
  • Fixed owner/repo#123 issue references in rendered output linking to github.com when working in a GitLab repository; they now link to the gitlab.com issue
  • Glob/Grep: Fixed the search path being probed on disk before the permission check; a missing path is now reported after permission is decided, as Read does
  • Reverted the 2.1.259 change applying Read() deny rules to Bash arguments; it denied npm run build under a Read(./**/build/**) rule in every mode and made cd … && grep prompt even in auto mode
  • Improved structured output: Workflow agent({schema}) rejects a JSON Schema that can never be satisfied up front, and retry-cap errors now include the last validation failure
  • Improved deleting a background session whose worktree has unpushed commits: the message now names the branch and commit count, and deleting again discards the worktree
  • Improved the Claude apps gateway's refresh-failure log to name the step that failed
  • Improved idle CPU usage of non-interactive (-p / SDK) sessions
  • Improved the Claude apps gateway on Amazon Bedrock: input tokens for an aborted request are now counted with AWS's free CountTokens API (grant bedrock:CountTokens) instead of a one-token request
  • Improved the settings error for rules such as Edit(C:\dir\(name)\**), where \( is read as an escaped parenthesis rather than a path separator, to suggest an unambiguous spelling
  • Improved auto-compact for 1M-context models: Opus and Fable sessions now compact shortly before the 1M-token limit, and recovery compaction on very large contexts no longer times out at 10 minutes
  • Improved /ultrareview and claude ultrareview to wait up to 45 minutes (previously 30) for long-running cloud reviews
  • Improved /effort on Claude Fable 5.1 so changing effort mid-session no longer invalidates the prompt cache
  • Updated the bundled claude-api skill so its Go, Java, and C# samples use current-generation model IDs, and clarified that cheaper worker or sub-agent models should be current-generation too
  • Changed ctrl+l / cmd+k in fullscreen mode to clear the transcript view like a terminal clear; scroll up to see earlier messages

…

Wednesday, September 2Sep 2, 2026

Release v2.1.259

Claude Code v2.1.259

What's changed Added managedMcpServers managed setting: organizations can provide HTTP/SSE MCP servers to every user (same entry shape as .mcp.json); entries that name a command to run are skipped Added --permission-prompts none for unattended headless hosts:…

Read full notes

What's changed

  • Added managedMcpServers managed setting: organizations can provide HTTP/SSE MCP servers to every user (same entry shape as .mcp.json); entries that name a command to run are skipped
  • Added --permission-prompts none for unattended headless hosts: anything that would prompt is denied automatically while the active permission mode (including auto mode) keeps deciding
  • Added recognition of glab mr create/merge/close/reopen/note/update so GitLab merge requests show as MR !N in the collapsed tool summary and refresh the footer MR badge
  • Added --json to claude plugin validate for a machine-readable validation report
  • Fixed concurrent sessions silently reverting each other's ~/.claude.json changes — workspace trust no longer resets and MCP/project state is no longer lost when running many sessions at once
  • Fixed a conversation whose thinking was rejected once being rejected again on every later turn
  • Fixed Bash Read() deny rules not covering files given as option values (--ignore-revs-file=.env, -f.env, @file), git diff/git grep file operands, or cd DIR && cat FILE compounds; grep -r/cp -r over a directory holding a denied file now asks
  • Fixed the prompt cache being invalidated when the OAuth token refreshed in sessions with telemetry disabled
  • Fixed fullscreen mode showing a blank conversation after a long turn with hundreds of tool calls
  • Fixed auto mode running a turn on a model it doesn't support when a command or skill's frontmatter model: named one; the turn now keeps the session model
  • Fixed CLAUDE_CODE_MAX_CONTEXT_TOKENS being ignored for Vertex-style model IDs (@YYYYMMDD suffix) of model versions Claude Code doesn't recognize
  • Fixed the live output preview of a running shell command hiding its newest lines when an earlier line wrapped
  • Fixed a background GitHub connection check that ran on every launch for claude.ai users; the result is now remembered across launches
  • Fixed --resume failing (and --continue opening an empty conversation) when a saved session contains an attachment entry with no payload
  • Fixed frontmatter model: on custom commands and skills being ignored in interactive sessions
  • Fixed Artifact publishing failing once with an "unexpected parameter note" error in conversations continued from an older version
  • Fixed managed forceRemoteSettingsRefresh being ignored at startup when a policy helper configured by MDM or the managed settings file had already run
  • Fixed worktree isolation refusing hook-created worktrees on machines where git rev-parse fails with a message other than "not a git repository"
  • Fixed OpenTelemetry metrics and events from cloud sessions missing the user.email, organization.id, and user.account_uuid attributes
  • Fixed MCP servers that disconnect while their tools are being listed at startup showing as connected with no tools instead of reporting the error
  • Fixed the file edit permission dialog sometimes showing a changed line cut short with no indication
  • Fixed repository detection dropping a known repo identity after a transient git probe failure
  • Fixed managed settings silently going unenforced when the managed-settings file, a drop-in, the MDM plist, or the HKLM value cannot be parsed: Claude Code now refuses to start and names the source
  • Fixed Stop not actually stopping background agents and workflows in remote-control sessions: killed tasks now stay visible and re-stoppable until their processes exit
  • Fixed resuming a workflow run while its previous stopped run was still exiting, which could run duplicate copies of its agents
  • Fixed marketplace repo URLs on github.com with a trailing slash or dangling ?/# producing an unusable .git clone URL
  • Fixed blocking Stop hooks causing the turn after a block to lose the model's reasoning from that turn and, on some models, miss the prompt cache
  • Fixed remote (claude.ai) sessions taking 60 seconds to start a turn after a browser-hosted MCP server's page had gone away
  • Fixed worktree-isolated sessions refusing common Bash loops, xargs pipelines and launcher-wrapped commands that cannot reach the main checkout
  • Improved terminal resize and first-render performance for long responses by reusing text measurements
  • Improved /workflows agent detail: JSON outcomes are pretty-printed with syntax colors and real line breaks, and long outcomes fold behind an expand toggle
  • Improved headless/SDK session start: the first turn begins up to 50 ms sooner when MCP servers finish connecting
  • Improved /install-github-app to explain it is GitHub-only and point to the GitLab CI/CD docs when run inside a GitLab repository
  • Improved nested background subagent results to be saved in the parent subagent's transcript, so resumed subagents keep them and shared transcripts show the delivery
  • Changed allowedMcpServers to govern only servers users add: a literal managed-mcp.json server your allowlist used to filter out now loads on upgrade; use deniedMcpServers to keep it off
  • [VSCode] Added an Active quick filter and a status filter menu (Needs input, Working, Completed) to the session list sidebar
  • Fixed remote and scheduled sessions doing nothing after a connector-tool permission prompt was approved while the session was paused