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_refreshcontrols 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
0to 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, orcommandno longer crashes to the error screen. The fix also covers--resumeof that session. - A progress bar or a markdown table no longer throws a RangeError in a narrow terminal. That error could also crash
--continueand--resumeat 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.
/modelnow accepts Sonnet 1M and Opus 1M for claude.ai subscribers on a customANTHROPIC_BASE_URLgateway. The gatetengu_model_capability_from_client_datadrives this.- MCP OAuth now uses
127.0.0.1instead oflocalhostin 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
/btwside panel is now resizable. ListAgentsmarks a disconnected Remote Control sessionoffline. It labels a cloud sessioncloud.claude remote-control --continueresumes the most recent Remote Control session.
New environment variables#
| Variable | What It Does |
|---|---|
CLAUDE_CODE_DISABLE_DIR_SYNC | Turns 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_URL | Sets 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#
- Claude Code Official Changelog, v2.1.229 release notes
Related Versions#
- Claude Code v2.1.221: Sandbox Credential Masking and Silent Artifact Comment Threads. Masked credentials in the sandbox, a Bash bypass fix, gated comment threads.
- Claude Code v2.1.219: Opus 5 Becomes the Default Opus Model. New flagship, native 1M context, per-machine dispatch switch.
- Claude Code v2.1.218: Quieter Reviews and a Guard on Team Memory. Review noise controls, memory write guard.
- Claude Code v2.1.217: Subagent Concurrency and Nesting Caps. Deeper agent trees, concurrency limits.