Claude Code changelog

Claude Code 2.1.229

This release brings significant new features and critical stability improvements. Users can now define plugin directories via local command sources and organize their VS Code sessions into customizable groups. Key reliability fixes include resolving long responses disappearing or duplicating during streaming, preventing crashes from invalid tool call values or narrow terminal rendering, and addressing Windows path issues. Self-hosted runner sessions gain server-supplied hooks and improved startup, while network stability is enhanced with keepalive pings to prevent upstream disconnects. Overall, this update offers greater extensibility, improved stability, and a more robust experience.

Added

  • Added server-supplied Claude Code hook support for self-hosted runner sessions, matching managed-environment behavior
  • Added SSE keepalive pings to gateway streaming responses during long thinking pauses, preventing idle-timeout disconnects on Vertex and Bedrock upstreams
  • Added plugin marketplace `command` sources: a local command (e.g. an IDE) prints the plugin directory, which is re-resolved each session and applied without a restart; `mode: "link"` uses it in place
  • Added session groups in the sidebar — right-click to create, rename, or delete; Cmd/Ctrl- or Shift-click to move several sessions at once

Improved

  • Improved workflow fan-outs to stagger same-prefix sibling agents so subsequent agents read the cached prompt prefix instead of re-paying it (`CLAUDE_CODE_WORKFLOW_PREFIX_STAGGER_MS=0` disables)
  • Improved "prompt is too long" errors to explain why automatic compaction could not recover instead of only suggesting `/compact`
  • Improved sandbox: IPv6 literals in network domain lists are now bracketed (`[::1]:443`), and ambiguous spellings are enforced fail-closed and flagged by `/doctor`

Changed

  • Documented `claude remote-control --continue` for resuming the most recent Remote Control session
  • `ListAgents` now marks disconnected Remote Control sessions as `offline` and labels your cloud sessions as `cloud`
  • Updated `/login` to repeat the `CLAUDE_CODE_OAUTH_TOKEN` override warning after a successful login
  • Changed `/commit-push-pr` so git/gh commands with dangerous flags (`--force`, `--amend`, `--no-verify`, etc.) are no longer auto-approved
  • Changed self-hosted runner Windows startup to require an explicit `--base-dir`; there is no default checkout directory on Windows
  • "Report a problem" and `/bug` now open the built-in feedback dialog instead of a retired survey link
  • Made the `/btw` side-question panel resizable by dragging its boundary, in both side-docked and stacked layouts

Fixed

  • Fixed long responses partly disappearing while streaming and being printed twice in the terminal
  • Fixed a crash to the error screen (including on `--resume` of the affected session) when a tool call had a non-string `glob`, `file_path`, or `command` value
  • Fixed a RangeError crash when a progress bar or markdown table rendered in a very narrow terminal window (could also crash `claude --continue`/`--resume` at startup)
  • Fixed a crash on Windows when a tool call or message referenced a file by an extended-length (`\\?\`) or UNC path
  • Fixed auto mode failing on every tool call for users who disable the attribution header via `CLAUDE_CODE_ATTRIBUTION_HEADER` (direct Anthropic API connections)
  • Fixed `/model` rejecting Sonnet/Opus 1M for claude.ai subscribers using a custom `ANTHROPIC_BASE_URL` gateway
  • Fixed MCP OAuth with strict authorization servers by using `127.0.0.1` instead of `localhost` in the redirect URI
  • Fixed Remote Control clients showing a stuck working spinner after a slash command typed in the laptop terminal
  • Fixed the Claude Code Review workflow generated by `/install-github-app` completing without posting its review on the pull request
  • Fixed multi-second UI stalls after editing a file with thousands of IDE diagnostics while the IDE extension is connected
  • Fixed one-shot `claude plugin` commands leaving a stray liveness file that could prevent cleanup of outdated plugin versions
  • Fixed dynamic workflows inside CPU-limited containers using the host machine's core count instead of the container's CPU limit
  • Fixed a file-watcher handle leak after atomic file replacements, and an uncaught error on Windows when the scheduled-tasks watcher failed on a network or virtual filesystem
  • Fixed SDK and `--input-format stream-json` sessions getting a 400 API error when a whitespace-only message was submitted
  • Fixed conversations whose messages alone exceed the API's 32 MB request limit retrying compaction when no images or documents can be stripped; they now fail once with a clear message
  • Fixed OpenTelemetry export from Claude Desktop sessions being rejected by the Desktop-managed gateway when that gateway is also the telemetry endpoint
  • Fixed self-hosted runner and other remote sessions exiting at startup when `managed-mcp.json` is deployed and the server delivers MCP servers; those servers are now skipped with a warning
  • Fixed self-hosted runner repository preparation hanging on a Git Credential Manager prompt; git now fails fast when credentials are missing
Claude Code 2.1.229 — Release Notes