Plugin update command does not correctly update version metadata
Bug Description
When running claude plugin update, the plugin system correctly pulls the latest code from the marketplace repository, but fails to update the version metadata in installed_plugins.json and the cache directory name. The version always remains at the value recorded during initial installation.
Steps to Reproduce
- Register a custom marketplace with a plugin at version
1.0.0:
``bash`
claude marketplace add <github-repo>
claude plugin install <plugin-name> --marketplace <marketplace-name>
installed_plugins.json
At this point, correctly records "version": "1.0.0" and the cache directory is created at plugins/cache/<marketplace>/<plugin>/1.0.0/`.
- Update the plugin's
package.jsonversion to1.6.0in the GitHub repository and push.
- Run the update command:
``bash``
claude plugin update "<plugin>@<marketplace>"
- Output says:
````
✔ Plugin "<plugin>" updated from 1.6.0 to 1.0.0 for scope user.
(Note: the "from" and "to" versions are backwards/incorrect.)
Expected Behavior
installed_plugins.jsonshould reflect the new version (1.6.0)- The cache directory should be named
1.6.0/(or at minimum, theversionfield should matchpackage.json) - The update confirmation message should show the correct old → new version
Actual Behavior
installed_plugins.jsonretains the old version (1.0.0)- The cache directory is still named
1.0.0/ - The actual files inside the cache directory are correctly updated (the
package.jsonin the cache reads"version": "1.6.0") - The confirmation message shows an incorrect/reversed version transition (
from 1.6.0 to 1.0.0)
Analysis
The plugin system appears to:
- Correctly
git pullthe latest code from the marketplace repository - Correctly copy the updated files into the cache directory
- Not re-read
package.jsonto update the version ininstalled_plugins.json - Not rename the cache directory to match the new version
- Use a stale/cached version value when generating the update confirmation message
This means the version shown in claude plugins list is permanently stuck at the initially installed version, even though the actual plugin code is up to date.
Workaround
Manually edit installed_plugins.json to update the version field, and rename the cache directory:
# Update version in installed_plugins.json (manually edit the file)
# Then rename the cache directory:
mv ~/.claude/plugins/cache/<marketplace>/<plugin>/1.0.0 ~/.claude/plugins/cache/<marketplace>/<plugin>/1.6.0
Environment
- Claude Code CLI (latest as of 2026-04-10)
- macOS (Darwin 25.4.0)
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗