Managed plugin marketplace files can be read through the storage layer, but the gate is unresolved.
Storage-based marketplace manifest reads exist behind a gate function that is not resolved in the bundle.
What's wrong with this entry?
A new helper reads an installed plugin's ../.claude-plugin/marketplace.json through the storage layer with a workspace-scoped read, but only when its gate holds, a storage handle exists, and the plugin came from a managed install rather than the local plugin directories. Otherwise it falls back to an ordinary UTF-8 file read. The gate function is not resolved in the bundle, so whether the storage path ever runs is undetermined.
- A missing file on the storage path raises a dedicated error rather than a generic read failure.
- The
/plugininterface now detects MCP servers through this helper, with a guard so a slow read that finishes late cannot overwrite newer state. - Directory existence and stat checks during plugin load got the same storage-or-filesystem fork.
Failed to read raw marketplace.json:
Strings lifted out of the shipped bundle, so the claim above can be checked against them.