[BUG] Cowork installs stale cached plugin version; ignores all marketplace repo updates

Status Open
Maintainer reply None cached
Activity 4 comments · opened Jun 17, 2026

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

  1. In a custom marketplace repo, edit a skill's SKILL.md; commit and push to the default branch (main).
  2. Bump the plugin version 1.0.0 → 1.0.1 in both .claude-plugin/marketplace.json and the plugin's plugin.json; push.
  3. Quit Claude (Cmd+Q) and clear the cache: rm -rf ~/.claude/plugins.
  4. Reopen Claude → remove the marketplace → re-add it from the GitHub repo → reinstall the plugin.
  5. 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.

View original on GitHub ↗

4 Comments

tzvister · 1 month ago

FIX THIS! this prevents organization use claude for non technical users. We distribute basic skills from public repo.

DSS-AI · 1 month ago

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 version field — commit SHA acts as version), fine-grained PAT (Contents: Read-only) configured.

Timeline:

  • Jul 1: Marketplace added in the desktop app.
  • Jul 2: After discovering the ~24h server snapshot cache, we uninstalled all plugins, removed the marketplace itself, and re-added it — this worked: the server issued new plugin IDs and updatedAt jumped to 2026-07-02T13:49Z. Skills were current.
  • Jul 7: All 12 skills updated in the repo (each SKILL.md carries a date stamp line for verification), committed and pushed to main. More skill edits pushed during the following week.
  • Since then: No update ever reaches app chats / Cowork. We repeated the full procedure that worked on Jul 2 — uninstall plugins, remove the marketplace, re-add it (well outside any 24h window), reinstall, restart the app, open new chats. No effect.

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, updatedAt frozen 12 days ago, despite multiple marketplace remove/re-add cycles in between:

{
  "name": "generic-skill-name",
  "pluginId": "plugin_xxxxxxxxxxxxxxxxxxxxxxxx",
  "version": null,
  "updatedAt": "2026-07-02T13:49:45.017870Z"
}

All skill files materialized in the session carry the old Skill-Stand: 2026-07-02 stamp; the repo main has carried 2026-07-07 stamps for a week. Notably, an Anthropic-provided plugin in the same manifest shows updatedAt: 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 correct gitCommitSha — only the account-level server snapshot is permanently stale.

Happy to provide plugin IDs, marketplace ID, or session IDs privately if that helps debugging.

skldfm · 1 month ago

because of this bug, I have to distribute the skills from in-house private repo via zip like a caveman dragging his prey

s-sayler · 1 month ago

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.