Plugin update command never pulls marketplace clone, always reports 'already at latest'

Resolved 💬 4 comments Opened Mar 18, 2026 by soelinmyat Closed Apr 15, 2026

Description

The /plugin update command (and claude plugin install) determines the "latest available version" by reading marketplace.json from the local marketplace clone at ~/.claude/plugins/marketplaces/{name}/. However, this clone is never git pulled after the initial claude plugin marketplace add. As a result, /plugin always compares the installed cache version against the stale clone and reports "already at the latest version" — even when the remote repository has newer commits and tags.

Reproduction

  1. Add a marketplace: claude plugin marketplace add soelinmyat/pm
  2. Install a plugin: claude plugin install pm@pm (installs e.g. v1.0.15)
  3. Publish a new version upstream (e.g. v1.0.17 — push commits + tags to GitHub)
  4. Run /plugin to update

Expected: Claude Code detects v1.0.17 and updates.
Actual: "pm is already at the latest version (1.0.15)."

Root cause

~/.claude/plugins/marketplaces/pm/   ← git clone, stuck at initial commit
~/.claude/plugins/cache/pm/pm/1.0.15/ ← installed copy

Marketplace clone: v1.0.15 (never pulled)
Cache:             v1.0.15 (installed from stale marketplace)
GitHub remote:     v1.0.17 (32 commits ahead)

Confirmed by inspecting the marketplace clone:

$ cd ~/.claude/plugins/marketplaces/pm
$ git status
On branch main
Your branch is behind 'origin/main' by 32 commits, and can be fast-forwarded.

$ git log --oneline -1
4e04743 Merge pull request #11 ...   ← original clone commit

$ git fetch origin && git log --oneline origin/main -1
8221124 Merge pull request #21 ...   ← actual latest (v1.0.17)

Suggested fix

Before comparing versions, the plugin update mechanism should git pull --ff-only (or git fetch + reset) the marketplace clone to ensure it reflects the current remote state.

Workaround

Plugin authors can work around this by adding a git pull on the marketplace clone in a SessionStart hook. We've implemented this in our plugin: https://github.com/soelinmyat/pm

Environment

  • Claude Code CLI (macOS)
  • Darwin 25.3.0
  • Marketplace: soelinmyat/pm

View original on GitHub ↗

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