{"version":"2.1.238","anchor":"plugin-marketplaces-and-archives-can-mint-http-headers-from-","canonical_anchor":"plugin-marketplaces-and-archives-can-mint-http-headers-from-","heading":"Plugin marketplaces and archives can mint HTTP headers from a command","tier":"use","area":"Plugins","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.238\/e\/plugin-marketplaces-and-archives-can-mint-http-headers-from-","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.238","markdown":"### Plugin marketplaces and archives can mint HTTP headers from a command\n\nMarketplaces and plugins can run a command to mint short-lived HTTP headers for fetching archives.\n\n**What**\n\nA marketplace or plugin entry can declare `headersHelper`, a shell command whose JSON stdout becomes the HTTP headers used to fetch that marketplace or plugin archive, so short-lived tokens replace static `headers`. It runs only on explicit install, update or refresh, after you have seen the exact command, and is controlled by the kill switch `tengu_plugin_command_source_refresh`, which defaults to on. Managed settings `disableCommandPluginSources` and `allowManagedHooksOnly` block it entirely.\n\n**Details**\n\n- The command's output overrides static `headers`, is inherited by same-origin archive downloads from that marketplace, is memoised with an expiry, and is re-run on later refreshes.\n- It runs from the Claude config home rather than the session working directory, and receives `CLAUDE_CODE_MARKETPLACE_URL` \/ `CLAUDE_CODE_MARKETPLACE_NAME` for marketplaces, `CLAUDE_CODE_PLUGIN_NAME` \/ `CLAUDE_CODE_PLUGIN_ARCHIVE_URL` for plugin archives.\n- Consent is enforced by comparison: if the command, or the archive URL it fetches, changed since it was displayed, the install refuses and reports `entry_helper_unshown`, `entry_helper_changed` or `entry_archive_url_changed`.\n- An entry declaring a helper must be `strict:false` so its full manifest is inlined and reviewable before anything runs.\n- Sources that are not operator-authored have credential environment variables stripped, their values redacted out of whatever env is passed, and routing\/identity headers (`host`, `cookie`, `x-forwarded-`, `proxy-`, and similar) dropped from the result.\n- Marketplaces added via `--add-dir` have their declared helpers stripped; remote managed-settings declarations require separate verification.\n- Values must be printable ASCII and short enough for the install consent pane to display. Outcomes report to `plugin_headers_helper`; when the kill switch is off the log reads \"headersHelper not run \u2014 disabled by the plugin command kill switch\".\n\n**Evidence**\n\n`CLAUDE_CODE_PLUGIN_ARCHIVE_URL`, `Command that prints a JSON object of HTTP headers`, `headersHelper not run \\u2014 disabled by the plugin command kill switch`\n\n- Flag `tengu_plugin_command_source_refresh`: Not enough to say (read for one account on one subscription tier against v2.1.238; this account: no value returned, anonymous baseline: no value returned, compiled default: on)\n- Area: Plugins\n- Names: `headersHelper`, `disableCommandPluginSources`, `allowManagedHooksOnly`, `CLAUDE_CODE_MARKETPLACE_NAME`, `CLAUDE_CODE_MARKETPLACE_URL`\n- Tier: Use it now\n- Useful: 3\/5\n- Signal: 4\/5"}