[BUG] claude.ai: Sync on a GitHub marketplace doesn't show newly added plugins until the marketplace is removed and re-added
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?
After adding a new plugin to a GitHub-hosted marketplace, clicking Sync on that marketplace in claude.ai reports success, but the new plugin doesn't appear. Existing plugins still show. Removing and re-adding the marketplace makes the new plugin appear right away.
What Should Happen?
Sync should list every plugin in the current marketplace.json, including newly added ones.
Error Messages/Logs
None. Sync shows no error.
Steps to Reproduce
- In claude.ai (Customize → Plugins), add a marketplace from a GitHub repo whose
.claude-plugin/marketplace.jsonlists one plugin. - Add a second plugin to the repo and to
marketplace.json, and push to the default branch. - Click Sync on the marketplace. The second plugin doesn't appear.
- Remove the marketplace and add it again. The second plugin now appears.
Claude Model
Not sure / Multiple models
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
2.1.296 (Claude Code)
Platform
Other
Operating System
Windows
Terminal/Shell
Other
Additional Information
Seen in claude.ai in the browser; the CLI isn't needed to reproduce.
Possibly the same root cause as these reports, where a marketplace or plugin cache isn't refreshed on update:
- #17361 Plugin cache never refreshes
- #21754 Structural changes to a local marketplace are not picked up until it's removed and re-added
- #43745 Custom marketplace plugins: updates don't sync
Related on claude.ai: #93825 (automatic sync never fires, manual works). Here the manual Sync also misses new plugins.
From the Claude Code 2.1.296 client: plugins for a claude.ai marketplace come from a server-built catalog at GET /api/oauth/organizations/:orgUUID/marketplaces/{marketplaceId}/plugins, fetched with If-None-Match, and a 304 reuses cached rows. Re-adding likely creates a new marketplaceId, so both catalogs start fresh. That points at Sync not adding new rows (or not changing the ETag) for an existing marketplace.