Plugin installed at project scope cannot be reinstalled at user scope from marketplace

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

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

When a plugin is installed from the marketplace at project scope, it becomes impossible to reinstall or promote it to user scope through the CLI or marketplace UI. The marketplace treats the plugin as "already installed" based on the shared cache, but the scope-limited registry entry only grants access to the original project. All other projects cannot use the plugin, and there is no way to change the scope without manually editing installed_plugins.json.

What Should Happen?

Either:

  • The marketplace / claude plugin add should allow reinstalling at a different scope (e.g., user scope) even if the plugin is already cached
  • A claude plugin scope or claude plugin promote command should exist to change plugin scope
  • The install flow should offer an option like "Install for all projects?" when project scope is selected

Error Messages/Logs

# No error message — the plugin just silently doesn't appear in other projects.
# Attempting to reinstall shows the plugin is already installed.

Steps to Reproduce

  1. Install a plugin (e.g., plugin-dev from claude-plugins-official) with project scope in Project A
  2. Open Claude Code in a different project (Project B)
  3. Try to use the plugin (e.g., run a slash command from it) — it's not available
  4. Try to install the same plugin again via marketplace — it shows as already installed
  5. Check ~/.claude/plugins/installed_plugins.json — only a project-scoped entry exists:

``json
"plugin-dev@claude-plugins-official": [
{
"scope": "project",
"projectPath": "/path/to/project-a",
"installPath": "~/.claude/plugins/cache/claude-plugins-official/plugin-dev/55b58ec6e564",
"version": "55b58ec6e564"
}
]
``

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

Claude Model

Not sure / Multiple models

Is this a regression?

I don't know

Claude Code Version

2.1.63 (Claude Code)

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

VS Code integrated terminal

Additional Information

Root cause analysis: The "already installed" check appears to be based on cache existence (~/.claude/plugins/cache/), while actual plugin availability is determined by registry scope (installed_plugins.json entries). These two concepts are conflated — a plugin can be "installed" (cached) but not "available" (not registered for the current scope).

The installed_plugins.json supports multiple entries per plugin (an array), so the data model already allows both project and user scope entries to coexist. The issue is that the CLI/marketplace install flow doesn't offer this path.

View original on GitHub ↗

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