Plugins installed in other projects appear in current project's Manage Plugins UI with misleading 'project scope' error
Summary
When plugins are installed with --scope project from one project directory, they incorrectly appear in the Manage Plugins UI when Claude Code is launched from a different project directory. Attempting to uninstall them produces a confusing error claiming they are enabled via .claude/settings.json "shared with your team", even though no such file exists in the current project.
Environment
- OS: Windows 11 Pro 10.0.26200
- Claude Code version: shown as
24.12.0in shell prompt - Shell: PowerShell
- Surface: VSCode extension (Manage Plugins panel)
Steps to reproduce
- From project A (e.g.
x:\Workspace\bukin), install a plugin with project scope:
````
claude plugin install code-simplifier@claude-plugins-official --scope project
- Open Claude Code in an unrelated project B (e.g.
x:\Workspace\anira) that has no.claude/directory and nosettings.json. - Open the Manage Plugins panel.
Actual behavior
- The plugin installed for project A is listed under INSTALLED in project B's Manage Plugins panel.
- Clicking the trash icon shows:
> Failed to uninstall plugin "security-guidance@claude-plugins-official": Plugin "security-guidance@claude-plugins-official" is enabled at project scope (.claude/settings.json, shared with your team). To disable just for you: claude plugin disable security-guidance@claude-plugins-official --scope local
- Running the suggested command:
````
claude plugin disable security-guidance@claude-plugins-official --scope local
fails with:
> Failed to disable plugin "security-guidance@claude-plugins-official": Plugin "security-guidance@claude-plugins-official" is already disabled at local scope
- No
.claude/settings.json(or any.claude/directory) exists in the current project. The actual record of the install is in the globalC:\Users\Lucas\.claude\plugins\installed_plugins.json, which stores per-plugin entries with"scope": "project"and aprojectPathfield pointing to the other project.
Example from my installed_plugins.json (abbreviated):
{
"version": 2,
"plugins": {
"code-simplifier@claude-plugins-official": [
{
"scope": "project",
"projectPath": "x:\Workspace\bukin",
...
},
{
"scope": "project",
"projectPath": "X:\Workspace\confirma-v2-cs",
...
}
],
"security-guidance@claude-plugins-official": [
{
"scope": "project",
"projectPath": "x:\Workspace\bukin",
...
}
]
}
}
The current working directory when this happens is x:\Workspace\anira — none of the listed projectPaths.
Expected behavior
Either:
- Scoping fix: Plugins with
scope: projectand aprojectPathother than the current cwd should not appear in the current project's Manage Plugins panel, OR - Messaging fix (minimum): The error message should not claim the plugin is enabled via
.claude/settings.json"shared with your team" when no such file exists in the current project. The actual source (~/.claude/plugins/installed_plugins.json, project-scoped under a differentprojectPath) should be reported so the user knows what to edit. The fallback command should also actually do something instead of immediately reporting "already disabled at local scope".
Workaround
Manually edit ~/.claude/plugins/installed_plugins.json to remove the stale project-scoped entries pointing at other projects.
Notes
I noticed this because the trash icon was disabled-looking and the toggles were already off, yet the plugins remained listed. The UI gave no indication these belonged to a different project.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗