claude plugin update does not refresh marketplace clone before version check
Summary
claude plugin update reports a plugin is already at the latest version when a newer version exists, because it checks the local marketplace clone without first pulling from the remote.
Steps to Reproduce
- Install a plugin from a GitHub-backed marketplace (e.g.
claude plugin install cloud9-claude@cloud9-claude) - A new release is published to the plugin's GitHub repo
- Run
claude plugin update cloud9-claude@cloud9-claude
Expected: plugin updates to the new version
Actual: ✔ cloud9-claude is already at the latest version (1.4.1). (stale)
Root Cause
Claude Code clones the marketplace repo to ~/.claude/plugins/marketplaces/<name>/ at install time. On plugin update, it reads plugin.json from that cached clone to determine the available version — but does not git pull first. If new releases were published after the clone was created, the version check compares installed vs. stale cached, and no update is detected.
Evidence: manually running git pull in the marketplace clone directory, then re-running claude plugin update, correctly detected and applied the update.
$ git -C ~/.claude/plugins/marketplaces/cloud9-claude pull origin main
Updating 507642f..e5068d0 # new commits pulled
$ claude plugin update cloud9-claude@cloud9-claude
✔ Plugin "cloud9-claude" updated from 1.4.1 to 1.4.2 for scope user.
Expected Behavior
claude plugin update should fetch/pull the remote marketplace repo before comparing versions, so it always resolves against the current remote state.
Environment
- Platform: macOS (darwin 24.6.0)
- Shell: zsh
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗