Bug: --plugin-dir assigns plugins to 'inline' marketplace but it cannot be registered in extraKnownMarketplaces

Resolved 💬 3 comments Opened Mar 23, 2026 by donghoon-lee-mrt Closed Mar 26, 2026

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

  1. Have a plugin directory with .claude-plugin/plugin.json and skills
  2. Run: claude --plugin-dir /path/to/my-plugin
  3. Open /plugin in the Claude Code UI and navigate to the plugin
  4. 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-skill returns "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.

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗