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
- Lingua principale
- Python
- Stelle
- 145k
- Fork
- 23.1k
- Metriche di merge delle PR
- Metriche PR in attesa
Descrizione
### 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.
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Direzione di ricerca
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.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- cloud
- Ambito
- backend-api-design, cloud, devtools
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Attiva
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 48/100