[BUG] Local plugins no longer persist after 2.1.x update - now require marketplace structure
Description
After updating from 2.0.75 to 2.1.3, locally installed plugins no longer persist across sessions. Plugins that were working in both terminal and VSCode extension now fail to load unless wrapped in a marketplace structure.
Steps to Reproduce
- Create a plugin with standard structure (
.claude-plugin/plugin.json,commands/,hooks/, etc.) - Install via
claude plugins install /path/to/pluginorclaude plugins install https://github.com/user/plugin - Verify plugin appears (e.g.,
/my-commandworks) - Close and reopen Claude Code
- Plugin is gone - command no longer available
Expected Behavior
Locally installed plugins should persist across sessions, as they did in 2.0.75.
Actual Behavior
- Plugin entries remain in
~/.claude/plugins/installed_plugins.jsonwith"isLocal": true - Plugin is enabled in
~/.claude/settings.jsonunderenabledPlugins - Plugin files exist in
~/.claude/plugins/cache/ - But the plugin does not load - commands are unavailable
Workarounds Found
- CLI only:
claude --plugin-dir /path/to/plugin(does not work with VSCode extension) - Create a marketplace wrapper: Structure the plugin inside a marketplace with
marketplace.json, register withclaude plugin marketplace add, then install from that marketplace
Environment
- Previous version (working): 2.0.75
- Current version (broken): 2.1.3
- Platform: macOS darwin-arm64
- Installation: VSCode extension + CLI
Context
I built a plugin on Jan 7 that worked correctly in both terminal and VSCode on 2.0.75. After the update to 2.1.3 on Jan 9, it stopped appearing. The changelog shows no documented breaking changes to local plugin behavior between these versions.
This makes developing and testing custom plugins difficult without a warning, especially since --plugin-dir doesn't work with the VSCode extension.
This issue has 5 comments on GitHub. Read the full discussion on GitHub ↗