Claude Code 2.1.144: Background Sessions, Terminal Fixes, MCP Improvements
Claude Code 2.1.144 fixes critical startup hangs, terminal rendering corruption, and MCP tool pagination. Background sessions now appear in /resume with elapsed duration. Model selection is now per-session. 40+ fixes and improvements.
TL;DR
- Background sessions now appear in `/resume` and show elapsed duration on completion
- Fixed 75s startup hangs when API is unreachable; terminal rendering corruption in long sessions
- Model selection now per-session; `/model` changes don't affect other sessions or defaults
- MCP pagination, image handling, and paginated tool lists now work correctly
New
- /resume support for background sessions — sessions started via `claude --bg` or agent view now appear alongside interactive ones, marked with `bg`
- Elapsed duration in background notifications — subagent completion messages now show elapsed time (e.g. "Agent completed · 3h 2m 5s")
- Plugin last-updated timestamps — `/plugin` browse and discover panes now display when each plugin was last updated
- Per-session model selection — `/model` now changes the model for the current session only; press `d` in the model picker to set a default for new sessions
- Usage credits terminology — renamed "extra usage" to "usage credits" across CLI copy; `/extra-usage` is now `/usage-credits` (old name still works)
Fixed
- 75s startup hangs on unreachable API — side-channel API calls now time out after 15s instead of blocking when `api.anthropic.com` is unreachable (captive portal, firewall, VPN)
- Terminal output garbling after window resize — missed resize events no longer require Ctrl+L to fix; terminal now self-heals on the next frame
- Progressive terminal corruption in long sessions — stale/garbled glyphs that accumulated in very long sessions and only cleared on resize or restart are now prevented
- Terminal rendering glitches in VS Code — reduced spinner animation color count to minimize visual artifacts
- macOS background session crashes — fixed "exit 1 before init" crash when project lives under Full Disk Access-protected folder (regression in 2.1.143)
- File type mismatch handling — reading files with mismatched extensions (e.g. HTML saved as .png) no longer breaks conversations; now falls back to text
- Spurious tool errors during search — `head`/`tail` file views now satisfy read-before-edit checks; "no matches" from `egrep`, `fgrep`, `git grep`, `git diff` no longer reported as failures
- /branch in worktrees and background sessions — fixed "No conversation to branch" error after entering a worktree or in some background sessions
- Escape key in AskUserQuestion notes — pressing Escape now returns to answer selection instead of aborting the turn
- Model selection via IDE picker — fixed model changes not applying when changed via IDE model picker or `applyFlagSettings` after startup
- Resumed session model persistence — sessions now keep their original model instead of picking up another session's `/model` choice
- Bedrock/Vertex Opus selection — fixed inability to select "Opus (1M context)" from `/model` picker (regression in v2.1.129)
- Remote-session login with forced settings — fixed "Can't access this organization" error for users with `forceLoginMethod` and `forceLoginOrgUUID` set
- MCP paginated tool lists — fixed MCP servers with paginated `tools/list` responses only returning first page, silently dropping tools
- MCP unsupported image MIME types — SVG and other unsupported formats now saved to disk and referenced in tool result instead of breaking conversations
- File descriptor exhaustion in skill directories — non-`.md` files no longer trigger skill reloads during builds
- Session title generation — fixed titles being generated from plugin monitor output instead of user's first prompt
- Skill tool permission errors in headless mode — fixed regression in v2.1.141
- Plugin caching hints — plugins enabled in settings no longer show "not cached" errors after first load on fresh machine; project-only plugins now show actionable `claude plugin install` hint
- MCP configuration parsing — `claude mcp list` now shows configuration errors instead of silently reporting no servers when `.mcp.json` is malformed
- Custom API base URL side-queries — background side-queries on custom `ANTHROPIC_BASE_URL` and Bedrock Mantle now fall back correctly to Haiku
- Background session scrolling on Windows — PgUp/PgDn, mouse wheel, and Ctrl+O transcript navigation now work in attached sessions
- Terminal crash on detach — fixed crash when closing terminal while attached to background session
- Exec session Ctrl+C handling — `!` exec sessions now respond to Ctrl+C while attached
- Agent view shell-command lingering — completed rows no longer stay "Working" and pressing Enter no longer re-runs expired commands
- Windows keyboard navigation in agents list — fixed ← key leaving list unresponsive
- CJK ghost characters in Agent View — fixed ghost characters at left edge when switching panes on Windows Terminal with CJK content
- Directory preservation on detach — `/bg` and ← detach now preserve directories added via `/add-dir`
- Edit/Write after detach — fixed "background session hasn't isolated its changes yet" error right after detaching an in-place editing session
- Respawn status display — `claude respawn` on stopped background session now shows "running" instead of "stopped"
- /resume picker for forked sessions — fixed picker not showing sessions forked from background sessions
- Background service timeout handling — opening sessions from `claude agents` or running `claude logs` now times out after 10s with recovery hint instead of hanging
- Background Bash task status — subagent-spawned Bash tasks no longer stay "Running" in SDK task panels after process exits
- Startup crash detection — completed or stopped background sessions no longer permanently marked as startup crash after brief wake failure
- Markdown links in agent sessions — fixed links rendering as plain text instead of clickable hyperlinks in `claude agents` attached sessions
- Custom spinner verbs — fixed applying to post-turn duration message; past-tense built-ins like "Worked for 5s" restored
Improved
- Rejection messages clarity — `claude agents` / `--bg` rejection messages now name the specific gate (non-TTY, env var, or setting)
- Background spawn confirmation — `claude --bg --name ` now echoes the name in post-spawn confirmation
- Session renaming in agent view — renaming with Ctrl+R now updates attached session's banner immediately
- Worktree isolation for non-git VCS — background session worktree isolation guard now applies for non-git VCS users with `WorktreeCreate` hooks
- Plugin marketplace HTTPS preference — add/update now respects `CLAUDE_CODE_PLUGIN_PREFER_HTTPS`
- Plugin list navigation — `/plugin` now returns to Installed list after enabling, disabling, or uninstalling
- Doctor command examples — `/doctor` now shows exec-form example when command hook is missing `command` field
- Skill truncation visibility — no longer shown as startup notification; run `/doctor` for full breakdown
- Stream stall recovery — improved recovery from rare pre-response stream stalls; now retries streaming once instead of falling back to slower non-streaming request
- SDK/headless MCP startup — pre-wait now overlaps startup instead of blocking before first turn (up to 2s faster with slow MCP servers)
- Survey follow-up hints — post-survey hint now appears after every non-dismiss response with context-aware copy, making it easier to share detail via /feedback
Update: npm install -g @anthropic-ai/claude-code
Source: Claude Code