Nested marketplaces cause plugin resolution errors
When a plugin that defines its own marketplace.json (for standalone installation) is included as a submodule in another marketplace, Claude Code fails to resolve the plugin's update source correctly.
Steps to Reproduce
- Create a plugin
plugin-awith bothplugin.jsonandmarketplace.json(allowing standalone installation) - Include
plugin-aas a submodule inmarketplace-b - Install
marketplace-bvia/plugin marketplace add - View installed plugins
Expected Behavior
Claude Code should resolve plugin-a through marketplace-b (the marketplace it was installed from) and ignore the nested marketplace.json.
Actual Behavior
Claude Code shows resolution errors:
Plugin 'plugin-a' not found in marketplace 'plugin-a'
Plugin 'plugin-a' not found in marketplace 'plugin-a-marketplace'
It attempts to find the plugin in marketplaces named after the plugin itself, rather than the parent marketplace it was installed through.
Environment
- Claude Code version: 2.1.3
- OS: Ubuntu 25.10
Real-World Example
- Marketplace:
hiivmind-marketplace(aggregates 16 plugins via submodules) - Plugin:
hiivmind-corpus(meta-plugin with its ownmarketplace.jsonfor standalone use) - When accessed through
hiivmind-marketplace, Claude Code tries to resolve updates from non-existenthiivmind-corpusmarketplace
Workarounds (all have drawbacks)
| Workaround | Drawback |
|------------|----------|
| Remove marketplace.json from nested plugin | Breaks standalone installation of that plugin |
| Don't nest plugins that have marketplace.json | Defeats purpose of unified marketplace aggregation |
| Manually edit installed plugin to remove nested marketplace.json | Fragile, reverts on update |
Suggested Fix
When resolving a plugin's update source, Claude Code should track which marketplace the plugin was installed from and use that, rather than inferring marketplace names from the plugin name or discovering nested marketplace.json files.
Related Issues
- #17293 - Marketplace installation doesn't clone git submodules (same marketplace architecture)
- #16890 - extraKnownMarketplaces key must match marketplace.json name (related resolution logic)
This issue has 7 comments on GitHub. Read the full discussion on GitHub ↗