[BUG] Project-scoped plugin incorrectly shows as "installed" in other projects' marketplace UI

Resolved 💬 4 comments Opened Jan 14, 2026 by jamesmacaulay Closed Mar 24, 2026

[BUG] Project-scoped plugin incorrectly shows as "installed" in other projects' marketplace UI

Bug Description

When a plugin is installed at project-level in Project A, the /plugin marketplace UI in Project B incorrectly shows the plugin as "installed" (with a checkmark). However:

  1. The plugin does not appear in the "Installed" tab (correct behavior - it's not installed in the current project)
  2. Attempting to view the plugin's detail view fails silently - the UI exits back to the parent view without showing details
  3. There is no way to install the plugin for the current project through the UI
  4. There is no way to uninstall/manage the plugin from the current project's UI

This creates a broken state where the UI shows contradictory information and provides no path forward.

Steps to Reproduce

  1. Add a third-party marketplace:

``
/plugin marketplace add someuser/some-marketplace
``

  1. In Project A (e.g., ~/projects/project-alpha), install a plugin at project-level:

``
/plugin install example-plugin@some-marketplace
`
This creates
~/projects/project-alpha/.claude/settings.json:
`json
{
"enabledPlugins": {
"example-plugin@some-marketplace": true
}
}
``

  1. Open Claude Code in a different project (e.g., ~/projects/project-beta) that has no .claude/settings.json
  1. Run /plugin and navigate to the "Marketplaces" tab → select the marketplace → "Browse plugins"
  1. Observe: The plugin shows ✓ example-plugin (installed) with a checkmark
  1. Press Enter to view details or Space to toggle
  1. Observe: The UI immediately exits back to the "Browse plugins" list without showing any detail view or taking any action

Expected Behavior

One of the following:

Option A (Preferred): The marketplace UI should filter by current project context:

  • Only show plugins as "installed" if they're installed in the current project or at user-level
  • Allow installing the same plugin for the current project even if it's installed elsewhere

Option B: Show installation scope clearly:

  • Display "installed in: ~/projects/project-alpha" in the UI
  • Provide option to "Also install for this project" or "Install at user-level"

Option C: At minimum, the detail view should not fail silently - it should either:

  • Show the plugin details with installation location info
  • Show an error message explaining why it can't be managed from this context

Actual Behavior

  • Checkmark shown in marketplace browse (misleading - not installed here)
  • Not shown in "Installed" tab (correct, but contradicts the checkmark)
  • Detail view fails silently (exits to parent with no feedback)
  • No way to install, uninstall, or manage the plugin from this project

Root Cause Analysis

The issue appears to be in how ~/.claude/plugins/installed_plugins.json is read:

"example-plugin@some-marketplace": [
  {
    "scope": "project",
    "installPath": "/Users/user/.claude/plugins/cache/some-marketplace/example-plugin/1.0.0",
    "version": "1.0.0",
    "installedAt": "2026-01-14T07:51:25.915Z",
    "lastUpdated": "2026-01-14T07:51:25.915Z",
    "projectPath": "/Users/user/projects/project-alpha"
  }
]

The marketplace UI checks if a plugin exists in installed_plugins.json to show the "installed" checkmark, but does not:

  1. Filter by scope ("project" vs "user")
  2. Compare projectPath against the current working directory
  3. Handle the case where the plugin is installed for a different project

Environment

  • OS: macOS (darwin arm64)
  • Plugin: Any plugin from a third-party marketplace installed at project-level
  • Project A: Has plugin installed at project-level
  • Project B: Does not have plugin, but UI shows it as installed

Workaround

Manually create .claude/settings.json in the target project:

mkdir -p /path/to/project/.claude
echo '{"enabledPlugins":{"example-plugin@some-marketplace":true}}' > /path/to/project/.claude/settings.json

Related Issues

  • #16585 - Third-party marketplace plugins not appearing in list (different bug, but related area)
  • #17942 - Project-level enabledPlugins replaces global (different bug, but related to project/global scoping)

View original on GitHub ↗

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