Claude Code 2.1.243: /usage Loops 分项与 promptCacheTtl 落地
- ID: b66aa84c
- 原文链接: https://raw.githubusercontent.com/anthropics/claude-code/main/CHANGELOG.md
- 作者: Anthropic
- 日期: 2026-08-24
- 分类: coding
- 来源类型: article
- 标签: claude-code, changelog, prompt-caching, devtools
- 质量评分: 4/5
- 抓取时间: 2026-08-25T15:40:00+00:00
中文导读
Claude Code 2.1.243(npm 2026-08-24T23:10:45Z)在连续空 bugfix body 之后放出可引用的计费/缓存 bullet:/usage 增加 Loops 分项(per-loop run count / total tokens / tokens per run / last run,哪个 /loop 在刷、单次均量是否异常一目了然);新增 promptCacheTtl 与 subagentPromptCacheTtl 设置,API-key/cloud-provider 用户主会话可保 1 小时 prompt cache 而 subagent 保持 5 分钒;modelPricing 托管设置让组织合同价与折扣进 /cost、status line 与 telemetry;/tasks 显示每个 subagent 的 model + effort。同版还修了远程 MCP 服务器断连后不恢复、API 无响应时会话沉默 10+ 分钟(现在 ~3 分钟超时 + 重试一次)等长尾疼点。订阅侧仍约 1h cache 墙 + 离开前 compact。
为什么值得关注
Claude Code 2.1.243(npm 2026-08-24T23:10:45Z)在连续空 bugfix body 之后放出可引用的计费/缓存 bullet:/usage 增加 Loops 分项(per-loop run count / total tokens / tokens per run / last run,哪个 /loop 在刷、单次均量是否异常一目了然);新增 promptCacheTtl 与 subagentPromptCacheTtl 设置,API-key/cloud-provider 用户主会话可保 1 小时 prompt cache 而 subagent 保持 5 分钒;modelPricing 托管设置让组织合同价与折扣进 /cost、status line 与 telemetry;/tasks 显示每个 subagent 的 model + effort。
关键信息
- 标题:Claude Code 2.1.243: /usage Loops 分项与 promptCacheTtl 落地
- 作者:Anthropic
- 链接:https://raw.githubusercontent.com/anthropics/claude-code/main/CHANGELOG.md
- 日期:2026-08-24
Obsidian Notes
- 正文由 opencli web read 抓取(参考当日 ClawFeed 24h / AK-RSS / 调研摘要),本页为元数据 + 摘要式存档。
原文存档(摘要)
Changelog
2.1.245
- Fixed a crash on startup on Linux distributions that ship glibc 2.44 (for example Arch Linux, CachyOS and Fedora Rawhide)
2.1.243
- Added a Loops breakdown to
/usage: per-loop run count, total tokens, tokens per run, and last run, so runaway or chatty/looptasks are easy to spot - Added
modelPickersetting: curate the/modelpicker with an ordered, labeled list of models (any id spelling, including Vertex/Bedrock ids), appended to or replacing the built-in lineup - Added
promptCacheTtlandsubagentPromptCacheTtlsettings so API-key and cloud-provider users can keep a 1-hour prompt cache on the main conversation while subagents stay at 5 minutes - Added
modelPricingmanaged setting so an organization's contracted per-model rates and discount multiplier are used for/cost, the status line, and telemetry cost figures instead of list price - Added a keyless sign-in under
/login→ Anthropic Console: "Sign in with your Console account" (recommended) alongside creating an API key, so organizations that don't allow API keys can sign in - Added a
Skipped sourcesline to/statusthat lists managed settings sources (for examplemanaged-settings.json) present but not applied because a higher-precedence managed source is active - Added a
managedmarker in/mcpand/pluginson claude.ai connectors whose authentication is managed by your organization - Added a tip pointing claude.ai users who haven't connected GitHub for Claude Code on the web to
/web-setup - Added a
/statusline showing whether GitHub is connected for Claude Code on the web (Pro/Max), pointing to/web-setupwhen it isn't - Added the model (and effort level) each subagent ran on to
/tasksand the agent detail dialogs - Fixed remote MCP servers in non-interactive (
-p) and SDK sessions never recovering after a dropped connection; they now reconnect automatically or report as failed - Fixed MCP server sign-in started from the desktop app failing with "Invalid redirect URI" on servers that support client ID metadata documents (for example Linear)
- Fixed auto mode staying unavailable at startup when a temporary server-side disable was cached and later flag fetches failed
- Fixed auto mode tool calls being denied as "temporarily unavailable" after about a minute of waiting when the API was briefly overloaded and asked the client to retry
- Fixed the
/modelpicker silently ignoring an Ultracode selection; picking Ultracode now applies it to the current session - Fixed
/resumeonly listing the 50 most recent sessions; the picker now loads more as you scroll - Fixed cloud sessions resuming after a mid-turn restart with a pending hook or background-task notification re-sent as the prompt instead of the normal continuation message
- Fixed cross-session messaging silently turning off inside user namespaces and rootless containers after the 2.1.232 socket-directory hardening
- Fixed text that hangs outside its container (for example the sign-in URL in
/login) losing its leading columns when another part of the screen repaints - Fixed
spellchecknot underlining a misspelled word typed directly after an emoji - Fixed background subagents not waking when their last background Bash task completes
- Fixed sessions going silent for 10+ minutes when the Anthropic API never starts a response: the request now times out after ~3 minutes, retries once, then shows
API Error: No response from API - Fixed auth, model-availability, and other client-generated error messages rendering like model output instead of as error lines
- Fixed workload identity federation in CI: processes in one job share the exchanged token instead of re-exchanging the single-use token; a rejected exchange fails fast with the server's message
- Fixed server-managed
companyAnnouncementsnot showing at startup in a session that began with signing in (for example the first launch after/logout) - Fixed hook
ifconditions likeBash(cat *)firing on unrelated Bash commands when the command contained$()or backtick command substitution followed by more arguments - Fixed plugin dependencies declared with a
marketplacefield never resolving when both plugins are loaded together via--plugin-dir - Fixed
/reload-pluginskeeping the LSP tool after the last LSP plugin is disabled; it now also warns before an LSP plugin change that would re-read the conversation - Fixed
--agentssilently ignoring invalid JSON or invalid agent definitions; it now exits with a clear error, like--mcp-config - Fixed
/statusshowing "Found invalid entries in: ." with no filename when~/.claude.jsonhas an invalid MCP server entry - Fixed
/clearremoving the/renamesession name from the prompt bar even though the name was kept for the new session - Fixed Ctrl+R history search and up-arrow history breaking when
~/.claude/history.jsonlcontains a malformed entry - Fixed Ctrl+[ not leaving vim INSERT mode in terminals that encode modified keys (modifyOtherKeys / kitty protocol)
- Fixed the local IDE connection being routed through
HTTPS_PROXY(and sometimes failing) whenlocalhostwas listed inNO_PROXYbut not lowercaseno_proxy; both casings are now honored - Fixed sandbox network-violation details being dropped from the Bash tool result when the blocked command still exited 0 (for example
curlprinting the proxy's 403 page) - Fixed the status line
rate_limitsfields and/usagestill showing a rate-limit window's pre-reset usage percentage after the window reset while the session was idle - Fixed
claude --teleport <session>exiting on uncommitted changes instead of offering to stash them and continue, as the session picker already does - Fixed
/web-setuprepeatedly asking you to log in when an older GitHub CLI (withoutgh auth token) was already authenticated - Fixed Claude in Chrome losing its connection to Claude Code after an auto-update cleaned up the version it was set up with; the native host now launches via the stable
claudelauncher - [VSCode] Fixed sessions started before feature flags were first fetched (for example right after install) opening in the default permission mode instead of auto mode or your configured default mode
- [VSCode] Fixed Focus view sections you expanded collapsing on their own during subagent tool activity
- Improved startup time: sandbox and MCP bring-up no longer block the first frame, bare launches skip subcommand registration, and workflow discovery, settings, and trust-store work is cheaper
- Improved native install and auto-update download size: the binary is now zstd-compressed (about 75 MB instead of 340 MB on Linux x64)
- Improved attribution of usage telemetry to your organization for sessions that authenticate with
ANTHROPIC_AUTH_TOKENdirectly against the Anthropic API, so its data-handling settings apply - Improved native binary size: about 2 MB smaller by storing the bundled skill and prompt text more compactly
- Improved memory usage of native builds: code is now loaded on demand instead of keeping the whole bundle resident (roughly 40–70 MB less memory per session)
- Improved peak memory usage in long-running sessions (the runtime now garbage-collects sooner as the heap grows)
- Improved
/loginover SSH: the sign-in URL appears immediately, pressingcreports how the URL was copied instead of always claiming success, and a hint explains how to select text in fullscreen - Improved the error when effort
xhigh/maxis used with thinking turned off: it now names the level, the setting that disabled thinking, and/effort highas the fix - Improved
/loop: consecutive wake-ups where Claude has nothing to do now fold into a single line in the terminal instead of printing each one - Changed the sandboxed Bash tool prompt to no longer list allowed network hosts, so Claude attempts requests (and you can approve new hosts) instead of assuming unlisted hosts are blocked
- Updated the
/modelpicker and the bundledclaude-apiskill to show Sonnet 5's $2/$10 per Mtok pricing as its standard list price rather than a limited-time promo - Changed computer use on macOS so clicking the desktop, Dock, or a Finder window requires granting Finder via the access dialog, like any other app
- Changed
/model,/fast, and/effortto also run immediately instead of queueing until the turn ends on Bedrock, Vertex, and Foundry and when telemetry is disabled - Fixed
claude remote-controlexiting and stranding attached Remote Control sessions when the server drops its environment mid-session; it now recovers - Fixed Remote Control sessions served by
claude remote-controlsometimes getting stuck after it was stopped and restarted, for Team and Enterprise members without an admin or owner role - Changed the cross-session messaging inbox socket to close connections that send no complete line within 30 seconds; scripts posting to it should connect once their data is ready
- Improved the notice when resuming a conversation whose Remote Control is held by another terminal: it now says sessions on other machines can't be seen from, or reach, this one
- [VSCode] Improved history trimming in long sessions: older tool-activity rows are dropped first so your messages and Claude's replies stay visible
- [VSCode] Improved attribution of the extension's own usage telemetry to your organization when you are signed in with a Claude account, so its data-handling settings apply
2.1.241
- Bug fixes and reliability improvements
2.1.240
- Bug fixes and reliability improvements
2.1.239
- Cost estimates (
/cost, status line,--max-budget-usd) now include the 1.1× US-only-inference premium for data-residency workspaces - Added the one-time fullscreen renderer offer on Bedrock, Vertex, Foundry and other previously excluded setups; new installs there now start in fullscreen
- Added
/claude-api upgradeto migrate Python projects fromanthropic0.x to 1.x, and updated the skill's Python reference for 1.x (timeouts useanthropic.Timeout, nothttpx.Timeout) - Cloud sessions: plugins synced from claude.ai now show as
name@synced, work withclaude plugin enable/disable <name>@synced, and never override a same-named plugin you installed - Alpine/musl builds: native image paste, clipboard, and audio-capture add-ons now load (musl-built binaries instead of glibc ones refused by the runtime)
- The usage-limit message shown when your monthly spend limit is already used up now also says when your session or weekly limit resets
- Fixed Bedrock streaming behind proxies that strip the response Content-Type header, which silently doubled billed API calls by re-running every turn non-streaming
- Fixed Claude Code hanging at startup behind an HTTPS proxy when using Bedrock with an SSO profile and
awsAuthRefresh— the credential pre-check now honorsHTTPS_PROXY - Fixed a raw crash dump when starting Claude Code from a directory that no longer exists; it now prints a clear message
- Fixed Edit and Write calls pausing for about 5 seconds in JetBrains IDE terminals when the Claude Code plugin is connected
- Fixed a race where pressing Esc with a prompt queued could let the next turn finish early, leaving the session idle while Claude was still working and letting a later resubmit repeat actions
- Fixed WebFetch retaining expired page content in memory for the whole session instead of the intended 15 minutes
- Fixed cloud sessions (Claude Code on the web, desktop and mobile apps) resuming out of plan mode after an idle worker restart
- Fixed MCP elicitation forms taller than the terminal being clipped in fullscreen mode: the form now fits the window, with hidden fields reachable by scrolling and Accept/Decline always visible
- Fixed remote MCP servers staying failed after a transient 5xx on a mid-session reconnect in cloud sessions or via SDK
setMcpServers() - Fixed custom session titles disappearing from
/resumeafter more than ~64 KB of conversation was written following the rename - Fixed
claude -c/resume picking up sessions from a different directory whose path differed only by characters like_,-, or. - Fixed
/resumeand the agents view showing a session as recently changed (and reordering it) when only its file was touched or it was merely reopened - Fixed
/resumein all-projects mode telling you tocdinto a deleted directory (e.g. a removed worktree); such sessions now resume in the current directory - Fixed the
dark-ansitheme rendering expanded tool results in fullscreen mode with text the same color as the background - Fixed the fullscreen renderer prompt reappearing on every launch when it could never be answered; it now stops after being shown on three launches
- Fixed
.worktreeincludepatterns starting with**/silently matching nothing when the target lived in a gitignored directory - Fixed agents, skills, and commands whose
.mdfile starts with a UTF-8 BOM being silently ignored - Fixed
/insightsechoing literal<message>tags in its response on some models - Fixed marketplace
metadata.pluginRoothaving no effect: bare plugin source names now resolve under it as the docs describe - Fixed mouse movement in browser-based terminals inserting text like
"35;150;7M"into the prompt when a mouse report arrived split across writes - Fixed custom theme overrides for the effort/ultracode status badge colors being ignored
- Fixed OpenTelemetry trace fragmentation: tool executions deferred by a
PreToolUsehook now resume in the original turn's trace instead of starting a new trace - Fixed vim mode in the agent view: Escape now switches to NORMAL mode and keeps your text instead of clearing the prompt
- Fixed the
selection:copykeybinding silently dropping a text selection that had been extended with Shift+Arrow keys - Fixed the
/voicestartup tip still appearing after voice dictation was enabled via thevoice.enabledsetting - Fixed shell-mode (
!) Tab completion dropping the./from a./scriptpath, which left a command the shell couldn't run - Fixed fullscreen mode answering a permission prompt or pressing a button when you clicked the terminal window only to bring it back into focus
- Fixed slash-command panels (e.g.
/config,/model) in fullscreen mode covering the latest messages; the conversation now stays pinned above the panel - Fixed the
/workflowsdetail dialog overflowing the terminal and losing its header off-screen when opened while Claude is still responding - Fixed the Linux sandbox making a nonexistent
.git/config.worktreeunreadable, which broke every sandboxed git command in repos withextensions.worktreeConfigset - Fixed hooks failing with "posix_spawn ENOENT" after the session's working directory was deleted; they now run from the project root or home directory instead
- Fixed
claudeMdExcludesnot excluding a symlinked.claude/rulesfile when the pattern names the rules directory or the symlink rather than its target - Fixed runaway session-title syncing to Remote Control when two Claude Code processes shared one background job's state (2.1.232 regression); title updates are now deduplicated and rate-limited
- Fixed sessions whose title starts with
/being unaddressable bySendMessageand shown as "(untitled)" inListAgents - Fixed Ctrl+W, Ctrl+U, Ctrl+K, Option+Backspace, Option+D and vim
df/dtleaving a broken[Pasted text #N]placeholder when the cursor was inside it - Fixed masked (password-style) inputs such as the login code field letting their text be pasted back with Ctrl+Y elsewhere or saved to prompt history when cleared with double Esc
- Fixed Ctrl+Backspace deleting one character instead of a word in search boxes
- Fixed a request rejected by an organization policy check being re-sent before the rejection was shown
- Improved the reminder shown after compaction so a skill's original arguments are not re-run as a new request
- Long file paths on tool-use rows now truncate in the middle to stay on one line
- Remote sessions keep sending keep-alives while a long
SessionStartorSetuphook runs, so the container is not idle-reaped mid-hook /goal: repeat check-ins on long-running background work now back off (30 min, then 1 h, then every 2 h) instead of repeating every 30 minutes/goal: resuming a session from theclaude --resumepicker now restores its active goalListAgentsnow tells a session its own name (the one peers use to message it), andSendMessageto your own name says so instead of "no agent named …"ListAgentsand/list-agentsnow list your live teammates (previously only subagents and other sessions appeared, so a reachable teammate looked absent)keybindingFlavor: "readline"now also matches Bash for word keys: Alt+F and Ctrl/Option+→ stop at the end of the word, Alt+D deletes to it (Ctrl+Y pastes it back), and punctuation separates words- Persistent retry mode (
CLAUDE_CODE_RETRY_WATCHDOG) now fails immediately on organization spend-limit and out-of-credits errors instead of waiting indefinitely for a reset - Claude in Chrome:
/clearnow closes the session's Chrome tab group, and empty groups are closed on/resumeand when Claude Code exits - Remote sessions: images uploaded from mobile now include their saved file path, so Claude can copy them into files it creates
- Claude Code on the web: requests from Bash and other tools to non-API anthropic.com hosts (e.g. www, docs) now go through the session's network proxy, so your environment's allowed domains apply
- Remote Control: clearer message and
claude doctorwording when Remote Control isn't enabled for your account - Windows: cross-session messaging is now available, so Claude Code sessions across your machines can message each other with
SendMessageand find each other withListAgents, as on macOS and Linux - [VSCode] "View usage" in the usage-limit banner now sits inline with the warning text instead of floating mid-banner
2.1.238
- Added a
keybindingFlavorsetting: set it to"readline"to make Ctrl+W in the prompt delete back to the previous whitespace, as in Bash; the default ("classic") is unchanged - Plugin marketplaces:
headersHelperon a url marketplace or a catalog entry runs a command that mints HTTP headers (e.g. a short-lived token) for catalog and same-origin archive fetches - A catalog entry's
headersHelperruns only when you install or update that plugin, after its command is shown;claude plugin install/updateask[y/N](or pass-y) - Added
claude self-hosted-runner --defer-shutdown-max-min <minutes>: on SIGTERM, keep serving attached sessions, park what is left after that many minutes, then exit - Added
claude self-hosted-runner --proxy-authorization-command/--proxy-authorization-filefor egress proxies that require a freshly issuedProxy-Authorizationheader on every connection - Fixed unbounded memory growth in long interactive sessions: subagent tool results are now released once they leave the recent display window
- Fixed custom, project, and plugin output styles drifting back to the default voice mid-session
- Fixed
CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION=truenot keeping prompt suggestions on when your account is near, but not over, its usage limit - Fixed worktree-isolation Bash refusals telling you to remove a redirect when the command had none
- Fixed self-hosted runners occasionally being removed by the server after a single slow or lost poll request, handing their healthy session to another runner
- Fixed MCP elicitation dialogs showing nothing for URLs longer than 4,096 characters, and permission prompts dropping the "don't ask again" option when the project path didn't fit the terminal width
- Fixed leftover
/tmp/claude-*-cwdfiles when a Bash command is killed, times out, or is interrupted - Fixed held Backspace being ignored on terminals that send Ctrl+H for Backspace when keystrokes arrive in large bursts (slow SSH/mosh links)
- Fixed text-wrapping in permission prompt diffs: lines containing wide multi-code-point characters (such as emoji) or tabs are no longer clipped
- Fixed killing a suspended (Ctrl+Z) session sometimes leaving the terminal in bracketed-paste mode with the cursor hidden
- Fixed stdio MCP servers receiving a
server/discoverrequest beforeinitialize, forcing lazy servers to start their backend on every session open - Fixed a proxy's refusal of a connection being reported as a generic network error instead of naming the proxy
- Fixed the
/modeland/effortcache-miss warning appearing when the prompt cache had already expired - Fixed per-task Stop from the Remote Control tasks panel doing nothing on CLI-hosted sessions
- Fixed remote sessions exiting when a client delivered a user message without a valid role
- Fixed Remote Control sessions started by
claude remote-controlinheriting session-scoped environment variables from the launching shell - Fixed a Remote Control session whose process crashed staying unavailable until
claude remote-controlwas restarted; it can now be reused when you next message it - Fixed Remote Control messages sent from the web or Desktop while Claude is mid-turn disappearing from the transcript after the turn finishes
- Fixed Remote Control model picks made on a phone or web not updating the model shown in the terminal
- Fixed Remote Control disconnecting with "login expired" when a brief network hiccup delays renewing your sign-in; it now retries and stays connected
- Fixed Remote Control reporting a failed reconnect on sign-out; signing out now ends the session with a clear message
- Fixed
ListAgents/SendMessagereporting "Remote Control is not connected" in sessions run byclaude remote-control(server mode) or Desktop/IDE hosts; they now list and reach Remote Control peers - Fixed
ListAgentsandSendMessageexposing the idle worker that the agent view pre-warms for your next background session; it now appears only once a task claims it - Cross-session messaging: sending to a session on this machine that refuses inbound messages (e.g.
crossSessionInbound: "refuse") now reports "refused" to the sender instead of a silent success - Cross-session messaging: a session whose inbox drops your messages (rate limit or full queue) now tells your session, instead of the messages vanishing silently
- Improved startup: bare
claudestarts sooner on macOS - Improved Bash tool permission checking for zsh-specific syntax in shell conditionals
- Improved Remote Control connection resilience: brief HTTP 403 refusals from a network edge, VPN, or proxy are now tolerated for up to 3 minutes, with the refusing party named when a block persists
- Improved startup responsiveness: the automatic update check now runs about 10 seconds after launch instead of competing with startup for CPU
- Updated the bundled
claude-apiskill for the Managed Agents Aug 19 release: web search/fetch domain settings and memory stores on self-hosted sandboxes - Changed Ctrl+L and Cmd+K in fullscreen to always just repaint — the double-press
/clearshortcut was removed, and 1-row nvim terminals no longer trigger automatic/clearloops - Changed
claude mcp listandclaude mcp getto show disabled servers as⊘ Disabledinstead of connecting to them for a health check - MCP
headersHelperin a project.mcp.json, and inline MCP servers in project or--add-diragent files, now require that folder's trust dialog to have been accepted (also underclaude -p) - MCP
headersHelperfrom a project.mcp.json, plugin, or agent file runs without inherited credential env vars; user, managed and claude.ai-scope helpers now run from the Claude config dir
2.1.237
- Fixed prompt caching for sessions using an LLM gateway or custom base URL
- Added a built-in "Concise" output style: Claude leads with results and skips preamble and narration, while doing the work just as thoroughly. Select it under Output style in /config.
2.1.236
- Added
ANTHROPIC_DEFAULT_MODELenvironment variable: sets the model new sessions start on, while a/modelpick still overrides it and persists across restarts (unlikeANTHROPIC_MODEL) - Added
notify_when_idleto cross-sessionSendMessage: ask another Claude Code session on this machine to send one notice when it next goes idle — opt-in, one-shot, no polling (macOS and Linux) - Sandbox: on macOS, wildcard read-deny rules (e.g.
**/.env) now take precedence inside allowed read regions, cover matched directories' contents, and can't be bypassed by renaming the denied file - Fixed clipboard copy, background housekeeping, background sessions, and local MCP logs breaking after the directory a session had switched into was removed (since 2.1.229)
- Fixed the fullscreen renderer failing permanently after a single failed start: it now falls back to the classic renderer instead of exiting on every subsequent launch
- Fixed the
/modelpicker rendering taller than the terminal: it now shows only as many models as fit the window, with the rest reachable by scrolling - Fixed
SendMessagecalls being rejected when a malformed closing tag left the message text inside the summary field - Fixed unhandled promise rejections when a subprocess fails to start, for example
powershell.exeon WSL with Windows interop disabled (regression in 2.1.234) - Fixed fullscreen mode sometimes not showing a newly sent message until the next update after the terminal was resized
- Fixed a blank band that could remain above the prompt after clearing a multi-line prompt, and panes not repainting after resizing the terminal away and back, in fullscreen mode
- Fixed the managed-settings approval prompt sometimes not appearing at startup while still capturing the first keypress as approval
- Fixed terminal tab titles jumping in tmux (iTerm tmux integration): the title is now written only when its text changes instead of animating every 960ms
- Fixed an unclear error when the cloud environments list came back empty or malformed
- Fixed the Fable 5 first-time usage-credits prompt auto-selecting the fallback model after 60 seconds with no answer when using Remote Control
- Fixed spinner tips never appearing, with a repeated background error, when the cached guest-pass reward in
~/.claude.jsonwas malformed - Fixed skills hot-reload in SDK/VS Code sessions raising an error on every skills change after the session's working directory was deleted (2.1.229+)
- Fixed self-hosted runner sessions released on idle, retire, or startup timeout occasionally resuming on another runner before the post-session hook had finished
- Fixed the Clawd mascot's eyes and feet rendering unevenly in iTerm2 at some font sizes
- Fixed occasional runaway session recaps: recap text (automatic and
/recap) is now capped at 400 characters, cut at a word boundary - Improved startup performance: the session counter is now written in the background
- Improved auto mode:
Monitorallow rules are now set aside while auto mode is active, so Monitor commands are reviewed the same way Bash commands are - Improved auto mode on Bedrock, Vertex AI, and Foundry, and when telemetry is disabled: the classifier now uses the same defaults as on the Claude API, including severity-scored classification
- Improved auto mode: the git status check can no longer be fooled by a repo's
status.showUntrackedFiles=nosetting into reporting a clean tree - Changed the
/modelpicker to highlight only the newest model's name, so the highlight marks the new release rather than an arbitrary subset of the list /goal: an idle session whose goal is parked behind long-running background work now checks in automatically after 30 minutes (then 1h, 2h) instead of waiting for you to return/usagenow shows the usage-credits spend row for Team and Enterprise members, and shows a capped row at 0% before anything is spent- SIGTERM in print/SDK mode no longer records an interrupted turn or synthetic tool denials before exiting; running commands are still terminated and the process still exits with code 143
- Pressing Enter on a slash-command typo or a command unavailable in this session now reports it instead of running the closest fuzzy match; prefixes and aliases still run
- Remote Control now marks a session offline within seconds when the CLI exits or its terminal closes
SendMessagenow refuses further messages to a session up front once a rapid burst would exceed what that session's inbox accepts, instead of reporting them sent while they were dropped- Aligned the session title chip on the prompt border with the footer's right edge
- Right-aligned footer items (goal indicator, session state, background agent status) and truncated notices now share a consistent right margin with the rest of the prompt area
- [VSCode] Added screen reader support for the transcript: live announcements for replies, permission requests, errors, and status changes, plus per-turn heading navigation
2.1.235
- Added an optional
spellchecksetting that underlines misspelled words in the prompt input as you type, using your installedaspell,hunspell, orispell - Fixed whole-prompt-cache invalidation when a language server disconnected or reconnected mid-session
- Fixed nested markdown list items misaligning at depth 3+ and added a hanging indent to wrapped list items in the terminal UI
- Fixed prompt input highlights (slash commands, keywords, mentions) appearing shifted by one or more characters in some multi-line prompts
- Fixed Shift+Tab inside the permission prompt's comment field approving the edit and granting session-wide edit permission instead of closing the field
- Fixed the Agent tool advertising a general-purpose default in sessions where that agent is unavailable: an omitted
subagent_typethere now gets a clear error listing the available agents - Fixed notebook cell delete/replace approval dialogs silently omitting the existing cell content when the notebook or cell could not be read; the dialog now says why
- Fixed slash commands run while Claude is responding showing HTML entities instead of the actual characters
- Fixed the prompt footer not showing the "Update installed" restart notice after a background auto-update
- Fixed the expanded task list (
ctrl+t) always starting collapsed when resuming or relaunching into a session that still has open tasks - Improved memory and CPU usage while cloud sessions such as
/ultrareviewor/autofix-prrun in the background — their event streams are no longer re-scanned and re-rendered on every update - Improved permission dialogs: display text and "don't ask again" options now always match what a grant would cover, and "don't ask again" is withheld when contents cannot be fully displayed
- Improved the embedded
grepin native macOS/Linux builds: pathological patterns now fail fast instead of exhausting memory, and-m Nwith-A/-Cprints correct context - Improved the context-limit error to say when auto-compact is off and point to
/configto re-enable it - Vim mode: NORMAL mode and cursor position are now preserved when toggling the detailed transcript (ctrl+o) or closing a panel
- Dialogs: arrow keys and Enter pressed in quick succession now select the option you navigated to instead of the previously highlighted one
SendMessagenow refuses messages too large for cross-session delivery up front instead of silently dropping them- Remote Control:
claude rcnow applies the same enterprise-gateway availability check as interactive startup - [VSCode] Fixed focus jumping between open Claude tabs on its own when a window with several Claude panels is restored or reloaded
2.1.234
- Added the optional
CLAUDE_CODE_PROJECT_DIR_NAMEenvironment variable: hosts that give each session its own config directory can choose a short name for the per-project transcript directory - Added the
selection:clearkeybinding action, so a key can be bound to clear an in-app text selection; also works in the agents view - Added a GitLab merge request badge to the footer and statusline: repos with a GitLab remote and an authenticated glab CLI show MR !N with draft/pending/green states
- Claude Code now continues your session automatically when a claude.ai usage limit resets; turn it off in
/config("Continue automatically at usage limit") - Claude is now told to use your account email only to identify you, and not to send it to unrelated services unless you ask
- Security: remote file reads, session restore, CLAUDE.md includes, workflow scripts and file uploads now reject Windows NT-namespace (
\??\) paths, hardening the remaining pre-approval file accesses against the NTLM credential-leak vector - Fixed auto mode in very long sessions repeatedly re-checking and denying sandboxed commands' network access after the conversation had been compacted
- Fixed session-scoped permission answers (including denies) being dropped when answering background subagent tool permission prompts
- Fixed a crash when an API response on the non-streaming fallback path (typically via third-party gateways) contained a thinking block missing its thinking field or a text block missing its text field
- Fixed markdown rendering becoming extremely slow for some messages containing unusual Unicode sequences
- Fixed
SendMessagerejecting a recipient copied fromListAgentswhen the session name is at the 200-character cap or emoji-heavy - Fixed repository detection mis-reading the host of git remotes with unusual userinfo, producing links and repo-specific behavior for the wrong host
- Fixed MCP diagnostics printing resolved secrets: scope-conflict warnings now show the configured
${VAR}form, and connection-failure details show only the server origin - Fixed
strictKnownMarketplacesallowlists accepting SCP-style git marketplace sources whose host differs from the one git would actually connect to - Fixed modal text such as the
/loginOAuth URL losing characters when copied in fullscreen - Fixed a
---horizontal rule in rendered markdown running into the line after it - Fixed consecutive shell commands splitting into multiple "Ran 1 shell command" rows when todo/task updates were interleaved between them
- Fixed dialogs like
/permissionsopened while a!shell command was running being dismissed when the command finished - Fixed a queued
!shell command being sent to the model as plain text after pressing up-arrow to edit the queued input - Fixed queued messages reappearing in the prompt history while still queued, Esc while selecting a queued message no longer interrupts the turn, and
!mode no longer sticks after a mid-turn submit - Fixed accepting the "Try the new fullscreen renderer?" prompt restarting the session without its permission mode (e.g.
--dangerously-skip-permissions), tool allow/deny rules, model or effort flags - Fixed
/tuidropping launch--allowed-tools/--disallowed-toolsrules when it restarts; it now declines to switch, with the reason, when the session has restrictions a restart can't carry over - Fixed trust prompts omitting the repository-wide scope warning when the directory was first seen before the repository existed there
- Fixed a case where an IDE diff tab closing during a permission re-prompt could answer the new prompt with the previous input
- Fixed: files sent to the user during Remote Control sessions hosted by Claude Code Desktop or VS Code now upload, so they open on phone and web instead of showing an empty card
- Fixed: after
/loginwhileCLAUDE_CODE_OAUTH_TOKENis set, the stale-token reminder no longer leaks into Claude's automatically resumed turn — it now appears only to you - Fixed: permission previews now relay only to channel servers admitted by the inbound trust gate, and a server's explicit permission-capability opt-out is honored
- Fixed: credential masking on relayed permission previews can no longer hide commands, paths, or destinations from the approver; oversized private-key blocks now redact under full-strength redaction
- Fixed: provider API tokens that mask on permission previews now mask even when directly followed by shell delimiters
- Fixed Claude Desktop inter-session messages being silently dropped by the recipient session when cross-session messaging read as disabled, which left the sender's query "thinking" for many minutes
- Remote Control: signing this computer in to a different claude.ai account or organization now stops the running session within seconds and says why, instead of a misleading HTTP 404 hours later
- Remote Control sessions started from Claude Code Desktop or VS Code now keep phones and claude.ai/code updated on the session's permission mode (and claude.ai/code on the model) as they change
- Remote Control: effort picks made on a phone or on claude.ai/code now apply to terminal- and Desktop/VS Code-hosted sessions, and the session publishes its effort level to connected clients
SendMessageandListAgentsnow say when your account's session list was too long to check completely, instead of treating unseen sessions as absent- Expired Anthropic profile credential now points you at
/loginwhen a claude.ai login would take precedence - Improved the transcript: your own prompts now render markdown (highlighted code blocks, inline code, lists) the same way replies do
- Improved the "API returned an empty or malformed response" error to say what came back (content type, body kind, size, request ID) and why the original streaming request failed
- Improved auto-generated session titles to read as short, specific names (e.g. "Login button bug") rather than sentences restating your request (e.g. "Fix the login button on mobile")
- Reduced the context cost of loading the built-in
claude-apiskill from ~200k+ tokens to ~25k by loading reference docs on demand /permissionscan now be opened while Claude is working — rule changes apply to the rest of the current turn/add-dir <path>can now be used while Claude is working;/add-dir,/autocompact,/theme,/help,/configand/advisordialogs open mid-turn in the fullscreen TUI/goalnow clears itself with a notice when a turn dies on an unrecoverable error (e.g. revoked auth, an exhausted credit balance, or a context overflow) instead of staying armed/goal: when background tasks keep a goal waiting for 30+ minutes, Claude now checks in on them instead of waiting indefinitely (setCLAUDE_CODE_GOAL_CHECKIN_MINUTES=0to opt out)claude setup-tokennow rejects unexpected extra arguments instead of silently ignoring them- Changed Esc in fullscreen mode to no longer clear a mouse text selection: it interrupts or dismisses as usual and the selection stays highlighted
- Removed the redundant "Allowed by auto mode classifier" line that auto mode showed under every Agent tool call
- Removed the "Default teammate model" setting from
/config; agent-team teammates now use the leader's model unless the spawn names one - Dimmed the elapsed-time counter on the running tool header so it no longer competes with the bold counts
- Background task notifications delivered between turns are now sent to the model inside
<system-reminder>tags, matching mid-turn delivery - Mantle: skip the admin-pin availability probe at startup when a main-loop model is already picked
- Windows: startup no longer stalls on repeated rename retries when
~/.claude.jsonis read-only
2.1.233
- Added GitLab merge request URL support to the
--worktreeflag and theclaude agentsview (where MRs display as!N) - Added an opt-in
forward_user_identityapps gateway setting on Anthropic upstreams that sends the signed-in user's identity as headers, so a proxy behind the gateway can attribute spend per user - Added opt-in memory cgroup support for Bash tool commands on Linux (
CLAUDE_CODE_TOOL_MEMORY_LIMIT) so a runaway build can't stall the session - Added
CLAUDE_CODE_WEBFETCH_CACHE_TTL_MSenvironment variable to configure the WebFetch session URL cache TTL (default unchanged: 15 minutes) - Fixed cloud sessions occasionally being marked as lost when the environment shut down while Claude was waiting on a permission prompt
- Fixed MCP v2 connections endlessly reopening the subscriptions/listen stream against servers that terminate long-held streams on a fixed timeout (e.g. serverless hosts)
- Fixed Notification hooks not firing for permission prompts when running under Claude Desktop or VS Code
- Fixed idle sessions on Linux sometimes keeping one CPU core at 100% when sandboxing is enabled
- Fixed bundled skill aliases like
/checkupand/reviewreporting "Unknown command" in-pmode or with plugins/MCP loaded when a user or project skill shadows the bundled skill - Fixed skill/command argument substitution to prevent argument values from being re-expanded as template markers
- Fixed Windows paths spelled with the NT
\??\device prefix bypassing UNC path validation, closing an NTLM credential-leak vector - Improved
claude self-hosted-runnersession start time: the session branch is now created without rewriting the working tree, and two server round trips no longer block the agent's launch - Improved apps gateway error forwarding: 400/413 errors from Vertex, Foundry, and Claude Platform on AWS upstreams now carry the upstream's own message; fixes a bug with auto-compact on apps gateway
- Improved
claude plugin validateto check a bare.claude/skillsdirectory, reporting SKILL.md files whose frontmatter fails to parse - Improved screen reader mode: the
/effortselector renders as a numbered list with a typed-number prompt, and hint and dialog text is no longer clipped - Improved print mode diagnostics: a
[claude-code:unrecognized_model]line is written to stderr when a request goes out for a model ID Claude Code doesn't recognize; map it withmodelOverridesto silence - Changed the GitHub app setup tip to no longer appear in repositories whose origin remote is on gitlab.com or bitbucket.org; the enterprise marketplace tip now covers non-GitHub internal git hosts
- Todo/task-tracking tools (TaskCreate/Get/Update/List, TodoWrite) are no longer available on Opus 4.8, Sonnet 5, Fable 5, Mythos 5, and newer models; set
CLAUDE_CODE_ENABLE_TODO_TOOLS=1to bring them back - Windows: fixed auto mode repeatedly stopping for manual approval on ordinary
cd <dir> && <command> > fileBash commands (a 2.1.232 regression) - Reverted the 2.1.232 Bash permission changes for Cygwin-style symlinks on Windows and for input redirections (
< file); a narrower version will return in a later release
2.1.232
- Subagent forking is now on by default: a
subagent_type: "fork"subagent inherits the full conversation and prompt cache, and non-teammate agent spawns in interactive sessions now run in the background by default - Type
@in the prompt to mention another Claude session by name; Claude then usesSendMessageto reach that session directly SendMessagenow delivers to a bare name that exactly matches one live session, instead of asking to confirm with a ref first- Interactive sessions on one machine now keep unique names: starting or renaming a session to a name another live session already uses gives it a
name-word-wordvariant and tells you - Added
/configrows for "Dialog expiry" and "Messages from your other sessions" (cross-session inbound accept/hold/refuse) - Added secret redaction for GitLab token families (
glrt-,gloas-,glptt-,glagent-,glimt-,glsoat-,glcbt-,glft-,glffct-) and full redaction of routableglpat-/gldt-tokens; theglabCLI config store gets the same sandbox and credential-path protection asgh - Added GitLab support to plugin marketplaces: bare
gitlab.comrepo URLs (including nested subgroups) now clone likegithub.comURLs, and clone auth-failure hints name your actual git host - Settings:
additionalMarketplacesandallowedMarketplacesare now accepted as friendlier aliases forextraKnownMarketplacesandstrictKnownMarketplaces - Enterprise policy: a url-typed
blockedMarketplacesentry for a bare repo URL keeps blocking that URL when the CLI classifies it as a git clone - Gateway: the
desktop:overlay now accepts every released Desktop setting (was 11 hand-listed keys), validated at boot against Desktop's own schema; unknown or invalid keys fail boot - Gateway: empty
managed.policies[].match.groups/admin.admin_groupsentries and malformedemail_domainvalues (empty, or containing@, whitespace, or commas) now fail at boot instead of silently matching no one or granting admin access - Fable 5 is offered as an advisor in
/advisoragain for organizations with Fable access, with usage-credits consent set up through/model fable - Fixed a PowerShell permission bypass where variable-writing parameters could silently overwrite
$PSDefaultParameterValuesand redirect later commands' file access - Fixed a Windows permission bypass where Git Bash followed Cygwin-style symlinks that path validation saw as regular files; writes through them now require permission approval
- Fixed nested git repositories inheriting trust from a parent directory; each repository now requires its own trust confirmation
- Fixed MCP connections hanging for the full 30-second connect timeout when a server fails to answer or sends a malformed reply to the protocol-version probe
- Fixed Remote Control sessions hosted by a bridge inside a cloud session inheriting that session's transcript or credentials
- Fixed Remote Control sessions started from Claude Desktop or an IDE appearing as a new claude.ai session each time the local session was resumed; they now reattach to the existing one
- Fixed Remote Control sessions appearing unreachable to newly attached clients while idle
- Fixed Remote Control bridge sessions not restoring conversation history when the session worker restarts
- Remote Control: resuming a conversation whose session was deleted from claude.ai or the app now starts a replacement instead of failing with a message about your login (regressed in v2.1.227)
- Fixed Cloud gateway
/loginexiting silently or leaving an unresponsive terminal after "Press Enter to continue" when managed settings failed to load; the reason is now shown - Fixed voice mode on native builds getting stuck on "listening…" when the voice service rejected the connection; the rejection is now shown immediately
- Fixed mTLS client certificate rotation requiring a restart; Claude Code now reloads the rotated cert and key automatically on connection errors
- Fixed malformed AWS or Vertex region values being used to build request URLs; they now fall back to the default region
- Fixed stream idle timeout errors failing the request instead of recovering on Bedrock, Vertex, and gateway deployments
- Fixed content-sized overlays containing truncated text rendering one column too wide, and start-truncated text collapsing to an ellipsis
- Fixed a stray garbled character where a long shell-command or agent-description preview was cut off mid-emoji
- Fixed a startup race that could silently unregister a plugin marketplace due to concurrent writes to
known_marketplaces.json - Fixed
/updateand/tuirefusing to restart while work that survives the relaunch was running - Fixed usage-limit guidance suggesting unavailable slash commands in SDK and remote sessions
- Fixed the consent message for interactive
--advisor fablelaunches, which told you to run/model fablein an interactive session that had just exited - Improved fullscreen streaming: long sessions stay responsive because the whole conversation is no longer re-normalized on every update
- Improved the managed settings approval dialog: shows endpoint URLs, uses clearer wording for telemetry-only changes, skips routine OpenTelemetry options, and requires approval for server-managed sandbox binary overrides (
sandbox.bwrapPath,sandbox.socatPath,sandbox.ripgrep) /feedbackand/bugnow open immediately when invoked while Claude is responding, instead of waiting for the turn to finish/plugin install plugin@marketplacenow refreshes the marketplace first, so newly published plugins install without a manual marketplace update/code-reviewat high, xhigh, and max effort now runs in a background agent like the other levels- Pasted and clipboard images are read without blocking the event loop
- Remote Control now keeps reconnecting for about 30 minutes after a network blip and no longer drops after a few blips spread across an hour
- Remote Control: resuming a conversation no longer silently takes Remote Control away from another Claude Code on the same machine that still has it; run
/remote-controlthere to move it - Updated agent panel: completed subagents hide immediately with a
/tasksfooter hint, and the "↓ N more" overflow indicator moved left for visibility - Remote Control: the terminal now says whether a session was taken over by another device, ended from another app, or deleted, and stops suggesting a reconnect that would undo it
- Bash input redirections (
< file) are now permission-checked like their argument spellings on all platforms - Shortened the message shown when resuming a completed background agent
- Cowork sessions no longer inline external @-imports from user-scope memory files
- Hardened the auto-generated cross-session messaging socket directory on shared
/tmp: a pre-planted symlink or another user's directory is now refused instead of used - Hardened the Linux filesystem sandbox against a protected-path bypass
- Changed
sandbox.ripgrepto be honored only from user, managed, and--settingssettings; project settings can no longer override the sandbox's ripgrep binary - Removed the startup tip suggesting you create custom subagents, and the matching nudge in the
/poweruptour
2.1.231
- Fixed MCP OAuth sign-in failing with a redirect URI mismatch for servers that use a pre-registered OAuth client, such as Slack
2.1.229
- Documented
claude remote-control --continuefor resuming the most recent Remote Control session - Added server-supplied Claude Code hook support for self-hosted runner sessions, matching managed-environment behavior
- Added SSE keepalive pings to gateway streaming responses during long thinking pauses, preventing idle-timeout disconnects on Vertex and Bedrock upstreams
- Added plugin marketplace
commandsources: a local command (e.g. an IDE) prints the plugin directory, which is re-resolved each session and applied without a restart;mode: "link"uses it in place ListAgentsnow marks disconnected Remote Control sessions asofflineand labels your cloud sessions ascloud- Fixed long responses partly disappearing while streaming and being printed twice in the terminal
- Fixed a crash to the error screen (including on
--resumeof the affected session) when a tool call had a non-stringglob,file_path, orcommandvalue - Fixed a RangeError crash when a progress bar or markdown table rendered in a very narrow terminal window (could also crash
claude --continue/--resumeat startup) - Fixed a crash on Windows when a tool call or message referenced a file by an extended-length (
\\?\) or UNC path - Fixed auto mode failing on every tool call for users who disable the attribution header via
CLAUDE_CODE_ATTRIBUTION_HEADER(direct Anthropic API connections) - Fixed
/modelrejecting Sonnet/Opus 1M for claude.ai subscribers using a customANTHROPIC_BASE_URLgateway - Fixed MCP OAuth with strict authorization servers by using
127.0.0.1instead oflocalhostin the redirect URI - Fixed Remote Control clients showing a stuck working spinner after a slash command typed in the laptop terminal
- Fixed the Claude Code Review workflow generated by
/install-github-appcompleting without posting its review on the pull request - Fixed multi-second UI stalls after editing a file with thousands of IDE diagnostics while the IDE extension is connected
- Fixed one-shot
claude plugincommands leaving a stray liveness file that could prevent cleanup of outdated plugin versions - Fixed dynamic workflows inside CPU-limited containers using the host machine's core count instead of the container's CPU limit
- Fixed a file-watcher handle leak after atomic file replacements, and an uncaught error on Windows when the scheduled-tasks watcher failed on a network or virtual filesystem
- Fixed SDK and
--input-format stream-jsonsessions getting a 400 API error when a whitespace-only message was submitted - Fixed conversations whose messages alone exceed the API's 32 MB request limit retrying compaction when no images or documents can be stripped; they now fail once with a clear message
- Fixed OpenTelemetry export from Claude Desktop sessions being rejected by the Desktop-managed gateway when that gateway is also the telemetry endpoint
- Fixed self-hosted runner and other remote sessions exiting at startup when
managed-mcp.jsonis deployed and the server delivers MCP servers; those servers are now skipped with a warning - Fixed self-hosted runner repository preparation hanging on a Git Credential Manager prompt; git now fails fast when credentials are missing
- Improved workflow fan-outs to stagger same-prefix sibling agents so subsequent agents read the cached prompt prefix instead of re-paying it (
CLAUDE_CODE_WORKFLOW_PREFIX_STAGGER_MS=0disables) - Improved "prompt is too long" errors to explain why automatic compaction could not recover instead of only suggesting
/compact - Improved sandbox: IPv6 literals in network domain lists are now bracketed (
[::1]:443), and ambiguous spellings are enforced fail-closed and flagged by/doctor - Updated
/loginto repeat theCLAUDE_CODE_OAUTH_TOKENoverride warning after a successful login - Changed
/commit-push-prso git/gh commands with dangerous flags (--force,--amend,--no-verify, etc.) are no longer auto-approved - Changed self-hosted runner Windows startup to require an explicit
--base-dir; there is no default checkout directory on Windows - [VSCode] "Report a problem" and
/bugnow open the built-in feedback dialog instead of a retired survey link - [VSCode] Made the
/btwside-question panel resizable by dragging its boundary, in both side-docked and stacked layouts - [VSCode] Added session groups in the sidebar — right-click to create, rename, or delete; Cmd/Ctrl- or Shift-click to move several sessions at once
2.1.228
- Fixed interactive sessions that could stop redrawing entirely, while the process kept running, after a rare internal layout error
- Fixed
git/ Git Bash not being found on Windows when Claude Code is launched from a parent folder of the git installation - Fixed
/tuireverting the session to an earlier model when/modelhad been changed since the last response - Fixed cross-session messaging sometimes starting without an inbox in the first session after install or upgrade
- Fixed Remote Control
/resumewhile connected leaking the resumed conversation's title or history into the connected session - Fixed
claude self-hosted-runnersessions failing on every fresh runner when thecheckouthook fails for a repository the session doesn't push to; that repository is now skipped with a warning - Fixed self-hosted runners ending sessions in the gap between a background task finishing and the follow-up turn starting
- Fixed session cleanup deleting contents inside a project's memory folder
- Fixed background plugin-cache cleanup deleting a plugin's cache when its only version is a symlinked development checkout
- Fixed a settings-merge issue where a marketplace entry redefined in a higher-precedence settings tier could inherit another tier's custom headers; marketplace entries now merge as whole entries
- Fixed the deferred-tools reminder occasionally being sent to the model twice after a skill invocation
- Hardened skills synced from claude.ai: they no longer shadow local commands or MCP prompts, their descriptions are sanitized and labeled, and on your machine their bodies don't run
!commands or expand@files - Improved cross-session messages: the sender and body now display inline instead of a collapsed line, and messages to Remote Control sessions on other machines show your Remote Control session name as the sender
- Improved Vertex AI credential handling: expired or missing Google Cloud credentials now fail within seconds instead of retrying for minutes
- Improved compaction progress: the retry countdown and stall hint now appear during compaction instead of only a progress bar
- Updated terminal title busy-spinner glyphs to reduce tab-bar jitter on some terminals
- Changed the Write tool so newer models can overwrite an existing file they haven't read this session, matching the Edit tool's rules; older models still require the read first
- Removed the outdated note about auto mode sessions costing slightly more from the first-use notice for Pro, Max, and Team plans
2.1.227
- Fixed feature flags being evaluated without the user's subscription tier when a session started with an expired login token, which could wrongly prompt Max plan users to enable usage credits for Fable
- Fixed every Bash command failing under
claude-code-actionwithallowed_non_write_userson GitHub-hosted runners - Fixed
/tuibringing back a conversation that had been rewound to before its first message - Improved slash-command menu: blue now marks only the selected row, matched characters are bolded instead of recolored, and emoji or accented names keep their glyphs
- Improved performance: fewer event-loop stalls on file-not-found suggestions and at-mention size checks
2.1.226
- Bug fixes and reliability improvements
2.1.225
- Added gateway spend-limit support to Claude Code's usage warning; the limit-reached message now names the cap, its reset time, and the operator's message (requires the gateway on 2.1.225)
- Added a workspace trust prompt to
claude agentsfor untrusted directories, matching the behavior ofclaude - Fixed a transient 401 replacing a long-lived
CLAUDE_CODE_OAUTH_TOKENwith a stored login's short-lived token, breaking headless sessions until restart - Fixed MCP OAuth servers on macOS intermittently failing with a burst of 401 errors, as if never authenticated, after a keychain read timed out
- Fixed auto mode counting a safety-filter refusal of its own permission check toward the consecutive-block limit; the action is still denied, but the model is now told to move on rather than retry
- Fixed cross-session messages staying parked without a notice or expiry in headless sessions and during startup
- Fixed conversation history breaking on Remote Control session resume after very large conversations were compacted
- Fixed hovering over a session in another project in the agents list changing the directory the next agent starts in
- Fixed
claude self-hosted-runnerregistering and then failing every session when--base-dircannot be created or written; it now exits at startup with a clear error - Fixed Claude Code on the web sessions being misreported as stuck, re-sending a growing event backlog on every reconnect
- Improved Remote Control: photos attached from the Claude app are now shown to Claude directly instead of being read from disk with a separate tool call
- [VSCode] Fixed Focus view folding away the latest to-do list, a pending question's context, and settled answers; thinking-only folds show "Thought for Ns" and re-collapse when their turn completes
- SendMessage can now start a conversation with your Remote Control sessions on other machines by name (
ListAgentsshows them asname [ref]), instead of only replying after they message you first - SendMessage: a Remote Control recipient you already confirmed is never swapped for a same-named session on t