Self-hosted marketplace: a newly added plugin never appears and the catalog cannot be refreshed (desktop + web)
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 newly added to an already registered self-hosted marketplace never becomes visible or installable. The marketplace catalog appears to be read once — when the marketplace is first added — and never again. The UI offers no way to refresh it.
Setup: a private GitHub repo with .claude-plugin/marketplace.json, added as a marketplace weeks ago with one plugin (plugin-a) in it. plugin-a is installed and works. A second plugin (plugin-b) was later added to the same repo and pushed to origin/main.
The push is verifiably correct: on origin/main the manifest lists both plugins and all files of plugin-b are tracked; local main and origin/main point at the same commit.
plugin-b is nowhere in the UI:
- Customize → Plugins → Discover → Filter → Source lists only
Anthropic,Personaland one other self-hosted marketplace. The marketplace in question is not offered as a source at all — consistent with it having no uninstalled plugins from the app's point of view. - Navigating directly to
/customize/plugins/plugin-b%40my-marketplaceredirects back to the plugin list. The same URL pattern forplugin-arenders correctly, so the scheme is right.
There is no way to refresh the catalog:
- Add → Add marketplace → same repository → Sync answers "This marketplace has already been added" and performs no refresh. The button is a no-op for an already-registered marketplace.
- The installed plugin's ⋮ menu offers only "Edit with Claude" and "Remove" — no update, no sync.
- "Automatically sync" is enabled for this marketplace and produced no change over several hours.
- Removing the plugin does not release the marketplace registration. After removing
plugin-a, adding the repository again still returns "already been added", and the Discover list still offers onlyplugin-a. There is no UI anywhere to remove a marketplace, so the registration cannot be cleared. (plugin-awas reinstalled afterwards and works.) - The plugin detail page states "from my-marketplace · added 25 Aug" — the day the marketplace was first registered, weeks before
plugin-bexisted. That date never moves.
Reproduced identically in the web UI (claude.ai → Customize → Plugins), so this is not specific to the Mac client.
Secondary observation, possibly related: under Settings → Desktop App there is a visibly empty block between "Developer" and "Customize" — the layout reserves space for entries that are not rendered. A colleague on an older release of the desktop app still has the marketplace UI that allowed browsing a self-hosted marketplace and selecting individual plugins from it; that UI is not present in this release. Possibly the same regression as #38008.
What Should Happen?
After pushing a new plugin to an already registered self-hosted marketplace, the plugin should appear under Customize → Plugins → Discover (filtered by that marketplace as source) and be installable — the same way the first plugin was.
Failing that, there should be at least one way to force the catalog to be re-read:
- a working "Sync" on an already-registered marketplace, or
- an "Update" entry in the plugin or marketplace menu, or
- the ability to remove a marketplace and add it again.
Today none of these exist, which makes the state unrecoverable from the UI.
Error Messages/Logs
Dialog: Add → Add marketplace → <repo> → Sync
"Dieser Marketplace wurde bereits hinzugefügt."
("This marketplace has already been added.")
No refresh is performed; the dialog cannot be completed.
Plugin detail header (unchanged since first registration):
"von my-marketplace · 0.20.0 · 7 Skills · aktualisiert vor 2 Stunden"
Discover card:
"von my-marketplace · hinzugefügt 25. Aug."
The workaround recommended in #41885 / #43745 is not available here — there is no local
marketplace clone on this machine:
$ cd ~/.claude/plugins/marketplaces/my-marketplace && git pull
-bash: cd: /Users/<user>/.claude/plugins/marketplaces/my-marketplace: No such file or directory
Steps to Reproduce
- Create a private GitHub repository containing
.claude-plugin/marketplace.jsonwith exactly one plugin entry (plugin-a), plus the plugin folder with its own.claude-plugin/plugin.json. - In the desktop app (or on claude.ai): Customize → Plugins → Add → Add marketplace → Add from a repository → select the repo → Sync.
- Install
plugin-afrom Discover. It works. - Later, add a second plugin to the same repo: new folder
plugin-bwith its own.claude-plugin/plugin.json, plus a second entry in.claude-plugin/marketplace.json. Commit and push to the default branch. - Confirm on GitHub that the manifest on the default branch now lists both plugins.
- Go to Customize → Plugins → Discover and look for
plugin-b.
→ It is not there, and the marketplace is not even offered in the Source filter.
- Try Add → Add marketplace → same repo → Sync.
→ "This marketplace has already been added." Nothing is refreshed.
- Optional, to show the registration cannot be cleared: remove
plugin-a, then repeat step 7.
→ Same message, and the catalog still contains only plugin-a.
Note: steps 6–8 behave identically in the web UI and in the Mac desktop app.
Claude Model
None
Is this a regression?
Yes, this worked in a previous version
Last Working Version
Exact build unknown — a colleague on an older desktop release still has the marketplace browsing UI that is missing in 1.40609.0
Claude Code Version
Claude for Mac 1.40609.0 (f65e38), build 2026-08-27 18:19 (desktop app / web UI — not the CLI)
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Terminal.app (macOS)
Additional Information
Why this is not a duplicate of #73907. That report (closed as not planned, Windows) is about an installed plugin not receiving version updates, and its author notes a workaround: "remove the marketplace itself, restart the app, re-add". This report is different in two ways:
- The symptom is a new plugin that never appears at all — not a stale version of an installed one. The marketplace is not even offered in the Source filter.
- That workaround no longer exists. In this release there is no way anywhere in the UI to remove a marketplace. Removing the plugin does not release the registration, and re-adding the repository is refused with "This marketplace has already been added". The state is therefore unrecoverable, where on the older/Windows build it was at least repairable.
Impact: a self-hosted marketplace can be populated only once. It can never gain a second plugin, because the catalog is read at registration time and never again, and the registration cannot be removed.
The remaining options both defeat the purpose of using a marketplace:
- uploading the plugin manually — the installed copy then has no link to its repository, so repository and installed state drift apart with the next change;
- creating a new repository per plugin, so every plugin gets a marketplace the app has never seen.
Related issues: #73907, #38185, #40600, #41885, #44276, #43745, #33718, #38008.
Beyond those, two points appear uncovered: the "already added" dialog being a dead end with no way to remove a marketplace, and the absence of any local marketplace cache in this setup, which removes the git pull workaround suggested in #41885 / #43745.
Suggested labels: area:cowork, area:plugins.
Screenshots can be supplied on request. Names of the private repository and its plugins have been replaced with my-marketplace / plugin-a / plugin-b.