anthropics / anthropics/claude-code
Self-hosted marketplace: a newly added plugin never appears and the catalog cannot be refreshed (desktop + web)
- Ngôn ngữ chính
- Python
- Star
- 145k
- Fork
- 23.1k
- Chỉ số merge pull request
- Chỉ số pull request đang chờ
Mô tả
### Preflight Checklist
- [x] I have searched [existing issues](https://github.com/anthropics/claude-code/issues?q=is%3Aissue%20state%3Aopen%20label%3Abug) 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
```shell
Dialog: Add → Add marketplace → → 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//.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.
7. Try Add → Add marketplace → same repo → Sync.
→ "This marketplace has already been added." Nothing is refreshed.
8. 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`.
Hướng dẫn đóng góp
Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này
Hướng nghiên cứu
Reproduce the issue from Customize → Plugins → Discover and Add → Add marketplace → Sync in both the Mac desktop app and claude.ai. Trace the already-registered marketplace path and catalog refresh behavior; done means a newly pushed plugin appears in the marketplace source filter and is installable, or the UI provides a working way to refresh or remove the marketplace.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- github, python
- Lĩnh vực
- backend, frontend
- Loại issue
- Lỗi
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Sôi nổi
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 45/100