claudekit / updates / claude-code-2-1-203
[ PATCH · ]

Claude Code 2.1.203

This release focuses on background agent and session reliability. Background sessions that became permanently unresponsive when the daemon's session token went stale now recover automatically, returning to claude agents no longer silently stops running subagents or re-runs the prompt from scratch, and background agents no longer inherit a stale PATH or drop a shell-exported ANTHROPIC_BASE_URL, which had caused missing tools and 401 errors. Git worktree isolation also improves — Bash no longer fails in repos with many worktrees and worktree-isolated subagents run in their own checkout — alongside a new login-expiry warning and a grey ⏸ badge for manual permission mode.

Official announcement →

This article is a summary based on official documentation.

What changed

Claude Code 2.1.203 shipped on July 7, 2026. Most of this release lands on background agent and session reliability: sessions that went unresponsive or silently dropped their in-progress work, and sessions that failed after inheriting a stale environment (PATH, ANTHROPIC_BASE_URL) from the daemon, are now fixed, along with a batch of git worktree isolation regressions. A few small conveniences — a login-expiry warning and a manual permission mode indicator — are added too.

New features

  • Login-expiry warning

    When your login expired, background sessions were interrupted without notice. A warning now appears when your login is about to expire, so you can re-authenticate before background sessions are interrupted.

  • Grey ⏸ badge for manual permission mode

    It wasn’t obvious at a glance whether you were in manual permission mode. A grey ⏸ badge now shows in the footer when in manual permission mode, making the active mode always visible.

  • Additional working directories in MCP roots/list

    MCP servers had no way to see a session’s additional working directories. The session’s additional working directories are now added to MCP roots/list, with notifications/roots/list_changed sent when the set changes.

  • [VS Code] Toggle for Remote Control on all sessions

    There was no setting to enable Remote Control across every session in VS Code. A Settings toggle for “Enable Remote Control for all sessions” has been added.

Key improvements

  • More responsive while long responses stream

    While a long response streamed, live-preview updates re-rendered the whole screen. Live-preview updates no longer re-render the whole screen, keeping the session responsive during streaming.

  • Context-usage indicator no longer re-analyzes the transcript every turn

    In interactive sessions, the context-usage indicator re-analyzed the entire transcript after every turn, causing a memory and per-turn CPU regression. It no longer re-analyzes the entire transcript after every turn.

  • Less re-delegation from subagents

    Subagents sometimes re-delegated their entire task to another subagent. Agents are now less likely to re-delegate their entire task.

  • ~7 MB smaller binary and startup memory

    A large bundled dependency was inlined, inflating both the binary and startup memory. Loading it lazily instead of inlining it reduces binary size by ~7 MB and startup memory by ~7 MB.

  • Left arrow no longer closes detail views

    The left arrow closed the background tasks, diff, and workflow detail views, making it easy to leave a view by accident. Left arrow no longer closes them — press Esc instead.

  • Organized empty claude agents view

    The empty claude agents view showed no structure. It now always shows the organized sections (Needs input / Working / Completed) with descriptions.

  • Startup warnings moved to /doctor and /status

    The “claude command missing or broken” warnings appeared on startup every time. They’ve been removed from startup and now appear in /doctor and /status instead.

  • Redundant claude agents footer hint removed

    A redundant navigation hint in the claude agents footer has been removed.

Bug fixes

Background agents and sessions

  • Background sessions becoming permanently unresponsive to attach, replies, and stop when the daemon’s session token went stale — the session now recovers automatically.
  • Returning to claude agents silently stopping running subagents and re-running the prompt from scratch — their work now carries over.
  • Opening or switching background agent sessions on macOS stalling for 15–20 seconds due to a false low-memory detection (regression in 2.1.196). Fixed.
  • Background agents inheriting a stale PATH from the daemon instead of the dispatching shell, causing missing tools on Windows. Fixed.
  • Background and agent-view sessions dropping a shell-exported ANTHROPIC_BASE_URL, which sent API keys to the default endpoint and failed with 401. Fixed.
  • Background agents crash-looping when their working directory was deleted, replaced by a file, or became an invalid path — they now fail once with a clear error.
  • A background daemon auto-upgrade failure silently killing all running background sessions. Fixed.
  • TaskStop and TaskOutput failing to find background agents spawned by another agent — errors now list running agents by id and description.
  • Background sessions ignoring effortLevel changes in settings.json when forked through the daemon. Fixed.
  • Attached background sessions ignoring CLAUDE_CODE_DISABLE_MOUSE and CLAUDE_CODE_DISABLE_MOUSE_CLICKS opt-outs. Fixed.
  • The claude agents composer discarding your typed message when a slash command isn’t available there. Fixed.
  • The agent list crashing when opening a stopped session whose conversation was already open in another session. Fixed.
  • Background sessions showing “Needs input” in the agent list after the question was already answered. Fixed.
  • Background agent startup failures showing only “exit_with_message” instead of the actual error. Fixed.
  • /exit incorrectly warning about running background agents after all named agents had completed. Fixed.
  • Background task output on Windows being permanently replaced by an empty file after /clear. Fixed.

Git worktree isolation

  • Bash failing with “argument list too long” in repos with many git worktrees. Fixed.
  • Worktree-isolated subagents sometimes running shell commands in the parent checkout instead of their own worktree. Fixed.
  • Worktree creation rejecting nested repositories in multi-repo workspaces, leaving background sessions unable to isolate and edit. Fixed.
  • Background sessions started from a non-git directory unable to edit files when a WorktreeCreate hook was configured. Fixed.
  • The @ directory picker in claude agents not showing registered git worktrees. Fixed.

Terminal and display

  • Content jumping when scrolling up through long transcript history. Fixed.
  • The terminal flickering and jumping while typing in bash mode when a shell-history suggestion was shown. Fixed.
  • Literal ^[[I / ^[[O escape codes being printed when reattaching to a background session. Fixed.

Plugins

  • LSP-only plugins being incorrectly flagged for disuse when their language servers deliver diagnostics or answer navigation requests. Fixed.

Notes

  • Left arrow → Esc — The background tasks, diff, and workflow detail views no longer close on left arrow. Press Esc to leave a view.
  • Startup warnings relocated — The “claude command missing or broken” warnings no longer appear on startup; check /doctor and /status instead. A missing warning doesn’t mean the problem is gone, so run /doctor if you suspect a broken install.
  • Use the login-expiry warning — If you run background sessions for a long time, re-authenticate when the login-expiry warning appears to keep them from being interrupted.
  • Re-check background sessions that rely on shell env vars — If you export ANTHROPIC_BASE_URL or PATH in your shell, this fix passes them through to background sessions correctly. If you hit 401 errors or missing tools before, they should be resolved after updating.