[FEATURE] Per-marketplace alwaysFetch setting to bypass version check during plugin sync
Preflight Checklist
- [x] I have searched existing requests and this feature hasn't been requested yet
- [x] This is a single feature request (not multiple features)
Problem Statement
Plugin sync at session start is version-driven: it updates an installed plugin only when the upstream version field has changed (in plugin.json or marketplace.json).
This is intentional and correct design — version-gating avoids hitting the network for every plugin on every session start. The implicit assumption is that upstream maintainers bump the version field whenever they ship a change. For well-maintained marketplaces (Anthropic's official, mature third parties) that assumption holds. For marketplaces with looser version-bump discipline — typically team-internal marketplaces with multiple contributors — the assumption breaks: maintainers ship new skills/agents/hooks without a version bump, and consumers silently miss them. There is no banner, no "you're behind" indicator, and no mechanism to override the version check from the consumer side.
This request is the inverse of existing sync-bug issues — please don't fold it into them:
- #14061 (
/plugin updatedoesn't invalidate cache), #48912 (new top-level dirs not materialized), #54276 (Desktop fails to detect newer versions across all four version-strategy permutations) — these all argue plugin sync is broken at detecting genuine version changes. - This request assumes plugin sync correctly respects the version field, and asks for an opt-out for marketplaces where version discipline is known to be unreliable.
The cleanest fix lives at the maintainer side (CI version-bump checks, switching plugin source mode in marketplace.json from relative-path to git-subdir so updates flow on every commit). But as a consumer of marketplaces I don't control, I have no lever today.
Proposed Solution
A new per-marketplace boolean in extraKnownMarketplaces:
{
"extraKnownMarketplaces": {
"my-team-marketplace": {
"source": { "source": "github", "repo": "my-org/plugins" },
"autoUpdate": true,
"alwaysFetch": true
}
}
}
When alwaysFetch: true is set, plugin sync skips the version comparison for plugins from that marketplace and always re-fetches from source on session start. Users willingly accept the per-session refetch cost (network, disk, startup latency) on a per-marketplace basis where the cost is justified.
Equivalent surfaces if a settings key is undesirable:
- An environment variable:
CLAUDE_PLUGIN_FORCE_REFETCH=1(global) orCLAUDE_PLUGIN_FORCE_REFETCH=marketplace-a,marketplace-b(selective) - A
--refetchflag onclaude plugin update <name>that bypasses the version comparison for one-shot manual force-update
Alternative Solutions
- Per-plugin manual
/plugin update <name>— today's workaround. Doesn't scale; you only do it after noticing staleness, which is the whole problem. - Sibling request:
claude plugin update --all(filed at #55415) — solves a different shape of the same pain.--alllets you blast through staleness reactively when you notice;alwaysFetchprevents silent staleness from accumulating in the first place. - Maintainer-side CI checks enforcing version bumps — the right fix in principle, but outside the consumer's control.
- Source-mode swap (
relative-path→git-subdir) in the marketplace's ownmarketplace.json— also outside the consumer's control, and requires the marketplace owner to change semantics for all consumers.
Priority
Medium - Would be very helpful
Feature Category
Configuration and settings
Use Case Example
I work in a 17-plugin team-internal marketplace with multiple contributors. Despite a documented "always bump the version" rule in the repo's CLAUDE.md, version bumps are often missed because the rule is enforced by humans, not CI. Colleagues mention skills they have that I don't — and the only reliable fix today is for me to manually /plugin update <name> after noticing the gap. With alwaysFetch: true on that one marketplace, plugin sync would force-refetch each session, the cost would be a few seconds at startup (acceptable), and the symptom would disappear without anyone needing to fix maintainer discipline.
I'd leave Anthropic's official marketplace at default (no alwaysFetch) since version discipline there is reliable.
---
Related: #10265 (parent — autoUpdate shipped, version-bypass not addressed), #14061 / #48912 / #54276 (sync-detection bugs, distinct from this opt-out request), #55415 (complementary, not duplicate: reactive bulk update vs this proactive force-refetch).
🤖 Generated with Claude Code
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗