Claude Code v2.1.229: Plugin Command Sources, Warm-Cache Workflows, and a Streaming Fix#

Part of the Claude Code Version Tracker series. | Official Env Vars | Official Changelog

v2.1.229 adds two features and fixes a long list of crashes. This report lists each change and its effect. The facts come from the binary and the official changelog.[1]

Plugin marketplaces resolve from a command#

A marketplace source can now be a command. The command prints a plugin directory. Claude Code re-runs the command at the start of each session. It reads the printed path and applies the plugin. It does not need a restart.

  • mode: "link" uses the directory in place.
  • Windows uses mode: "copy" instead, because Windows cannot link.
  • A guard rejects the working directory or a parent directory. The message reads "Plugin source command printed the working directory or one of its parents; refusing to use it as a plugin."
  • The gate tengu_plugin_command_source_refresh controls the per-session refresh. It is on by default. Managed settings can turn it off.

The win: the host app decides the plugin from its own live state each session. No reinstall. No reload.

A command can track anything the command can read, so the useful cases look nothing alike. Point the agent at a monorepo and it picks up the exact tools that branch uses; switch branches and the toolset switches with you. Wire it to an internal broker and each session mints fresh short-lived tokens, so the agent never runs on a credential that expired overnight. Gate it on the environment and the destructive actions drop out on their own when you are pointed at staging instead of prod. Ship the command through a team's dotfiles repo and every agent updates the moment that repo does, with no install to broadcast and no version to drift.

Workflow fan-outs reuse a warm prompt cache#

A workflow can start many agents that share a prompt prefix. The first agent fills the prompt cache. The other agents should read that cache warm.

CLAUDE_CODE_WORKFLOW_PREFIX_STAGGER_MS sets how long a later agent waits for the first agent's first response. The later agent then reads the warm prefix. It does not pay for the prefix again. The binary logs each wait: workflow agent [id] held Nms for a same-prefix sibling's first response (prompt-cache warm-up).

  • Set the value to 0 to remove the wait.
  • Claude Code also skips the wait when prompt caching is off.

The win: a large agent fan-out sends fewer input tokens. Cache reads cost less than fresh prompt tokens.

Crash and streaming fixes#

  • A long response no longer disappears in part while it streams. It no longer prints twice in the terminal.
  • A tool call with a non-string glob, file_path, or command no longer crashes to the error screen. The fix also covers --resume of that session.
  • A progress bar or a markdown table no longer throws a RangeError in a narrow terminal. That error could also crash --continue and --resume at startup.
  • Windows no longer crashes on an extended-length (\\?\) or a UNC file path.
  • Auto mode no longer fails on every tool call when the user disables the attribution header on a direct API connection.
  • /model now accepts Sonnet 1M and Opus 1M for claude.ai subscribers on a custom ANTHROPIC_BASE_URL gateway. The gate tengu_model_capability_from_client_data drives this.
  • MCP OAuth now uses 127.0.0.1 instead of localhost in the redirect URI. This fixes strict authorization servers.
  • SSE keepalive pings hold Vertex and Bedrock streams open during long thinking pauses. Idle timeouts no longer drop the connection.
  • A dynamic workflow in a CPU-limited container now reads the container limit. It no longer reads the host core count.

VSCode and the agent list#

  • The VSCode sidebar adds session groups. The user creates, renames, and deletes them. The user moves several sessions at once.
  • The /btw side panel is now resizable.
  • ListAgents marks a disconnected Remote Control session offline. It labels a cloud session cloud.
  • claude remote-control --continue resumes the most recent Remote Control session.

New environment variables#

VariableWhat It Does
CLAUDE_CODE_DISABLE_DIR_SYNCTurns off the background directory-sync worker on a remote session. The worker runs only when CLAUDE_CODE_REMOTE_SESSION_ID is set. The related CLAUDE_CODE_DISABLE_WORKING_SYNC turns off the paired working-file syncer. New in v2.1.229.
CLAUDE_CODE_ARTIFACT_VIEWER_BASE_URLSets the base URL for the artifact viewer. It joins the artifact endpoint set (CLAUDE_CODE_ARTIFACTS_API_BASE_URL, CLAUDE_CODE_ARTIFACT_ASSET_BASE_URL, CLAUDE_CODE_ARTIFACT_LIVE_BASE_URL). Use it to point at a self-hosted artifact host. New in v2.1.229.

This analysis is conducted for educational and research purposes under fair use principles. All trademarks and software referenced belong to their respective owners. This content is not intended to infringe on any intellectual property rights, circumvent any protections, or encourage unauthorized access to proprietary systems.

Sources#

  1. Claude Code Official Changelog, v2.1.229 release notes