autoUpdate in extraKnownMarketplaces logs a successful sync but never persists to known_marketplaces.json

Status Fixed / completed
Reported on v2.1.220
Maintainer reply None cached
Activity 2 comments · opened Aug 2, 2026 · closed Aug 25, 2026

Summary

The documented per-marketplace autoUpdate opt-out is read from user settings and Claude Code logs a successful sync for each marketplace, but the value is never present in ~/.claude/plugins/known_marketplaces.json — not immediately after the sync, and not at any later point. The sync also does not re-fire on subsequent restarts, so the value is never restored.

Environment

  • Claude Code 2.1.220 (VS Code extension anthropic.claude-code), Linux (Ubuntu)
  • Three GitHub-backed marketplaces declared in ~/.claude/settings.json, plus claude-plugins-official

Steps to reproduce

  1. Declare marketplaces under extraKnownMarketplaces with "autoUpdate": false.
  2. Restart Claude Code.
  3. Inspect ~/.claude/plugins/known_marketplaces.json.

Observed

The sync logs success for all three marketplaces:

16:28:36.102 [DEBUG] Synced autoUpdate=false from settings for marketplace: dotnet-agent-skills
16:28:36.102 [DEBUG] Synced autoUpdate=false from settings for marketplace: caveman
16:28:36.102 [DEBUG] Synced autoUpdate=false from settings for marketplace: chillicream-agent-skills

The registry file was written in that same second (mtime 16:28:36), and inspected ~60 s later already lacked the field. The key is absent from every entry; the per-entry schema is exactly:

installLocation, lastUpdated, source

Across ten window sessions on this machine, those three lines at 16:28:36 are the only genuine sync events. Subsequent restarts (17:11, 18:58) produced none, despite the registry value still differing from settings — so the value is not re-synced after being lost.

Expected

autoUpdate persists in the registry, and re-syncs when it differs from settings.

Additional notes

  • Headless invocations (claude -p) do not reconcile marketplaces at all — no marketplace, reconcile, or refresh activity appears in 337 debug lines. Attempting to reproduce headlessly will not trigger the sync.
  • claude-plugins-official cannot be given this setting regardless, as it is not declared in extraKnownMarketplaces.

Impact

autoUpdate: false is the only user-facing control over when marketplace plugins — which ship hooks, MCP server definitions, and bin/ executables — advance to new commits. While it does not persist, there is no working opt-out. Related: #73914.

---

_Drafted by Claude (Anthropic AI assistant)._

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗