/forknow means something different. It copies your conversation into a background session; the old in-session subagent behavior moved to/subtask. Update muscle memory today.New per-session caps on web searches and subagent spawns (both default 200). Override with
CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSIONandCLAUDE_CODE_MAX_SUBAGENTS_PER_SESSION;/clearresets both budgets. (more below)MCP tool calls over 2 minutes now auto-background so your session stays usable. Tune the threshold with
CLAUDE_CODE_MCP_AUTO_BACKGROUND_MSor disable by setting it to 0.Plan mode was silently auto-running file-modifying Bash commands (
touch,rm) without a permission prompt. Fixed, but worth knowing if you relied on plan mode as a guardrail. (more below)isolation: 'worktree'subagents could run git commands against the main repo checkout. Fixed. If you use worktree isolation for parallel edits, this closes a real hole. (more below)
New in 2.1.212, 2.1.211, 2.1.210, 2.1.209
2.1.212 (July 17, 2026)
/forknow copies your conversation into a new background session (its own row inclaude agents) while you keep working; the in-session subagent it used to launch is now/subtask- Added
claude auto-mode resetto restore the default auto-mode configuration, with a confirmation prompt (pass--yesto skip) - Added a session-wide limit on WebSearch tool calls (default 200, tunable via
CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION) to stop runaway search loops - Added a per-session cap on subagent spawns (default 200, override with
CLAUDE_CODE_MAX_SUBAGENTS_PER_SESSION) to stop runaway delegation loops;/clearresets the budget - MCP tool calls running longer than 2 minutes now move to the background automatically so the session stays usable; configure the threshold or disable with
CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS - Typing
/resumein the agent view now opens a picker of past sessions, including sessions deleted from the list, and resumes your pick as a background session - Fixed plan mode auto-running file-modifying Bash commands (e.g.
touch,rm) without a permission prompt or SDKcanUseToolcallback - Fixed worktree creation following a repository-committed symlink at
.claude/worktrees, which could create files outside the repository - Fixed a
continue:falsehook's halt being dropped when the tool fails or completes mid-stream, and hook infrastructure errors being misreported as user rejections - Fixed SIGTERM during a running Bash tool orphaning the command's process tree in print/SDK mode; the CLI now aborts the turn, kills the tree, and exits 143
- Fixed
/backgroundandclaude --bgfailing with "EUNKNOWN: unknown error, uv_spawn" on Windows when Group Policy blocks PowerShell 5.1; the daemon now prefers PowerShell 7 - Fixed shell mode (
!) not executing commands containing file paths while the path autocomplete popup was open - Fixed auto-mode denial notifications rendering broken characters when a long denial reason was truncated mid-emoji
- Fixed Ctrl+J not inserting a newline in the agent view dispatch input on terminals with extended key reporting, and surfaced the newline shortcut in the
?help overlay - Fixed
/ultrareviewrejecting PR references like#123,PR 123, and pasted PR URLs; error hints now name the command you actually typed - Fixed
/ultrareview <branch>not fetching the branch from origin when it exists remotely; it now suggests the closest branch name on typos - Fixed
/ultrareviewskipping the billing confirmation in a new conversation after/clear - Fixed
/ultrareview's "not a git repository" error on Claude Desktop now suggesting the project's repository folder instead of terminal commands - Fixed hosted (host-managed) sessions failing at startup when repository settings configured mTLS certs, extra CA bundles, or OAuth scopes; these transport settings are now ignored with a warning
- Fixed a spurious "File has not been read yet" error when editing a file that had been read with offset/limit before resuming a session
- Fixed
ExitWorktreefailing with "no active EnterWorktree session" after resuming a session with--continue/--resumein print/SDK mode - Fixed the workflow agent grid staying empty for Remote Control clients that join a session mid-run
- Fixed streaming-mode control requests being marked complete before their handler finished, which could lose the request on session restart
- Fixed background sessions created with
/forklosing their live-parent protection after a state write failure - Fixed reopening a stopped background session from the agent view failing silently; it now resumes the session, or shows why it can't and lets you force a restart
- Fixed agent teams: a stopping teammate could send the leader duplicate idle notifications when team initialization re-ran within a session
- Fixed the plan-approval dialog footer splitting "ctrl+g to edit in
" apart when the file path is long - Fixed the welcome banner keeping its old panel widths after a combined width+height terminal resize in fullscreen mode
- Fixed diff previews losing their line numbers and +/- markers in narrow layouts
- Fixed @-mentions attaching nothing after a partial file read, plugin uninstall targeting the wrong marketplace, and false "Command timed out" on exit code 143
- Fixed OpenTelemetry HTTP exports being rejected with 411/400 by Azure Monitor and other endpoints that don't accept chunked transfer encoding
- Fixed OTLP event log records missing
trace_id/span_idwhenTRACEPARENTis set in SDK/headless mode - Fixed conversations with many images incorrectly failing with "Request too large" errors, and improved the error message to explain the actual cause
- Fixed web search and web fetch returning "API Error" text as search results or page content when the API was overloaded
- Improved web search and web fetch reliability by retrying 529 errors and rate-limited requests with bounded backoff
- Improved prompt caching: the mid-conversation system block now works behind LLM gateways and custom base URLs (Bedrock, Vertex, 1P)
- Improved background agent attach: cold-attaching now instantly shows the formatted transcript while the session boots, instead of a blank wait
- Reduced token usage in inter-agent messaging:
SendMessagebodies are no longer duplicated into replayed history and tool results - Changed
/forkto name the copy after your prompt when the session has no title, so the row is recognizable in the agent view - Changed bare
/btwto reopen the side-question panel on your most recent exchange so you can browse earlier answers - Changed the
←footer hint to pulseN donefor a moment when a background agent finishes while nothing needs your input - Deprecated the Task tool's
modeparameter (now ignored); subagents inherit the parent session's permission mode by default - Changed Enterprise
forceLoginMethodto be enforced for VS Code extension, SDK,setup-token, andinstall-github-applogins, not just the terminal - Changed session transcripts to record the reasoning effort level on each assistant message
- Changed headless/SDK sessions to apply a
set_modelcontrol request mid-turn; the next model round-trip uses the new model instead of waiting for the next turn - Changed agent view /
claude agents --json: sessions waiting on a sandbox, MCP-input, or managed-settings prompt now show as "Needs input" instead of "Working" - Updated the auth status panel title from "Cloud authentication" to "Authentication"
- Corrected an earlier release note (2.1.200): tmux through the 3.6 series lacks synchronized output; newer tmux with support is detected automatically
2.1.211 (July 17, 2026)
- Added
--forward-subagent-textflag andCLAUDE_CODE_FORWARD_SUBAGENT_TEXTenvironment variable to include subagent text and thinking in stream-json output - Fixed permission previews relayed to chat channels not neutralizing bidirectional-override, zero-width, and look-alike quote characters, so tool inputs cannot visually alter the approval message
- Fixed auto mode overriding a PreToolUse hook's
askdecision for unsandboxed Bash; a hookasknow floors the decision at a prompt - Fixed parallel Claude Code sessions all logging out simultaneously after wake-from-sleep when many sessions share one credential store
- Fixed plugin MCP servers not reconnecting after an idle web session woke, leaving MCP calls failing until the next message
- Fixed Claude Code on Vertex and Bedrock attempting the default Opus model at startup and printing a spurious fallback notice when a model is explicitly configured
- Fixed subagents spawned with an explicit model override reverting to the parent's model when resumed or sent a follow-up message
- Fixed nested
.claude/rules/*.mdfiles loading even when setting sources exclude project settings - Fixed file upload validation: filenames ending in a DOS device suffix (
.prn) or trailing dot are now accepted, and files with multiple hard links are refused - Fixed file uploads to Claude in Chrome from remote and CLI sessions
- Fixed edits that leave the input as "?" being silently swallowed and toggling the shortcuts panel
- Fixed a startup hang when the Claude in Chrome extension is enabled but Chrome is not running
- Fixed a 300ms delay revealing async content (Settings tabs, Stats, diff views, and other loading states)
- Fixed reopening a just-stopped background session from the agents view starting a blank conversation under the same session id
- Fixed
/loophiding the session from/resumeafter a single use - Fixed screen reader users losing the audible terminal bell after
/terminal-setupor onboarding terminal setup - Fixed background jobs on LLM gateway auth (
ANTHROPIC_AUTH_TOKEN+ANTHROPIC_BASE_URL) coming back "Not logged in" after the daemon respawns them - Fixed
claude agentsjobs becoming permanently undeletable when git no longer recognizes their worktree; the row now shows why the delete was refused instead of silently reappearing - Fixed
/clearnot resetting the session cost counter; the statusline's cost now starts at $0 after/clear - Fixed Claude in Chrome setup pages failing to open in the browser on Windows
- Fixed headless print-mode sessions on Windows crashing or silently exiting when stdin is unreadable
- Fixed background session titles in the agents view showing the naming model's refusal text when the prompt contains a link
- Fixed background agents killed by the user auto-respawning, and revived agents re-running stale prompts from old sessions
- Fixed routines with no schedule reporting a next run time in the year 1
- Hardened synced skill/plugin directory naming on Windows and kept CCR web fetch/search proxies working after
/clear - Improved terminal layout and rendering performance
- Improved background agent result reporting; Claude now reports the status of still-running agents and waits for the real completion instead of fabricating results
- Improved the memory index over-limit warning to measure only loaded content, excluding frontmatter and HTML comments
- Updated integer environment variables (timeouts, token budgets, retry counts) to accept scientific notation and digit-separator spellings like
1e6and64_000 - Updated documentation links to the current docs sites
- Changed "always allow" permission rules to save at the repository root, so approvals granted in a git worktree persist across sessions and worktrees
- Changed
/usage-creditsto ask for confirmation before sending a request to organization admins - Changed Vim mode
sandS(substitute char/line) to work in NORMAL mode, matching vim behavior - [VSCode] Updated the Remote Control banner to describe what it does
- Claude in Chrome: hardened file-upload path validation
- Claude in Chrome:
save_to_diskon screenshot actions now writes the image to disk and returns the path; previously it did nothing - Fixed a prompt-caching regression on Bedrock, Vertex, Mantle, and Foundry that billed the trailing system context block as fresh input tokens on every request.
2.1.210 (July 17, 2026)
- Added a live elapsed-time counter to the collapsed tool summary line so long-running tool calls visibly tick instead of looking stuck
- Added a startup warning for
Write(path),NotebookEdit(path), andGlob(path)permission rules; useEdit(path)orRead(path)instead - Fixed
isolation: 'worktree'subagents being able to run git-mutating commands against the main repo checkout instead of their own isolated worktree - Fixed the
ultracodekeyword opt-in firing on non-human-originated input such as webhook payloads and relayed PR comments - Fixed a rendered text fragment leaking into crash telemetry when a UI component returned content outside a styled text element
- Fixed paste markers leaking into external editors opened from Claude Code, which could appear as stray characters around pasted text
- Fixed
claude attachsometimes failing with "job not found" or "agent is still starting" errors during session transitions; attach now waits for the daemon to settle, and terminal resizes during a slow attach are applied once it completes - Fixed a session crash when a tool's result renderer returned a numeric bigint value or plain text instead of a UI element
- Fixed a hook callback timeout being misreported to the model as a user rejection, which made unattended sessions stop and wait
- Fixed Claude assuming a
cdtook effect after its command was moved to the background; the tool result now states the working directory is unchanged - Fixed plugin-provided MCP servers being torn down when MCP servers are re-synced mid-session
- Fixed plan approvals without edits being labeled "(edited by user)" and overwriting the plan file with a stale snapshot
- Fixed
/doctorskipping its auto-mode-default proposal on Bedrock, Vertex, and Foundry, where auto mode no longer needs an opt-in - Fixed Grep content mode claiming "No matches found" when paginating past the end of results
- Fixed unmatched
$1/$2positional placeholders in skills and commands being silently stripped; they are now preserved verbatim - Fixed plugin cache writes leaving temp files behind on failure and failing on locked-file renames on Windows and network filesystems
- Fixed background workers crash-looping when a client resets its connection to the background service
- Fixed
claude agents --effort ultracodenot reaching dispatched sessions; the value was silently dropped - Fixed pressing ← to open the agents view dropping the task tracker when returning to the session
- Fixed the agents dashboard retaining pasted images from abandoned reply drafts after their session was deleted
- Fixed killed background sessions leaving a permanent
git worktree lockbehind; the periodic sweep now releases locks whose owning process is gone - Fixed SDK MCP servers registered via an
initializecontrol request waiting until the next turn to start connecting - Fixed returning to the agents view from a session leaving overlapping ghost frames with
CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN=1 - Fixed late-appearing
.claude/*symlinks not being reconciled into the sandbox deny-write list - Hardened the Agent tool against indirect prompt injection via content a subagent read
- Improved the Bash/PowerShell tool message when a command hits its timeout and is auto-backgrounded, so the model can distinguish a hang from an explicit background request
- Improved auto mode: the permission classifier now defaults to Sonnet 5 for external sessions, validated on the session's first request and pinned for the session
- Improved the bundled dataviz skill's chart color validation with perceptual OKLab color difference and recalibrated color-blindness thresholds
- Memory writes that leave a MEMORY.md index over its read limit now produce an explicit error instead of silent truncation
- Screen reader mode now announces permission mode changes aloud when cycling modes with Shift+Tab
- The agents footer hint now shows how many background agents are waiting on your input, with a brief color emphasis when the count changes
- Agent view: the session you pressed ← from stays visibly marked even after mouse hover or arrow keys move the selection
- Fable temporarily shows as unavailable in the advisor picker while a server-side issue causing Fable advisor failures is fixed
2.1.209 (July 17, 2026)
- Fixed /model and other dialogs being blocked in
claude agentsbackground sessions (reverts an overly broad guard)
Notes
/fork is now a background-session copy, not an in-session subagent
This is a semantic rename, not a feature addition. Before 2.1.212, /fork spawned a subagent inside your current session. Now it copies the entire conversation into a new background session (visible in claude agents). The old behavior lives on as /subtask. If you have scripts, muscle memory, or documentation referencing /fork as a quick in-session delegation, update them to /subtask.
Session-wide caps close the runaway-loop gap
Earlier versions added per-workflow agent caps and per-pipeline item limits, but nothing stopped a top-level session from spawning unbounded searches or subagents across turns. The new 200-call defaults for CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION and CLAUDE_CODE_MAX_SUBAGENTS_PER_SESSION close that gap. Both reset on /clear, so a stuck session can recover without restarting. If you run large research workflows or deep-research sessions that legitimately exceed 200 searches, set the env var higher before launching.
Plan mode permission gap
Plan mode is meant to be read-only, letting you review before approving. But file-modifying Bash commands like touch and rm were slipping through without a prompt, and SDK sessions with a canUseTool callback were not consulted either. This was an enforcement gap, not a feature. If you were using plan mode as a safety net for unattended sessions, the fix makes that assumption valid again.
Worktree isolation was not fully isolated
2.1.210 fixes isolation: 'worktree' subagents running git-mutating commands against the main checkout instead of their worktree. This is the second worktree-isolation fix in recent releases (2.1.203 fixed worktree-isolated subagents running shell commands in the parent). If you rely on worktree isolation for parallel editing (workflows, multi-agent codegen), these fixes matter for correctness.