Plugin update command does not correctly update version metadata

Resolved 💬 3 comments Opened Apr 9, 2026 by SuperAllenYao Closed Apr 13, 2026

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

  1. 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>
`
At this point,
installed_plugins.json correctly records "version": "1.0.0" and the cache directory is created at plugins/cache/<marketplace>/<plugin>/1.0.0/`.

  1. Update the plugin's package.json version to 1.6.0 in the GitHub repository and push.
  1. Run the update command:

``bash
claude plugin update "<plugin>@<marketplace>"
``

  1. 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.json should reflect the new version (1.6.0)
  • The cache directory should be named 1.6.0/ (or at minimum, the version field should match package.json)
  • The update confirmation message should show the correct old → new version

Actual Behavior

  • installed_plugins.json retains 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.json in 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:

  1. Correctly git pull the latest code from the marketplace repository
  2. Correctly copy the updated files into the cache directory
  3. Not re-read package.json to update the version in installed_plugins.json
  4. Not rename the cache directory to match the new version
  5. 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)

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗