anthropics / anthropics/claude-code

Plugin marketplace auto-update and manual refresh both non-functional (autoUpdate: true never fires)

Open
#95,175 0 comments 0 reactions 0 assignees View on GitHub
area:plugins bug has repro platform:macos
Dominant language
Python
Stars
145k
Forks
23.1k
PR merge metrics
PR metrics pending

Description

## Summary
`autoUpdate: true` is correctly configured for a registered Claude Code plugin marketplace, but the plugin cache has not refreshed in 2+ weeks. Three independent manual refresh paths (`/plugin install`, the Discover-tab UI, and re-registering the marketplace via script) were all attempted and none updated the cached plugin content.

## Environment
- OS: macOS 14.4 (Build 23E214)
- Claude desktop app: 2.110.1
- Claude Code: 2.1.260
- Plugin: a private GitHub-backed marketplace registered in `~/.claude/settings.json` under `extraKnownMarketplaces.` with `"autoUpdate": true`

## Expected behavior
Per the documented behavior, a marketplace registered with `autoUpdate: true` should refresh in the background shortly after each session starts, keeping the installed plugin's skills current with the source repo's `main` branch.

## Actual behavior

1. **Background auto-update has not fired in 2+ weeks, across every registered marketplace, not just one.** `~/.claude/plugins/known_marketplaces.json`'s `lastUpdated` field was frozen for all 4 registered marketplaces despite many Claude Code sessions started since those dates:
- A private marketplace with `autoUpdate: true`: frozen at `2026-09-03T12:38:28Z`
- Anthropic's own public `claude-plugins-official` marketplace: frozen at `2026-09-07T09:56:24Z`
- `openai-codex` (public): frozen at `2026-09-04T11:08:29Z`
- `agent-talk` (public): frozen at `2026-09-04T11:46:10Z`

None have updated, which points to the background refresh mechanism itself not running, independent of any single marketplace's config or auth.

2. **`/plugin install @` does not perform a scriptable install.** Instead of installing directly, it opens the general Plugins picker UI and appears to ignore the `install ` argument entirely.

3. **Re-registering the marketplace via a config-writing script had no effect on cached content.** A script that directly rewrote the `extraKnownMarketplaces.` entry in `~/.claude/settings.json` (same shape, same `autoUpdate: true`) ran successfully and the settings file confirmed the write — but the plugin cache was untouched afterward.

4. **Manually using the UI (Settings → Plugins → Discover → search → install) also failed to refresh content.** After this action:
- One file in the cache showed today's mtime, but its content was unchanged from the old snapshot.
- A file that only exists in the latest merged source is still absent from the cache entirely.
- `known_marketplaces.json`'s `lastUpdated` for the marketplace remained frozen at its original stale date.

5. **Version confirms the staleness directly:** the cached plugin's own manifest reported a version three releases behind the true current version on the source repo's `main` branch.

6. `/reload-plugins` reports success (e.g. "Reloaded: 4 plugins · 65 skills · 7 agents · 3 hooks · 0 plugin LSP servers") but only re-registers whatever is *already* cached — it does not fetch anything from the marketplace source, so it gives false confidence that a refresh occurred.

## Impact
Any plugin distributed via an `extraKnownMarketplaces` GitHub marketplace with `autoUpdate: true` appears to never refresh in this environment, and no available manual command or UI path currently works around it. Users have no reliable way to get a marketplace-distributed plugin's skills to actually update short of this being fixed.

Contributor guide

No contributing guide indexed for this repository

Research direction

Reproduce the reported refresh paths—/plugin install, the Discover UI, marketplace re-registration, and /reload-plugins—while comparing ~/.claude/plugins/known_marketplaces.json and cached plugin files with the source repository. Trace the marketplace background-refresh entry point and determine why lastUpdated and cached content remain unchanged. Done means autoUpdate refreshes on session start and manual paths fetch current content and update the cache.

Written by the indexing model from the issue text.

Assessment

Tech stack
github, python
Domain
cli, tooling
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.