Discover tab hides locally-scoped plugins installed in other projects

Resolved 💬 3 comments Opened Feb 25, 2026 by perelin Closed Mar 1, 2026

Summary

When a plugin is installed with scope: "local" for a specific project, it disappears from the Discover tab for all other projects, making it impossible to install it in a second project through the UI.

Steps to reproduce

  1. Add the superpowers-marketplace (or any marketplace with plugins)
  2. Open project A and install a plugin (e.g. superpowers) with local scope
  3. Open project B and go to /plugin → Discover tab
  4. Search for the same plugin — it does not appear
  5. Check the Installed tab — it's not there either (correct, it's not installed for this project)
  6. Go to Marketplaces → browse the marketplace's plugins — the plugin shows as "(installed)" and Space toggle does nothing

Result: No UI path exists to install the plugin in project B.

Expected: The Discover tab should show locally-scoped plugins that are not installed for the current project, or at minimum the marketplace browse view should allow installing them.

Root cause

In the minified binary (v2.1.52), the install check function (CQrZ7) looks up installed_plugins.json and checks if any entry exists for the plugin ID:

function rZ7(T) {
  let A = _J().plugins[T]   // loads installed_plugins.json
  if (!A || A.length === 0) return  // undefined = not installed
  let _ = A[0]               // takes first entry, ignores scope/projectPath
}

function CQ(T) { return rZ7(T) !== void 0 }

The Discover tab then filters these out:

let IT = QT.filter((xT) => !xT.isInstalled)

The check does not consider scope or projectPath — so a plugin installed locally in project A is treated as globally installed everywhere.

Workaround

Manually add entries to both:

  • ~/.claude/plugins/installed_plugins.json (add a new array entry with scope: "local" and the target projectPath)
  • <project>/.claude/settings.local.json (add to enabledPlugins)

Environment

  • Claude Code v2.1.52
  • macOS (arm64)

View original on GitHub ↗

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