claude plugin install succeeds but fails to persist plugin to installed_plugins.json for local directory marketplaces
Description
When installing a plugin from a local directory marketplace, the claude plugin install command reports success but fails to write the plugin entry to ~/.claude/plugins/installed_plugins.json. This causes the plugin's slash commands to not load in new sessions.
Environment
- Claude Code version: 2.0.54
- OS: Linux (Arch Linux 6.17.8)
- Shell: Bash
Steps to Reproduce
- Create a local marketplace with a plugin containing slash commands:
````
my-marketplace/
├── .claude-plugin/
│ └── marketplace.json
└── plugins/
└── my-plugin/
├── .claude-plugin/
│ └── plugin.json
└── commands/
└── my-command.md
- Add the marketplace as a local directory:
``bash``
claude plugin marketplace add /path/to/my-marketplace
- Install a plugin from the marketplace:
``bash``
claude plugin install my-plugin
- Observe: Command reports
✔ Successfully installed plugin: my-plugin@my-marketplace
- Check
~/.claude/plugins/installed_plugins.json- the plugin entry is NOT added
- Start a new Claude session - the plugin's slash commands are not available
Expected Behavior
The plugin entry should be written to installed_plugins.json and slash commands should load in new sessions.
Actual Behavior
- Install command reports success
- Plugin entry is NOT written to
installed_plugins.json - Slash commands don't load in new sessions
claude plugin uninstallsays "Plugin not found in installed plugins"
Additional Context
claude plugin validate <plugin-path>passes validationclaude plugin marketplace updatesucceeds- Plugins installed from the same marketplace previously (before recent updates) still work
- GitHub-sourced marketplace plugins install correctly
- The marketplace is correctly configured with
source: "directory"inknown_marketplaces.json
Workaround
Manually add the plugin entry to ~/.claude/plugins/installed_plugins.json:
{
"my-plugin@my-marketplace": {
"version": "1.0.0",
"installedAt": "2025-11-26T12:00:00.000Z",
"lastUpdated": "2025-11-26T12:00:00.000Z",
"installPath": "/path/to/my-marketplace/plugins/my-plugin",
"gitCommitSha": "<current-commit>",
"isLocal": true
}
}
6 Comments
Found 3 possible duplicate issues:
This issue will be automatically closed as a duplicate in 3 days.
🤖 Generated with Claude Code
Additional Findings
After further investigation, this bug is more severe than initially reported:
1. Affects ALL marketplaces, not just local directories
The bug also affects GitHub-cloned marketplaces (via
claude plugin marketplace add https://github.com/...). This is NOT limited to local directory marketplaces.2.
installed_plugins.jsonis never createdEven with a completely clean configuration (removed all files from
~/.claude/plugins/), the install command:✔ Successfully installed plugin: git@marketplace-nameinstalled_plugins.jsonat all3. Reproduction on clean config
4. Workaround
Manually create
~/.claude/plugins/installed_plugins.json:Environment
Dumping all configuration
rm -fr ~/.claude*helped.I think this should be reopened, I don't know if it's the exact same issue, but I can say for sure that the plugin I installed isn't persisted in the project I work on daily.
I just realized that the plugin I installed was a "Skill", not a subagent, so this is actually a non-issue for me... (assuming Claude is, indeed, using the Skill on it's context, which I can't confirm)
This issue has been automatically locked since it was closed and has not had any activity for 7 days. If you're experiencing a similar issue, please file a new issue and reference this one if it's relevant.