Plugin installed at project scope cannot be reinstalled at user scope

Resolved 💬 3 comments Opened Mar 2, 2026 by csy1204 Closed Mar 2, 2026

Description

When a plugin is installed from the marketplace at project scope, it becomes impossible to reinstall or promote it to user scope through normal UI/CLI flows. The marketplace treats it as "already installed" based on the cache, but the registration only grants access to the original project.

Steps to Reproduce

  1. Install a plugin (e.g., plugin-dev) from the marketplace with project scope in Project A
  2. Open a different project (Project B)
  3. Try to use the plugin — it's not available
  4. Try to install the same plugin again — marketplace says it's already installed

Expected Behavior

Either:

  • The marketplace should allow reinstalling at a different scope (user scope)
  • There should be a claude plugin promote or claude plugin scope command to change scope
  • The marketplace install flow should offer "Also install for all projects?" option

Actual Behavior

The plugin files exist in ~/.claude/plugins/cache/ (shared), but installed_plugins.json only has a project-scoped entry:

"plugin-dev@claude-plugins-official": [
  {
    "scope": "project",
    "projectPath": "/Users/user/work/project-a",
    "installPath": "~/.claude/plugins/cache/claude-plugins-official/plugin-dev/55b58ec6e564",
    "version": "55b58ec6e564"
  }
]

The only workaround is manually editing installed_plugins.json to add a "scope": "user" entry and enabling it in settings.json under enabledPlugins.

Root Cause

The "already installed" check appears to be based on cache existence, while actual availability is based on registry scope. These two concepts are conflated, creating a gap where a plugin can be "installed" but not "available".

Environment

  • Claude Code on macOS
  • Plugin system v2 (installed_plugins.json version 2)

View original on GitHub ↗

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