[BUG] Cowork installs stale cached plugin version; ignores all marketplace repo updates
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
A plugin installed from a custom (user-created) marketplace will not update in Cowork. After editing the skill in the marketplace repo and pushing to GitHub, the installed plugin keeps loading the old cached version (v1.0.0, old SKILL.md) even though the repo is at v1.0.1 with updated content. This persists through a full cache purge, a version bump, a marketplace rename, and switching the repo from private to public, so the installed plugin appears to never be re-pulled from the repo.
What Should Happen?
After updating the skill, bumping the version, pushing to the default branch, and reinstalling the plugin (with the cache cleared), Cowork should install the latest commit — v1.0.1 with the updated SKILL.md.
Error Messages/Logs
No error is surfaced in the app — the reinstall reports success but silently installs the stale version. Evidence:
Installed plugin version shows 1.0.0 while marketplace.json and plugin.json on main are 1.0.1.
Steps to Reproduce
- In a custom marketplace repo, edit a skill's SKILL.md; commit and push to the default branch (main).
- Bump the plugin version 1.0.0 → 1.0.1 in both .claude-plugin/marketplace.json and the plugin's plugin.json; push.
- Quit Claude (Cmd+Q) and clear the cache: rm -rf ~/.claude/plugins.
- Reopen Claude → remove the marketplace → re-add it from the GitHub repo → reinstall the plugin.
- Open a new conversation and inspect the installed skill.
Expected: The installed plugin reflects the latest commit (v1.0.1, updated SKILL.md).
Actual: The installed plugin is still v1.0.0 with the old SKILL.md. Verified with:
diff ~/.claude/skills/persuade/SKILL.md "$(find ~/Library/Application\ Support/Claude -name SKILL.md -path 'persuade' -newermt '-10 minutes' 2>/dev/null | head -1)"
which shows the installed copy is the old version, and the installed plugin's version reads 1.0.0.
Claude Model
Opus
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
Claude 1.13576.0 (1290fc) 2026-06-16T05:46:10.000Z
Platform
Other
Operating System
macOS
Terminal/Shell
Other
Additional Information
Additional Context
- Repeating after a version bump, a marketplace rename (changed the internal name in marketplace.json), and switching the repo private → public made no difference — it still installs v1.0.0.
- After re-adding the marketplace, ~/.claude/plugins/marketplaces/<name>/ does not reappear, suggesting the re-add isn't producing a fresh clone.
- Likely related: #43745 (updates don't sync), #41885 (auto-sync fetches but never pulls), #42411 (plugin update reports "not found").
- Also removed the explicit version from both plugin.json and the marketplace plugin entry (so versioning falls back to the git commit SHA, per the plugins-reference docs), pushed, purged ~/.claude/plugins, and reinstalled — it still installs the old skill. This rules out version-based deduplication as the cause; the installed plugin is simply never re-pulled from the repo.
4 Comments
FIX THIS! this prevents organization use claude for non technical users. We distribute basic skills from public repo.
We are hitting exactly this bug and can add hard evidence from a live Cowork session, including server-side timestamps.
Environment: Windows 11 x64, Claude Desktop 1.20186.7, private GitHub marketplace (3 plugins, no
versionfield — commit SHA acts as version), fine-grained PAT (Contents: Read-only) configured.Timeline:
updatedAtjumped to2026-07-02T13:49Z. Skills were current.main. More skill edits pushed during the following week.Evidence from a fresh Cowork session today (Jul 14):
The session's synced plugin manifest still shows the snapshot from Jul 2 — same plugin IDs,
updatedAtfrozen 12 days ago, despite multiple marketplace remove/re-add cycles in between:All skill files materialized in the session carry the old
Skill-Stand: 2026-07-02stamp; the repomainhas carried2026-07-07stamps for a week. Notably, an Anthropic-provided plugin in the same manifest showsupdatedAt: 2026-07-09— so snapshot refreshes work in general, just not for our marketplace.Key observation: On Jul 2, a marketplace-level remove + re-add triggered a server re-ingest (new plugin IDs). Since Jul 7, the same procedure reconnects to the existing stale snapshot — the plugin IDs no longer change. Whatever invalidation the marketplace removal used to trigger no longer happens.
Impact: There is no user-accessible way to get skill updates to app/Cowork users at all. The CLI channel (
claude plugin marketplace update) works fine and shows the correctgitCommitSha— only the account-level server snapshot is permanently stale.Happy to provide plugin IDs, marketplace ID, or session IDs privately if that helps debugging.
because of this bug, I have to distribute the skills from in-house private repo via zip like a caveman dragging his prey
I have the same issue. In my environment, I use an individual Max account and am collaborating with other individual Pro/Max users. Seems like there's a path forward to solving this via an organizational auto-sync webhook, but that's not viable for me since it's an organization feature.
I could work around by using the CLI, but don't want to because claude.app has some really great features I don't want to give up.