anthropics / anthropics/claude-code

[BUG] Account-level plugins never sync to Claude Code on the web (plugins_sync count: 0) while account skills sync fine

Đang mở
#92,031 2 bình luận 1 reaction 0 người được giao Xem trên GitHub
area:claude-code-web area:plugins bug platform: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?

Plugins installed at the account level (claude.ai -> Settings -> Customize -> Plugins)
never reach Claude Code on the web / remote cloud sessions.

Account-level SKILLS sync into the same session correctly, so the transport works.
Only the plugin half comes back empty. The sync runs, no gate closes, and the server
returns an empty plugin list.

Net effect: there is no way to enable a plugin for all projects without owning a
computer that runs the Claude Code CLI or desktop app. Phone-only users cannot use
plugins at all, and someone with two computers has to repeat the setup on each.

### What Should Happen?

An enabled account-level plugin should be available in Claude Code web/cloud sessions,
the same way account-level skills already are.

### Error Messages/Logs

```shell
plugins_sync_starting
plugins_sync_no_changes {"count":0,"duration_ms":600,"list_ms":177,"had_manifest":false}
[DEBUG] installed_plugins.json doesn't exist, returning empty V2 object
[DEBUG] Found 0 plugins (0 enabled, 0 disabled)
[DEBUG] Total plugin skills loaded: 0
[DEBUG] Registered 0 hooks from 0 plugins

Same session, same sync pass, skills succeed:
skills_sync_starting
skills_sync_complete {"downloaded":9,"removed":0,"duration_ms":1867}

Repository-settings workaround, on the session's own branch:
installPluginsForHeadless: starting
installPluginsForHeadless: no marketplaces declared
```

### Steps to Reproduce

1. claude.ai -> Settings -> Customize -> Plugins -> Add -> Add marketplace ->
Add from a repository -> https://github.com/DietrichGebert/ponytail
2. Install the `ponytail` plugin. Its page shows 6 skills, 3 hooks, toggle ON.
3. Open a NEW Claude Code session on the web (claude.ai/code).
4. Run: ls -la ~/.claude/plugins/synced/*/
-> empty
5. Run: grep -h '"event":"plugins_sync' /tmp/claude-code-*.diag.log | tail -5
-> plugins_sync_no_changes {"count":0,"had_manifest":false}
6. Call ListPlugins -> {"results":[]}
7. Compare: ls ~/.claude/skills/synced/*/ -> all 9 account skills present.

### Claude Model

Opus

### Is this a regression?

No, this never worked

### Last Working Version

_No response_

### Claude Code Version

2.1.260

### Platform

Anthropic API

### Operating System

Windows

### Terminal/Shell

Other

### Additional Information

Workarounds tried, all fail:

1. Settings -> Claude Code: no plugin toggle exists anywhere on that page.
2. Plugin page's ... menu: only "Remove". No per-surface option.
3. Repository .claude/settings.json with extraKnownMarketplaces + enabledPlugins,
verified on the session's own branch: "no marketplaces declared", logged in the
same millisecond as "starting". Project settings appear not to be read, which
contradicts the settings docs describing extraKnownMarketplaces as
repository-level.
4. /cloud-plugins consent: needs a machine running the CLI or desktop app, and the
prompt is scoped to "cloud sessions you run from this machine" - so it does not
cover a second computer, and never covers a phone.

Why this looks like a gap rather than a design choice: the account-level plugin sync
path already exists and mirrors the skills one exactly.

{ settingKey: "syncClaudeAiPlugins",
policyKey: "allow_account_plugins_sync",
flagName: "tengu_account_plugins_sync_enabled" }

Skills use allow_account_skills_sync and work. Same architecture, same
/api/oauth/organizations/:orgUUID/plugins/list-plugins endpoint shape. One half
delivers, the other returns nothing.

No gate ever closed - no flag_off, org_denied, gate_closed or policy_verdict_pending
in the diagnostics log.

Environment: CLAUDE_CODE_ENTRYPOINT=remote,
CLAUDE_CODE_REMOTE_ENVIRONMENT_TYPE=cloud_default, personal account, no org admin
access, no machine has ever run /cloud-plugins.

Request: make account-level plugins sync to web/cloud sessions the way account-level
skills already do. Failing that, document that plugins require a computer, and make
extraKnownMarketplaces in repository settings work for cloud sessions.

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 remote session behavior and inspect the plugins_sync diagnostics alongside skills_sync. Start with the /api/oauth/organizations/:orgUUID/plugins/list-plugins path and the repository-settings workaround logs. Done means an enabled account-level plugin appears in the cloud session's synced plugins and ListPlugins results, with diagnostics showing a non-empty sync.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
cloud
Lĩnh vực
backend-api-design, cloud, devtools
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
48/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.