Release notes

Claude Code 2.1.139

· 7 new· 32 fixed

This release introduces a new agent session view, providing a comprehensive list of all ongoing and completed agent interactions. A significant addition is the /goal command, enabling the setting of completion criteria for tasks, allowing the agent to work across turns until conditions are met. Key enhancements include improved plugin management, more accurate context token estimates, and the option to reopen closed session tabs in VS Code. Crucial fixes address login deadlocks, UI stability, memory management, and issues with shell expansion in auto-approved commands.

Added7

  • Added agent view (Research Preview): a single list of every Claude Code session — running, blocked on you, or done. Run `claude agents` to get started. See https://code.claude.com/docs/en/agent-view
  • Added `/goal` command: set a completion condition and Claude keeps working across turns until it's met. Works in interactive, `-p`, and Remote Control. Shows live elapsed/turns/tokens as an overlay panel
  • Added `/scroll-speed` command to tune mouse wheel scroll speed with a live preview
  • Added `claude plugin details <name>` to show a plugin's component inventory and projected per-session token cost
  • Added transcript view navigation: `?` for keyboard shortcuts, `{`/`}` to jump between user prompts, `v` to toggle shortcut panel
  • Added hook `args: string[]` field (exec form) that spawns the command directly without a shell, so path placeholders never need quoting
  • Added hook `continueOnBlock` config option for `PostToolUse` — set to `true` to feed the hook's rejection reason back to Claude and continue the turn

Changed11

  • MCP stdio servers now receive `CLAUDE_PROJECT_DIR` in their environment, matching hooks. Plugin configs can reference `${CLAUDE_PROJECT_DIR}` in commands
  • Compaction prompt now asks the model to preserve sensitive user instructions
  • `/mcp` Reconnect now picks up `.mcp.json` edits without a restart, and shows the HTTP status and URL when reconnecting fails
  • `/context all` per-skill token estimates now account for the model's tokenizer and show rounded values
  • `claude plugin install <name>@<marketplace>` now auto-refreshes the marketplace and retries before reporting a plugin as not found
  • `/plugin` installed-plugin details now show hook event names and MCP server names cleanly
  • `/context` now shows the providing plugin's name for plugin-sourced skills
  • Remote MCP server reconnect retry on transient failures is now enabled for all users
  • API requests from subagents now carry `x-claude-code-agent-id` / `x-claude-code-parent-agent-id` headers, and `claude_code.llm_request` OTEL spans include `agent_id` / `parent_agent_id` attributes
  • Remote Control, `/schedule`, claude.ai MCP connectors, and notification preferences are now disabled when `ANTHROPIC_API_KEY` / `apiKeyHelper` / `ANTHROPIC_AUTH_TOKEN` is set, even if a Claude.ai login also exists. Unset the API key to use these features
  • vscodePress Cmd/Ctrl+Shift+T to reopen the most recently closed session tab, configurable via `claudeCode.enableReopenClosedSessionShortcut`

Fixed32

  • Fixed a deadlock where expired credentials and the `forceRemoteSettingsRefresh` policy setting blocked `claude auth login`/`logout`/`status` with no way to recover
  • Fixed `autoAllowBashIfSandboxed` not auto-approving commands with shell expansions like `$VAR` and `$(cmd)`
  • Fixed a bug where a hook writing to the terminal could corrupt an on-screen interactive prompt; hooks now run without terminal access
  • Fixed unbounded memory growth when an HTTP/SSE MCP server streams non-protocol data — response bodies now capped at 16 MB per SSE frame
  • Fixed `Skill(name *)` permission rules — the wildcard form now works as a prefix match, matching `Bash(ls *)` behavior
  • Fixed settings hot-reload not detecting edits to symlinked `~/.claude/settings.json`
  • Fixed plugin details failing to load when the marketplace key differs from the manifest name
  • Fixed `/model` picker "Default" row not reflecting `ANTHROPIC_DEFAULT_OPUS_MODEL`/`ANTHROPIC_DEFAULT_SONNET_MODEL` overrides
  • Fixed spurious "stream idle timeout" 5 minutes after a response completed, caused by the watchdog timer not being cleared on stream cancellation
  • Fixed silent `exit 1` when 10+ MCP servers are configured and the cache directory is unwritable — the error message now includes the underlying cause
  • Fixed a typing cursor blinking on tab names, list pointers, and select rows in dialogs
  • Fixed transcript view letter shortcuts not working after mouse click
  • Fixed Bash-mode up-arrow history repeating the first entry and clobbering the in-progress draft
  • Fixed pasting or dropping multiple images only inserting the last one
  • Fixed hyperlinks using unreadable dark navy on dark themes — they now adapt to the active theme
  • Fixed model picker showing a redundant "Current model" row for third-party users whose model is set to the `opus` alias
  • Fixed legacy Opus picker entry on PAYG 3P providers resolving to the same model as the default entry
  • Fixed mouse wheel scrolling speed in Cursor and VS Code 1.92–1.104; the trackpad now scrolls at a steady rate and the mouse wheel keeps ~3 lines per notch
  • Fixed scroll behavior in Windows Terminal and VS Code when attached to background sessions
  • Fixed MCP resources from disconnected servers lingering in `@server:` autocomplete
  • Fixed two-file diff snippets over-reporting the number of truncated lines by one
  • Fixed Grep results not relativizing Windows drive-letter paths and count mode reporting wrong totals for single-file paths
  • Fixed border-embedded text overflowing on CJK/emoji due to visual cell width miscalculation
  • Fixed fuzzy-match highlighting splitting emoji and astral-plane characters mid-pair
  • Fixed skill argument names containing regex metacharacters breaking argument substitution
  • Fixed ProgressBar rendering a full block for an almost-full fractional cell
  • Fixed task polling and `fs.watch` being resurrected when the last subscriber leaves while a fetch is in flight
  • Fixed plugin dependency resolution leaving a stale count when the manifest name differs from the source identifier
  • Fixed Insights Time-of-Day chart skewing when a session has an unparseable timestamp
  • Fixed keybindings using only the cmd/super/win modifier being flagged as unparseable
  • Fixed `claude_code.active_time.total` OpenTelemetry metric not being emitted in `--print` mode
  • Fixed `claude plugin update` not preserving cross-plugin symlinks inside a marketplace

Never miss a Claude Code release.

Get a push notification the moment the next version ships.

Get Claude Drops

New to the changelog? Read our guide to reading the Claude Code changelog or browse all releases.