{"version":"2.1.246","anchor":"plugin-provenance-can-be-supplied-via-claude-code-plugin-att","canonical_anchor":"plugin-provenance-can-be-supplied-via-claude-code-plugin-att","heading":"Plugin provenance can be supplied via CLAUDE_CODE_PLUGIN_ATTRIBUTION","tier":"use","area":"Plugins","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.246\/e\/plugin-provenance-can-be-supplied-via-claude-code-plugin-att","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.246","markdown":"### Plugin provenance can be supplied via CLAUDE_CODE_PLUGIN_ATTRIBUTION\n\nYou can declare where a plugin came from via a JSON file or an environment variable.\n\n**What**\n\nClaude Code can now read where a plugin came from, either from a JSON file placed next to the plugin or from a map in the `CLAUDE_CODE_PLUGIN_ATTRIBUTION` environment variable. It yields a server-side plugin id (`plugin_` plus letters and digits), a marketplace name and an installation preference. The variable is unset by default, and it is now stripped from the environment handed to spawned subprocesses so it does not leak into tools.\n\n**Details**\n\n- Malformed input is ignored with a warning rather than failing plugin load, for example when the value is not a JSON object.\n- Presence of the variable is itself a reason to build a scrubbed child environment before spawning.\n\n**Evidence**\n\n`Ignoring CLAUDE_CODE_PLUGIN_ATTRIBUTION: not a JSON object`\n\n- Area: Plugins\n- Names: `CLAUDE_CODE_PLUGIN_ATTRIBUTION`\n- Tier: Use it now\n- Useful: 2\/5\n- Signal: 4\/5"}