[BUG] Local plugins no longer persist after 2.1.x update - now require marketplace structure

Resolved 💬 5 comments Opened Jan 9, 2026 by bledden Closed Feb 23, 2026

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

  1. Create a plugin with standard structure (.claude-plugin/plugin.json, commands/, hooks/, etc.)
  2. Install via claude plugins install /path/to/plugin or claude plugins install https://github.com/user/plugin
  3. Verify plugin appears (e.g., /my-command works)
  4. Close and reopen Claude Code
  5. 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.json with "isLocal": true
  • Plugin is enabled in ~/.claude/settings.json under enabledPlugins
  • Plugin files exist in ~/.claude/plugins/cache/
  • But the plugin does not load - commands are unavailable

Workarounds Found

  1. CLI only: claude --plugin-dir /path/to/plugin (does not work with VSCode extension)
  2. Create a marketplace wrapper: Structure the plugin inside a marketplace with marketplace.json, register with claude 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.

View original on GitHub ↗

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