[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
- 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:
``json``
{
"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/
- 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 5 comments on GitHub. Read the full discussion on GitHub ↗