Claude Code v2.1.238: Plugin Marketplaces Can Mint Their Own Auth Headers#

Published by

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

Coming from v2.1.237, a v2.1.238 user can install plugins from a private marketplace that sits behind short-lived auth. A headersHelper command on a URL marketplace or a catalog entry mints HTTP headers (for example a token good for a few minutes) that Claude Code attaches to catalog reads and same-origin archive downloads.[1]

The helper runs only when you install or update that plugin, after its command is shown to you, and claude plugin install/update prompt [y/N] (or take -y). The rest of the release is a long list of fixes, with a large Remote Control reliability pass and a memory-growth fix for long sessions.

How the headers helper is wired#

Claude Code runs the helper through the same guarded path used for other config-resident commands, and it hands the helper a small, fixed environment. A marketplace helper receives CLAUDE_CODE_MARKETPLACE_URL (and CLAUDE_CODE_MARKETPLACE_NAME when the marketplace is named); a plugin helper receives CLAUDE_CODE_PLUGIN_NAME and CLAUDE_CODE_PLUGIN_ARCHIVE_URL. When the source is not operator-authored (a project .mcp.json, a plugin, or an agent file rather than managed settings), inherited credential env vars are scrubbed before the helper runs, so a repo-checked-in helper cannot read your tokens. Headers it emits are filtered too: request-routing and client-identity header names are dropped from non-operator sources, and malformed names or values are rejected. The helper string itself must be printable ASCII with no long runs of spaces and short enough for the install-consent UI to display in full.

VariableWhat It Does
CLAUDE_CODE_MARKETPLACE_URLSet in the environment of a marketplace headersHelper command when Claude Code fetches that marketplace's catalog, alongside CLAUDE_CODE_MARKETPLACE_NAME. The helper reads it to mint headers scoped to that URL; results are memoized with an expiry so the command is not re-run on every fetch. New in v2.1.238.
CLAUDE_CODE_PLUGIN_ARCHIVE_URLSet in the environment of a plugin's headersHelper command at install or update time, together with CLAUDE_CODE_PLUGIN_NAME, so the helper can mint headers for the archive download. Runs only when you install or update that plugin, never during catalog browsing. New in v2.1.238.
MCP_DISCOVERY_CACHE_STRIKESOverrides the strike count that governs the MCP discovery cache (used with MCP_DISCOVERY_CACHE_TTL_S and MCP_DISCOVERY_CACHE_MAX_STALE_S). When set above zero it replaces the built-in default; otherwise the default applies. Paired with a reworked gate, tengu_mcp_discovery_cache_enable.
CLAUDE_CODE_ADOPT_UNDERIVABLE_PARKED_PERMISSIONIn print/SDK mode, when a host reconnects and a permission prompt was left parked with no persisted answer that can be rederived, adopt that prompt and retire the interrupted turn's tool-use IDs instead of re-running the tool call. Works with the hold/retire parked-permission flags.
CLAUDE_CODE_SILENT_TURN_REMINDER_TEXTOverrides the text of the silent-turn reminder (the nudge injected after turns that produce no output). Falls back to the tengu_hushed_lark_text gate value, then a built-in default. Companion to the existing enable/turns knobs.

Fixes that change day-to-day behavior#

Two fixes stand out for long-running use. Interactive sessions no longer grow memory without bound: a subagent's tool results are released once they scroll past the recent display window. And custom, project, and plugin output styles stop drifting back to the default voice partway through a session. A smaller one restores CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION=true when your account is near, but not over, its usage limit.

Remote Control got the heaviest attention. A session whose process crashed can be reused the next time you message it instead of staying dead until restart; brief HTTP 403 refusals from a VPN or proxy are tolerated for up to three minutes before the blocker is named; model picks made on a phone or the web now update the terminal; messages sent mid-turn from web or Desktop no longer vanish after the turn ends; and ListAgents/SendMessage now work from claude remote-control and Desktop/IDE hosts, while hiding the pre-warmed idle worker until a task claims it. On the MCP side, stdio servers no longer get a server/discover before initialize, so lazy servers stop booting their backend on every session open.

Editing keys, readline style#

A new keybindingFlavor setting under /config chooses how the prompt's editing keys behave. Set it to "readline" and Ctrl+W deletes back to the previous whitespace, matching Bash and other readline programs; the default "classic" keeps deleting the previous word. Separately, Ctrl+L and Cmd+K in fullscreen now always just repaint, and the old double-press /clear shortcut is gone, so 1-row terminals no longer trigger runaway /clear loops.

What these tell us#

The marketplace work makes private plugin distribution practical without baking secrets into config: the helper mints credentials on demand, the environment it sees is minimal and scrubbed for untrusted sources, and the headers it can set are filtered so a repo cannot rewrite request-routing or identity. That is a distribution-security posture, built around per-install consent.

The artifact collaboration surface first seen (unannounced) in v2.1.221 keeps growing, and again with no changelog mention. A new CLAUDE_CODE_ARTIFACT_ROOM variable and an tengu_artifact_verify gate both first appear in v2.1.238, next to new prompt strings that tell the model to check its own published output: "After publishing, never claim the page works without observing it," and that an empty viewer result "can mean no viewer has loaded the version yet, which is NOT evidence of a clean render." The feature is gated and absent from the release notes, the same quiet-then-announce pattern the comment threads followed.

This analysis is conducted for educational and research purposes under fair use principles. All trademarks and software referenced belong to their respective owners.

Sources#

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

Previous Claude Code analysis: v2.1.237 (August 20, 2026)

Next Claude Code analysis: v2.1.241 (August 24, 2026)

All 63 Claude Code analyses: Claude Code Version Tracker · Official Claude Code changelog