2.1.144 untested · changelog-derived

Claude Code 2.1.144

**`/resume` for background sessions** — unified control plane for resuming background work. Sessions started via `claude --bg` or agent view now appear alongside interactive ones in a single picker, marked with `bg` badge. Critical for multi-session orchestration: agents can spawn background work and return to resume it later without context loss.

7 new primitives 3 workflow recipes 43 fixes

New primitives

/resumecommand

Resume background sessions alongside interactive ones, marked with `bg`

Added `/resume` support for background sessions — sessions started via `claude --bg` or agent view now appear alongside interactive ones, marked with `bg`
Elapsed duration in completion notificationscapability

Background subagent completion notifications now display elapsed time (e.g. "Agent completed · 3h 2m 5s")

Added elapsed duration to background subagent completion notifications (e.g. "Agent completed · 3h 2m 5s")
/plugin last-updated displaycapability

The `/plugin` browse and discover panes show when each plugin was last updated

The `/plugin` browse and discover panes now show when a plugin was last updated
/model session-only modecommand enhancement

`/model` now changes model for current session only; press `d` to set default for new sessions

/`model` now changes the model for the current session only; press `d` in the model picker to set a default for new sessions
/usage-creditscommand

Renamed from `/extra-usage`; old name still works for backward compatibility

Renamed "extra usage" to "usage credits" across CLI copy; `/extra-usage` is now `/usage-credits` (old name still works)
/bg preserves /add-dircommand enhancement

Background sessions now retain directories added via `/add-dir` across detach/reattach

`/bg` and `←`-detach now preserve directories added via `/add-dir`
/doctor exec-form hintcommand enhancement

`/doctor` now shows exec-form example when a command hook is missing the `command` field

``/doctor` now shows an exec-form example when a command hook is missing the `command` field

Workflow recipes

Async Research + Resume
/resume + elapsed duration display + /model session-only isolation

Long-running research tasks (deep searches, data synthesis, report generation) can now be spawned in background sessions with explicit model choice, detached, and resumed later with full context—returning agents see both the result and the wall-clock time spent, enabling resource-aware orchestration.

A parent agent spawns a background research session via claude --bg --name "research:earnings-patterns" with /model Opus (1M context) locked to that session. The agent detaches immediately. Later, another agent calls /resume, picks the research session, and examines the report plus the elapsed duration (e.g., "Completed · 2h 47m"). The parent orchestrator can then decide: use the report, spawn a follow-up refinement task, or route to a summary agent based on time investment and quality.

Multi-Model Cascade with Session Binding
/model session-only + /resume + background isolation

Route tasks to model-specific sessions without global state pollution. Haiku sessions handle intake/routing, Opus sessions handle deep reasoning, and Claude 3.5 Sonnet sessions handle code generation—all coexist, all resumable, all keeping their own model choice locked.

Agent spawns three background sessions with fixed models: --name "intake:haiku" (Haiku), --name "reason:opus" (Opus), --name "code:sonnet" (Sonnet). Work items are queued to the correct session by name via /resume picker. When an agent attaches to "reason:opus" and calls /model, the change affects only that session; "intake:haiku" and "code:sonnet" remain untouched. This decouples model selection from the control plane and enables true parallel, isolated reasoning pipelines.

Distributed Telemetry via Duration Badges
Elapsed duration display + /resume + background completion notifications

Agent orchestrators can now inspect wall-clock time alongside outputs, enabling cost-to-outcome and resource-allocation reasoning. Background completion notifications (e.g., "Agent completed · 3h 2m 5s") become telemetry signals for routing decisions.

A workflow coordinator spawns background analysis tasks for multiple data sources. As each completes, the notification includes elapsed time. The coordinator collects these durations: if any task runs over a threshold (e.g., > 1h), it flags the result for human review; if all finish under 30m, it auto-routes the full batch to downstream synthesis. Duration becomes a first-class decision signal, not a side comment.

Agentic relevance

2.1.144 prioritizes **background session lifecycle and model isolation**. The `/resume` command enables agents to spawn work via `claude --bg`, detach, and cleanly reattach—critical for long-lived orchestration. Session-scoped `/model` selection prevents background tasks from hijacking model choices, reducing context drift. Combined with `/add-dir` preservation and elapsed-duration telemetry, agents now have primitives for multi-session work graphs and transparent duration tracking across parallel tasks.

Hardening & fixes (43)

  • Fixed startup hanging up to 75s when `api.anthropic.com` is unreachable (captive portal, firewall, VPN issues) — side-channel API calls now time out after 15s
  • Fixed garbled terminal output after a missed window-resize event; now self-heals on the next frame instead of requiring Ctrl+L
  • Fixed progressive terminal display corruption (stale/garbled glyphs) in very long sessions
  • Reduced terminal rendering glitches in VS Code by reducing spinner animation color count
  • Fixed macOS background sessions crashing with "exit 1 before init" when the project lives under a Full Disk Access-protected folder (regression in 2.1.143)
  • Fixed unrecoverable conversation when reading a file whose image extension doesn't match its contents; now falls back to text
  • Fewer spurious tool errors during search: `head`/`tail` file views now satisfy read-before-edit check; "no matches" from `egrep`, `fgrep`, `git grep`, or `git diff` no longer reported as command failure
  • Fixed `/branch` failing with "No conversation to branch" after entering a worktree or in background sessions
  • Fixed Escape in AskUserQuestion notes field aborting the turn instead of returning to answer selection
  • Fixed model selection not applying when changed via IDE model picker or `applyFlagSettings` after startup
  • Resumed sessions now keep their model instead of picking up another session's choice
  • Fixed Bedrock and Vertex users unable to select "Opus (1M context)" from `/model` picker (regression in v2.1.129)
  • Fixed remote-session login failing with "Can't access this organization" for users with `forceLoginMethod` and `forceLoginOrgUUID` set
  • Fixed MCP servers with paginated `tools/list` responses only returning first page
  • Fixed MCP images with unsupported MIME types (e.g. SVG) breaking conversation; now saved to disk and referenced
  • Fixed file descriptor exhaustion when a build runs inside a skill directory
  • Fixed session title being generated from plugin monitor output instead of user's first prompt
  • Fixed Skill tool failing with permission error in headless mode (regression in v2.1.141)
  • Fixed plugins showing "not cached" errors after first load on fresh machine
  • Fixed `claude mcp list` silently reporting no servers when `.mcp.json` can't be parsed; now shows configuration errors
  • Fixed background side-queries on custom `ANTHROPIC_BASE_URL` and Bedrock Mantle not using Haiku
  • Fixed scrolling in attached background sessions on Windows — PgUp/PgDn, mouse wheel, and Ctrl+O now work
  • Fixed crash when closing terminal while attached to a background session
  • Fixed Windows: pressing ← in `claude agents` leaving list unresponsive to keyboard input
  • Fixed ghost characters at left edge when switching panes in Agent View on Windows Terminal with CJK content
  • Fixed Edit/Write refusing right after detaching a session that was already editing in place
  • Fixed `claude respawn <id>` on stopped background session showing "stopped" instead of running
  • Fixed `/resume` picker not showing sessions forked from a background session
  • Fixed opening a session from `claude agents` or running `claude logs <id>` hanging when background service unresponsive; now times out after 10s
  • Fixed background Bash tasks spawned by subagents staying "Running" in SDK task panels after process exits
  • Fixed completed or stopped background sessions being permanently marked as startup crash
  • Fixed markdown links in `claude agents` attached sessions rendering as plain text
  • Fixed custom `spinnerVerbs` applying to post-turn duration message
  • Improved `claude agents` / `--bg` rejection messages to name specific gate instead of generic message
  • `claude --bg --name <label>` now echoes the name in post-spawn confirmation
  • `claude agents`: renaming background session with Ctrl+R now updates attached session's banner immediately
  • Background session worktree isolation guard now applies for non-git VCS users with `WorktreeCreate` hooks configured
  • Plugin marketplace add/update now respects `CLAUDE_CODE_PLUGIN_PREFER_HTTPS`
  • `/plugin` now returns to Installed list after enabling, disabling, or uninstalling a plugin
  • Skill-listing truncation no longer shown as startup notification; run `/doctor` for full breakdown
  • Improved recovery from rare pre-response stream stalls — now retries streaming once
  • Improved SDK/headless MCP startup: pre-wait now overlaps startup instead of blocking (up to 2s faster with slow MCP servers)
  • Post-survey follow-up hint now appears after every non-dismiss survey response with context-aware copy

Raw changelog

## 2.1.144

- Added `/resume` support for background sessions — sessions started via `claude --bg` or agent view now appear alongside interactive ones, marked with `bg`
- Added elapsed duration to background subagent completion notifications (e.g. "Agent completed · 3h 2m 5s")
- The `/plugin` browse and discover panes now show when a plugin was last updated
- `/model` now changes the model for the current session only; press `d` in the model picker to set a default for new sessions
- Renamed "extra usage" to "usage credits" across CLI copy; `/extra-usage` is now `/usage-credits` (old name still works)
- Fixed startup hanging up to 75s when `api.anthropic.com` is unreachable (captive portal, firewall, VPN issues) — side-channel API calls now time out after 15s
- Fixed garbled terminal output after a missed window-resize event (e.g. dragging a VS Code split-pane divider) — now self-heals on the next frame instead of requiring Ctrl+L
- Fixed progressive terminal display corruption (stale/garbled glyphs) that could appear in very long sessions and only cleared on terminal resize or restart
- Reduced terminal rendering glitches in VS Code by reducing spinner animation color count
- Fixed macOS background sessions crashing with "exit 1 before init" when the project lives under a Full Disk Access-protected folder (regression in 2.1.143)
- Fixed an unrecoverable conversation when reading a file whose image extension doesn't match its contents (e.g. HTML saved as .png) — now falls back to text
- Fewer spurious tool errors during search: `head`/`tail` file views now satisfy the read-before-edit check, and a "no matches" result (exit code 1) from `egrep`, `fgrep`, `git grep`, or `git diff` is no longer reported as a command failure
- Fixed `/branch` failing with "No conversation to branch" after entering a worktree or in some background sessions
- Fixed pressing Escape in the AskUserQuestion notes field aborting the turn instead of returning to answer selection
- Fixed model selection not applying when changed via the IDE model picker or `applyFlagSettings` after startup
- Resumed sessions now keep the model they were using instead of picking up another session's `/model` choice
- Fixed Bedrock and Vertex users unable to select "Opus (1M context)" from the `/model` picker (regression in v2.1.129)
- Fixed remote-session login failing with "Can't access this organization" for users with `forceLoginMethod` and `forceLoginOrgUUID` set
- Fixed MCP servers with paginated `tools/list` responses only returning the first page, silently dropping tools
- Fixed MCP images with unsupported MIME types (e.g. SVG) breaking the conversation — now saved to disk and referenced in the tool result
- Fixed file descriptor exhaustion when a build runs inside a skill directory — non-`.md` files no longer trigger skill reloads
- Fixed session title being generated from plugin monitor output instead of the user's first prompt
- Fixed Skill tool failing with permission error in headless mode (regression in v2.1.141)
- Fixed plugins enabled in your own settings showing "not cached" errors after first load on a fresh machine; plugins enabled only by a project's `.claude/settings.json` now show an actionable `claude plugin install` hint
- Fixed `claude mcp list` silently reporting no servers when `.mcp.json` can't be parsed (e.g. using VS Code's `"servers"` key instead of `"mcpServers"`) — now shows configuration errors
- Fixed background side-queries on custom `ANTHROPIC_BASE_URL` setups and Bedrock Mantle not using Haiku — now falls back correctly when a first-party API key is configured or no Haiku model is set
- Fixed scrolling in attached background sessions on Windows — PgUp/PgDn, mouse wheel, and Ctrl+O transcript navigation now work
- Fixed a crash when closing the terminal while attached to a background session
- Fixed on Windows, pressing ← in `claude agents` leaving the list unresponsive to keyboard input
- Fixed ghost characters at the left edge when switching panes in Agent View on Windows Terminal with CJK content
- `/bg` and `←`-detach now preserve directories added via `/add-dir`
- Fixed Edit/Write refusing with "background session hasn't isolated its changes yet" right after detaching a session that was already editing in place
- Fixed `claude respawn <id>` on a stopped background session showing "stopped" instead of running
- Fixed `/resume` picker not showing sessions forked from a background session
- Fixed opening a session from `claude agents` or running `claude logs <id>` hanging when the background service is unresponsive — now times out after 10s with a recovery hint
- Fixed background Bash tasks spawned by subagents staying "Running" in SDK task panels after the process exits
- Fixed completed or stopped background sessions briefly failing to wake being permanently marked as a startup crash
- Fixed markdown links in `claude agents` attached sessions rendering as plain text instead of clickable hyperlinks
- Fixed custom `spinnerVerbs` applying to the post-turn duration message — past-tense built-ins like "Worked for 5s" are restored there
- `claude agents` / `--bg` rejection messages now name the specific gate (non-TTY, env var, or setting) instead of a generic message
- `claude --bg --name <label>` now echoes the name in the post-spawn confirmation
- `claude agents`: renaming a background session with Ctrl+R now updates the attached session's banner immediately
- Background session worktree isolation guard now applies for non-git VCS users with `WorktreeCreate` hooks configured
- Plugin marketplace add/update now respects `CLAUDE_CODE_PLUGIN_PREFER_HTTPS`
- `/plugin` now returns to the Installed list after enabling, disabling, or uninstalling a plugin
- `/doctor` now shows an exec-form example when a command hook is missing the `command` field
- Skill-listing truncation is no longer shown as a startup notification — run `/doctor` for the full breakdown
- Improved recovery from rare pre-response stream stalls — now retries streaming once instead of falling back to a slower non-streaming request
- Improved SDK/headless MCP startup: pre-wait now overlaps startup instead of blocking before the first turn (up to 2s faster with slow MCP servers)
- The post-survey follow-up hint now appears after every non-dismiss survey response with context-aware copy, making it easier to share more detail via /feedback.