[BUG] /plugin install reports "already installed" for plugins installed in different projects with local scope
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 attempting to install a plugin that is already installed with local scope in a different project, the /plugin
install command incorrectly reports that the plugin is "already installed" instead of installing it for the current
project.
The system appears to check only whether the plugin exists in installed_plugins.json globally, without verifying if it's
actually installed for the current working directory/project.
For example:
- Plugin frontend-design@claude-plugins-official is installed with scope: "local" for project
/Users/username/Desktop/WorkSpace/project-a
- When running /plugin install frontend-design in a different project /Users/username/Desktop/WorkSpace/project-b
- The CLI responds: Plugin 'frontend-design@claude-plugins-official' is already installed. Use '/plugin' to manage
existing plugins.
- However, attempting to use /frontend-design in project-b results in: Unknown skill: frontend-design
What Should Happen?
When a plugin is installed with local scope for a specific project, running /plugin install <plugin-name> in a different
project should:
- Recognize that the plugin is not installed for the current project
- Proceed with the installation for the current project (adding a new entry to the plugins array)
- OR prompt the user: "This plugin is installed for another project. Would you like to install it for this project as
well?"
The installation check should be project-aware when dealing with local scope plugins.
Error Messages/Logs
❯ /plugin install frontend-design
⎿ Plugin 'frontend-design@claude-plugins-official' is already installed. Use '/plugin' to manage existing plugins.
❯ /frontend-design
⎿ Unknown skill: frontend-design
Contents of ~/.claude/plugins/installed_plugins.json showing the plugin is only installed for a different project:
{
"version": 2,
"plugins": {
"frontend-design@claude-plugins-official": [
{
"scope": "local",
"projectPath": "/Users/username/Desktop/WorkSpace/project-a",
"installPath": "/Users/username/.claude/plugins/cache/claude-plugins-official/frontend-design/unknown",
"version": "unknown",
"installedAt": "2026-01-13T07:34:47.412Z",
"lastUpdated": "2026-01-13T07:34:47.412Z"
}
]
}
}
Steps to Reproduce
1. Install a plugin with local scope in Project A:
cd /path/to/project-a
claude
/plugin install frontend-design
# Select "Install for this project only" if prompted
2. Navigate to a different project (Project B) and start Claude Code:
cd /path/to/project-b
claude
3. Attempt to install the same plugin:
/plugin install frontend-design
4. Observe the incorrect message: Plugin 'frontend-design@claude-plugins-official' is already installed.
5. Attempt to use the plugin:
/frontend-design
6. Observe the error: Unknown skill: frontend-design
Claude Model
Opus
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
2.1.17 (Claude Code)
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
iTerm2
Additional Information
Workaround: Manually edit ~/.claude/plugins/installed_plugins.json to add an entry for the current project:
"frontend-design@claude-plugins-official": [
{
"scope": "local",
"projectPath": "/path/to/project-a",
...
},
{
"scope": "local",
"projectPath": "/path/to/project-b",
"installPath": "/Users/username/.claude/plugins/cache/claude-plugins-official/frontend-design/unknown",
"version": "unknown",
"installedAt": "2026-01-24T00:40:00.000Z",
"lastUpdated": "2026-01-24T00:40:00.000Z"
}
]
After editing and restarting Claude Code, the plugin works correctly in Project B.
Suggested Fix:
The plugin installation logic should check if projectPath matches the current working directory when the plugin has
scope: "local", rather than just checking if any entry exists for the plugin name.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗