plugin update doesn't fetch latest from marketplace remote before checking versions
Bug Description
claude plugin update does not git pull the marketplace clone before checking for available updates. It compares the installed version against the stale local clone at ~/.claude/plugins/marketplaces/<marketplace>/, which can be outdated if a new version was released after the last install/update.
This causes claude plugin update to incorrectly report "already at the latest version" even when a newer version exists on the remote.
Steps to Reproduce
- Install a plugin from a GitHub-based marketplace:
````
/plugin marketplace add org/repo
/plugin install my-plugin@my-marketplace
This clones the marketplace repo locally and installs at the current version (e.g., 1.5.0).
- A new version (e.g., 1.6.0) is released on the remote repo after installation.
- Run:
````
claude plugin update my-plugin@my-marketplace
- Expected: Claude Code fetches latest from remote, detects 1.6.0, and updates.
- Actual: Reports "already at the latest version (1.5.0)" because it reads from the stale local clone.
Root Cause
The local marketplace clone at ~/.claude/plugins/marketplaces/<marketplace>/ is not refreshed (git fetch/git pull) before the update check. The version comparison is done against the local clone's plugin.json, not the remote.
Workaround
Manually pull the marketplace clone before updating:
cd ~/.claude/plugins/marketplaces/<marketplace-name> && git pull origin main
claude plugin update my-plugin@my-marketplace
Environment
- Claude Code CLI (latest as of 2026-02-12)
- macOS (Darwin 24.6.0)
- Plugin installed from a GitHub-based marketplace (
source.source: "github")
Additional Context
Interestingly, a SessionStart hook that checks gh api repos/<org>/<repo>/releases/latest correctly detects the newer version — because it queries the GitHub API directly rather than reading the local clone. This confirms the remote has the correct version; the local clone is simply stale.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗