[BUG] claude.ai personal marketplace: git-subdir/external plugin sources never refresh; Check for updates reports 'latest' while upstream is ahead
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet (closest: #69683, closed; #45810)
- [x] This is a single bug report
What's Wrong?
On claude.ai (web and the Claude Desktop Chat/Cowork tab), a plugin from a personal marketplace whose source is a git-subdir pointing at another public GitHub repo never picks up upstream changes. claude.ai keeps its stored copy until the marketplace repo itself gets a new commit. Check for updates (on the marketplace and on the plugin) reports "latest version" while the source repo is several commits and a version bump ahead.
This rules out the most useful pattern for git-subdir: a static personal marketplace that installs one folder of someone else's repo and follows its releases.
Setup
- Personal marketplace repo (public), one entry:
``json``
{
"name": "update-probe",
"source": { "source": "git-subdir", "url": "https://github.com/<me>/skill-update-probe.git", "path": "skills" },
"skills": "./",
"strict": false
}
- The source repo (public, separate from the marketplace) had the same layout as
mattpocock/skills: a root.claude-plugin/plugin.jsonwithversion, and the skill inskills/update-probe/SKILL.md. The skill replied with a marker (PROBE-vN) so we could read the version from chat. - "Sync automatically" was on (Claude GitHub App installed, GitHub connector connected).
What we observed (2026-10-11, several hours of testing)
| Change | Waited | Check for updates | claude.ai served |
|---|---|---|---|
| Source repo: new commit, content only | 10–15 min | pressed, "up to date" | old version |
| Source repo: root plugin.json version bump (1.0.0 → 1.0.1, and later 1.0.1 → 1.0.2) | 10 min | pressed, "up to date" | old version |
| Marketplace repo: commit (manual or by a GitHub Action) | 10 min, no button | – | old version |
| Marketplace repo: commit, then Check for updates (marketplace, then plugin → Update) | – | pressed | new version |
| Remove and re-add the marketplace | – | – | new version |
We also tried a variant with the versioned plugin.json inside the git-subdir folder (no strict: false). Same result: upstream changes weren't picked up until the marketplace repo changed.
What Should Happen?
One of these:
- Check for updates re-resolves external
github/url/git-subdirsources (at least their HEAD / declared version), not only the marketplace repo commit. Or - External sources are refreshed on a schedule. Or
- The UI says plainly that external sources are snapshotted at sync time and only refresh when the marketplace repo changes. Right now "latest version" is misleading.
Separately: with "Sync automatically" on, a push to the marketplace repo didn't apply anything within 10 minutes. A manual Check for updates was still needed.
Workaround we're using
A daily GitHub Action in the marketplace repo pins source.ref/source.sha/version to the upstream's latest GitHub Release and commits. After that commit, Check for updates (marketplace, then plugin → Update) works.
Environment
- claude.ai web + Claude Desktop (macOS), Chat/Cowork tab, personal (non-org) marketplace
- Claude Code CLI 2.1.291 validates and installs the same marketplace fine (
claude plugin validatepasses)
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗