[FEATURE] Surface and toggle per-marketplace autoUpdate in the /plugin Marketplaces UI (IDE extension parity + list --json)

Status Open
Reported on v2.1.220
Maintainer reply None cached
Activity 0 comments · opened Aug 11, 2026

Preflight Checklist

  • [x] I have searched existing feature requests and this hasn't been requested yet
  • [x] This is a single feature request

Problem Statement

autoUpdate is a real, respected per-marketplace setting — the schema describes it as "Whether to automatically update this marketplace and its installed plugins on startup", and it drives observable behavior (marketplace refresh, plugin version bumps, a Plugins updated: … · Run /reload-plugins to apply notification, and pin-blocking when a version constraint holds an update back). But on the surfaces where most people manage plugins, there is no way to see or change it without hand-editing JSON.

On Claude Code 2.1.220:

1. The IDE extension's Manage Plugins → Marketplaces panel has no auto-update control at all. Each row exposes only refresh and delete. Its entire marketplace RPC surface is list_marketplaces, add_marketplace, remove_marketplace, refresh_marketplace, and the webview bundle contains zero references to autoUpdate.

The terminal TUI does have this — marketplace → details → Enable auto-update / Disable auto-update, plus a status line when it's on. So this is a surface-parity gap, not a missing feature.

2. The CLI can't supply the state either. claude plugin marketplace list --json omits autoUpdate (and lastUpdated):

[
  {
    "name": "claude-plugins-official",
    "source": "github",
    "repo": "anthropics/claude-plugins-official",
    "installLocation": "/Users/me/.claude/plugins/marketplaces/claude-plugins-official"
  }
]

and there is no --auto-update flag on any plugin marketplace subcommand — the set is add, list, remove, update. So a UI that wanted to display current state has no non-interactive source for it, let alone set it.

3. Even in the TUI, the list view doesn't show which marketplaces auto-update. Rows render name, source, N available, N installed, Updated {date}. The auto-update state only appears after drilling into one marketplace at a time.

Practical consequences: with several marketplaces registered you can't tell which are on rolling updates and which are effectively pinned without opening each one or reading two JSON files; IDE-extension users can't change it at all; and because the state is invisible, auto-update bugs are hard to even recognize as bugs. My own machine has autoUpdate: true declared for three marketplaces in settings.json while all four entries in known_marketplaces.json lack an autoUpdate key — I only found that by reading the files, which is exactly the failure mode #83368 describes.

Proposed Solution

1. Show the state on every marketplace row, in both the TUI list and the IDE extension panel. An auto-update badge, or extending the existing Updated {date} line to Auto · Updated {date} vs Pinned · Updated {date}. This is the cheapest and highest-value half: the TUI already computes the resolved value and carries it in the row data model — the list renderer just never reads it.

2. Expose the existing toggle over the extension's plugin RPC — a set_marketplace_auto_update request mirroring the TUI's toggle-auto-update action, plus a per-row control in the webview. Delegating to the CLI rather than reimplementing keeps the existing guard rails intact, including the seed-managed case ("is seed-managed … and auto-update is always disabled for seed content") and higher-precedence sources ("Auto-update for 'X' is set by {source} and can't be changed here").

3. Include autoUpdate and lastUpdated in claude plugin marketplace list --json, and add a non-interactive setter — e.g. claude plugin marketplace auto-update <name> --on|--off, or an --auto-update flag on add. Required for (2), and independently useful for scripting, CI, and onboarding automation.

4. Where the value comes from a higher-precedence source (managed settings, --settings, an --add-dir directory's settings), show it read-only with the source named. The CLI already produces exactly that string; the UI just needs to surface it instead of hiding the control.

Item 1 alone would be a worthwhile increment if the RPC work in 2–3 is too large — it at least makes current state legible and makes auto-update bugs diagnosable.

Alternatives Considered

  • Hand-editing ~/.claude/plugins/known_marketplaces.json, or extraKnownMarketplaces[<name>].autoUpdate in settings.json. Works, but it's undiscoverable, and per #83368 the settings→JSON sync doesn't always land — so you can't be confident the edit took effect.
  • Setting claudeCode.useTerminal: true to get the TUI toggle. Works today, but it means abandoning the extension UI entirely to flip one boolean.
  • Status indicator only, no toggle. See item 1 above — a good first step, not a substitute.

Priority

Medium

Category

Configuration and settings

Use Case

Managing an org marketplace alongside a few third-party ones. I need to know at a glance which sources can change under me between sessions — that's a supply-chain surface, not a cosmetic detail — and which are pinned. And I need to flip that per marketplace from whichever surface I'm already working in. Today the answer lives across two JSON files plus a per-marketplace drill-down that the IDE extension doesn't have at all.

Additional Context

  • Claude Code 2.1.220 (native install) · extension anthropic.claude-code 2.1.220-darwin-arm64 · VS Code 1.130.0 / Cursor 3.15.6 · macOS 26.5.2 (arm64)

Prior art and neighbors:

  • #54277 asked for exactly this on the Desktop surface. It was closed as not_planned by the staleness bot rather than by any decision, then locked — so this is a fresh issue rather than a comment there.
  • #51350 (open) is the declarative-config complement: enforce autoUpdate from settings.json with managed-settings precedence. #17815 is its closed-as-stale predecessor. Together with #54277 that's three attempts at this area lost to inactivity.
  • #78645 is the same visibility complaint for a neighboring field — marketplace and plugin source refs not surfaced in the UI.
  • #84401 (auto-update silent in both directions) and #83368 (autoUpdate sync logged as successful but never persisted) are bugs that a visible per-marketplace state indicator would have made obvious immediately.

View original on GitHub ↗