"Check for updates" for local plugin marketplaces intermittently reports "Already up to date." when the repo is ahead
Summary
In the Claude Desktop Directory → Plugins panel, using "Check for updates" on a synced local marketplace often reports "Already up to date." even when the source repo has a newer commit / version bump. Retrying the same action sometimes pulls the update, sometimes still reports up to date. The result is non-deterministic and the feature has been unreliable since it shipped.
Where
Directory → Plugins → a local-uploads marketplace → ··· menu → Check for updates.
The menu shows a pinned Synced commit: <sha>, a Sync automatically toggle, Check for updates, and Remove.
Steps to reproduce
- Add a local-uploads plugin marketplace backed by a git repo (in my case
benai-skills). - Push a new commit / bump a plugin version in that repo so the remote is ahead of the pinned
Synced commit. - Open Directory → Plugins → the marketplace → ··· → Check for updates.
- Observe the toast: "Already up to date."
- Repeat step 3 one or more times.
Expected
"Check for updates" should detect that the remote is ahead of the locally synced commit and pull the new commit, updating the pinned Synced commit SHA and the installed plugin versions.
Actual
- Frequently returns "Already up to date." despite the remote being ahead of the pinned
Synced commit. - On retry it sometimes succeeds and updates, and sometimes keeps saying up to date.
- Behavior is inconsistent run-to-run with no change to the underlying repo — pointing at a caching / stale-comparison or race condition in the update check rather than a real up-to-date state.
Impact
Users can't reliably get the latest version of a marketplace/plugin without repeatedly clicking or removing and re-adding the marketplace. This has been unstable since the feature was released.
Notes / suspected cause
Looks like the "check for updates" path is comparing against a cached ref (or short-circuiting before actually fetching the remote), so it reports up to date without a fresh fetch. A retry occasionally forces a real fetch, which is why it intermittently works.
Environment
- Claude Desktop (macOS)
- Feature: Directory → Plugins, local-uploads marketplace sync
Observed with the ··· menu showing pinned Synced commit: 71f54ed and Sync automatically off, then getting an "Already up to date." toast after clicking Check for updates. (Happy to add screenshots.)