What
A headersHelper command declared by an MCP server no longer shells out directly with your full environment. It runs through the same runner used for other repo-declared commands, which picks the working directory from where the config lives and strips credential environment variables for project, plugin and additional-directory configs.
Details
- The working directory is the plugin root, the declaring directory, or the current directory, depending on where the config came from.
- If the workspace has no saved trust decision, the helper is refused with a printed explanation rather than an exception, with a distinct message for sessions rooted at your home directory.
- Failure messages are now written per reason, including a new "did not return valid JSON" case.
Evidence
did not return valid JSON
Strings lifted out of the shipped bundle, so the claim above can be checked against them.
Names in the bundleheadersHelper
The entry above is what we published on the day. These lines were added later, as Anthropic's own pages caught up, and they sit beside the original rather than replacing it.
Confirmed since
Anthropic's documentation has since written up headersHelper, on MCP, plugins, skills, and hooks.
| `.mcp.json` | MCP servers bundled with this plugin. A JSON object keyed by server name: `{"mcpServers": {"<name>": {"type": "http", "url": "...", "oauth": true}}}`. A remote entry uses `type` (`http` or `sse`), not `transport`, and suppo…third-party/claude-desktop/extensions see the edit
Two sources agreeTwo things we can check say the same as this entry.
Anthropic's documentation agrees
Anthropic's documentation has since written up headersHelper, on MCP, plugins, skills, and hooks.
Anthropic's release notes agree
Plugin marketplaces: headersHelper on a url marketplace or a catalog entry runs a command that mints HTTP headers (e.g. a short-lived token)…