← All briefs
Matins
119 changes / 5 actionable / 4 deep dives
Claude Code
  • /fork now 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_SESSION and CLAUDE_CODE_MAX_SUBAGENTS_PER_SESSION; /clear resets 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_MS or 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)

  • /fork now copies your conversation into a new background session (its own row in claude agents) while you keep working; the in-session subagent it used to launch is now /subtask
  • Added claude auto-mode reset to restore the default auto-mode configuration, with a confirmation prompt (pass --yes to 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; /clear resets 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 /resume in 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 SDK canUseTool callback
  • Fixed worktree creation following a repository-committed symlink at .claude/worktrees, which could create files outside the repository
  • Fixed a continue:false hook'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 /background and claude --bg failing 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 /ultrareview rejecting 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 /ultrareview skipping 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 ExitWorktree failing with "no active EnterWorktree session" after resuming a session with --continue/--resume in 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 /fork losing 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_id when TRACEPARENT is 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: SendMessage bodies are no longer duplicated into replayed history and tool results
  • Changed /fork to name the copy after your prompt when the session has no title, so the row is recognizable in the agent view
  • Changed bare /btw to reopen the side-question panel on your most recent exchange so you can browse earlier answers
  • Changed the footer hint to pulse N done for a moment when a background agent finishes while nothing needs your input
  • Deprecated the Task tool's mode parameter (now ignored); subagents inherit the parent session's permission mode by default
  • Changed Enterprise forceLoginMethod to be enforced for VS Code extension, SDK, setup-token, and install-github-app logins, 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_model control 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-text flag and CLAUDE_CODE_FORWARD_SUBAGENT_TEXT environment 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 ask decision for unsandboxed Bash; a hook ask now 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/*.md files 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 /loop hiding the session from /resume after a single use
  • Fixed screen reader users losing the audible terminal bell after /terminal-setup or 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 agents jobs becoming permanently undeletable when git no longer recognizes their worktree; the row now shows why the delete was refused instead of silently reappearing
  • Fixed /clear not 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 1e6 and 64_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-credits to ask for confirmation before sending a request to organization admins
  • Changed Vim mode s and S (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_disk on 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), and Glob(path) permission rules; use Edit(path) or Read(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 ultracode keyword 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 attach sometimes 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 cd took 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 /doctor skipping 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/$2 positional 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 ultracode not 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 lock behind; the periodic sweep now releases locks whose owning process is gone
  • Fixed SDK MCP servers registered via an initialize control 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 agents background 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.