[BUG]
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?
Bug: Local directory marketplace plugins show as "installed" but cannot be managed
Environment
- Claude Code version: 2.0.62
- OS: macOS Darwin 25.1.0 (Sequoia)
- Installation method: npm-global
Description
When using a local directory-based marketplace, plugins show as "installed" (with ✔ checkmark) in the marketplace browse view, but they don't appear in the Installed tab and cannot be actually installed, enabled, or managed through the UI.
Actual Behavior
- ❌ Plugins show with ✔ "installed" checkmark in marketplace browse view (incorrectly)
- ❌ Plugins do NOT appear in "Discover" tab - shows "No plugins available"
- ❌ Plugins do NOT appear in "Installed" tab - shows "No plugins installed"
- ❌ Clicking Enter on a plugin in browse view immediately redirects to Installed tab showing "No plugins installed" (no details shown)
- ❌ No UI path exists to actually install or enable directory-based local plugins
Screenshots
Marketplace browse shows plugins as "installed":
│ Install Plugins (1/16) │
│ │
│ ❯ ✔ feature-registry (installed) │
│ Feature and work item tracking (LOCAL DEV) │
│ │
│ ✔ sdlc-workflow-manager (installed) │
│ SDLC orchestration with TDD (LOCAL DEV) │
But Installed tab is empty:
│ Manage plugins │
│ │
│ No plugins installed. │
Clicking a plugin redirects to empty Installed view instead of showing details.
Root Cause Analysis
The marketplace browse view and Installed tab use inconsistent logic:
- Marketplace browse: Determines "installed" by checking if source path exists on filesystem
-
Installed tab: Reads from
installed_plugins_v2.jsonwhich remains empty
Since directory-based plugins already exist on disk, the browse view marks them as "installed", but no actual installation record is created in installed_plugins_v2.json.
Workarounds Attempted (None Worked)
-
Manually editing
installed_plugins_v2.json- Added entries with correct format (scope, installPath, version, installedAt, lastUpdated, isLocal) - plugins still don't appear in Installed tab -
Manually adding to
enabledPluginsin settings.json - Added entries like"plugin-name@marketplace-name": true- no effect -
Using
@localvs@marketplace-namenaming - Tried both conventions - no effect -
Adding version field to marketplace.json entries - No effect on installation ability
Files Involved
-
~/.claude/plugins/installed_plugins_v2.json -
~/.claude/plugins/known_marketplaces.json -
~/.claude-profiles/{profile}/settings.json→enabledPluginssection
Impact
- Cannot use local directory-based marketplaces for plugin development
- No way to test local plugins through the official marketplace/plugin system
- Blocks local development workflow for plugin authors
Suggested Fix
-
For directory-based marketplaces, either:
- Automatically register existing plugins in
installed_plugins_v2.jsonwhen marketplace is added - Or show an "Install" button even when source path exists
- Automatically register existing plugins in
-
Ensure clicking a plugin in browse view shows plugin details (not redirect to Installed tab)
-
Make browse view and Installed tab use consistent logic for determining installation status
What Should Happen?
Expected Behavior
- Plugins should appear in "Discover" tab for installation
- Clicking a plugin should show details with Install/Enable options
- After installation, plugins should appear in "Installed" tab
- Plugins should be usable (commands, skills, agents available)
Error Messages/Logs
Steps to Reproduce
Steps to Reproduce
-
Create a local marketplace directory structure:
/path/to/plugins/ ├── .claude-plugin/ │ └── marketplace.json ├── plugin-a/ │ └── .claude-plugin/ │ └── plugin.json └── plugin-b/ └── .claude-plugin/ └── plugin.json -
Create
marketplace.jsonwith plugins using relative./sources:{ "name": "local-dev-marketplace", "plugins": [ { "name": "plugin-a", "source": "./plugin-a", "description": "Test plugin A", "version": "1.0.0" } ] } -
Add marketplace via
/plugin→ Marketplaces → Add Marketplace- Use source type:
directory - Path:
/path/to/plugins/
- Use source type:
-
Marketplace shows correctly with "X available plugins"
-
Select marketplace and choose "Browse plugins"
Claude Model
None
Is this a regression?
I don't know
Last Working Version
No response
Claude Code Version
2.0.62
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
iTerm2
Additional Information
No response
This issue has been inactive for 30 days. If the issue is still occurring, please comment to let us know. Otherwise, this issue will be automatically closed in 30 days for housekeeping purposes.
I have the same issue. (Windows / WSL)