Plugin manager caches stale version string on reinstall from private marketplace
Summary
When reinstalling a plugin from a private Git-based marketplace, the plugin manager writes the previous version string to installed_plugins.json and the cache directory name, even though the marketplace source files all contain the correct (newer) version.
Steps to Reproduce
- Have a private marketplace plugin at version 1.7.0 installed
- Bump the plugin to 1.8.0 in both
plugin.jsonand.claude-plugin/marketplace.json - Push to the marketplace repo
- Run
/plugin update— reports "already at the latest version (1.7.0)" - Run
/plugin uninstall+/plugin install— reinstalls but still reports 1.7.0
Observed Behavior
After uninstall → reinstall:
installed_plugins.jsonrecords"version": "1.7.0"and"installPath": "...\1.7.0"- Cache directory is created as
~/.claude/plugins/cache/<marketplace>/<plugin>/1.7.0/ - But the
plugin.jsoninside that cache directory correctly contains"version": "1.8.0" - The
gitCommitShaininstalled_plugins.jsonis correct (points to the 1.8.0 bump commit) - The marketplace clone at
~/.claude/plugins/marketplaces/<marketplace>/has the correct 1.8.0 in bothplugin.jsonandmarketplace.json
So the git fetch and file copy are working correctly — the version string resolution is the only thing broken.
Expected Behavior
The plugin manager should read the version from plugin.json (or marketplace.json) in the marketplace clone and use that for the cache directory name and installed_plugins.json entry.
Workaround
Manually edit installed_plugins.json to fix the version string and rename the cache directory:
# Fix the cache directory name
mv ~/.claude/plugins/cache/<marketplace>/<plugin>/1.7.0 ~/.claude/plugins/cache/<marketplace>/<plugin>/1.8.0
# Edit installed_plugins.json to update version and installPath
Then /reload-plugins.
Environment
- Claude Code on Windows 11 Pro (bash shell via Git Bash)
- Private marketplace via
"source": "git"inknown_marketplaces.json - Plugin:
csa-training-content-development@csa-training-plugins(1.7.0 → 1.8.0)
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗