Bug: --plugin-dir assigns plugins to 'inline' marketplace but it cannot be registered in extraKnownMarketplaces
Summary
When loading a plugin via --plugin-dir, Claude Code internally assigns the plugin to a marketplace named inline. However, there is no valid way to register inline in extraKnownMarketplaces in settings.json, resulting in a Components error in the plugin UI and skills not being loadable.
Steps to Reproduce
- Have a plugin directory with
.claude-plugin/plugin.jsonand skills - Run:
claude --plugin-dir /path/to/my-plugin - Open
/pluginin the Claude Code UI and navigate to the plugin - Observe the Components section shows:
Error: Marketplace 'inline' not found in configuration.
Expected Behavior
Plugins loaded via --plugin-dir should work fully — their skills and agents should be accessible without requiring any additional marketplace configuration.
Actual Behavior
- The plugin appears in the plugin list
- The Components section of the plugin shows:
Error: Marketplace 'inline' not found in configuration. - Skills defined in the plugin are not invocable (e.g.,
/my-skillreturns "Unknown skill")
Attempted Workaround
Tried registering inline in extraKnownMarketplaces with various source formats:
{ "source": "local" }→Invalid input{ "source": "./path" }(string) →Expected object, but received string{ "source": { "source": "./path" } }→Invalid input
None of the available source types accept a local filesystem path, making it impossible to register the inline marketplace.
Environment
- Platform: macOS (Darwin 25.1.0)
- Claude Code version: latest (installed via brew)
Impact
--plugin-dir is documented as the way to load plugins for a session, but the feature is effectively broken due to this marketplace resolution bug. Plugin developers cannot test local plugins without pushing to a remote repository.
Workaround
Currently the only workaround is to use extraKnownMarketplaces with a file:// git URL, which requires at least a local commit (but not a push) before changes are reflected.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗