Self-hosted marketplace: a newly added plugin never appears and the catalog cannot be refreshed (desktop + web)

Status Open
Maintainer reply None cached
Activity 0 comments · opened Sep 1, 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 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, Personal and 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-marketplace redirects back to the plugin list. The same URL pattern for plugin-a renders 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 only plugin-a. There is no UI anywhere to remove a marketplace, so the registration cannot be cleared. (plugin-a was 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-b existed. 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

  1. Create a private GitHub repository containing .claude-plugin/marketplace.json with exactly one plugin entry (plugin-a), plus the plugin folder with its own .claude-plugin/plugin.json.
  2. In the desktop app (or on claude.ai): Customize → Plugins → Add → Add marketplace → Add from a repository → select the repo → Sync.
  3. Install plugin-a from Discover. It works.
  4. Later, add a second plugin to the same repo: new folder plugin-b with its own .claude-plugin/plugin.json, plus a second entry in .claude-plugin/marketplace.json. Commit and push to the default branch.
  5. Confirm on GitHub that the manifest on the default branch now lists both plugins.
  6. 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.

  1. Try Add → Add marketplace → same repo → Sync.

→ "This marketplace has already been added." Nothing is refreshed.

  1. 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:

  1. 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.
  2. 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.

View original on GitHub ↗