[FEATURE] Surface and toggle per-marketplace autoUpdate in the /plugin Marketplaces UI (IDE extension parity + list --json)
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, orextraKnownMarketplaces[<name>].autoUpdateinsettings.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: trueto 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-code2.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_plannedby 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
autoUpdatefromsettings.jsonwith 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 (
autoUpdatesync logged as successful but never persisted) are bugs that a visible per-marketplace state indicator would have made obvious immediately.