[FEATURE] claude plugin update --all for bulk plugin updates from CLI

Resolved 💬 3 comments Opened May 1, 2026 by brian-deane-gusto Closed May 5, 2026

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

There is no canonical CLI command to update all installed plugins at once. claude plugin update <name> requires a positional argument; no --all flag exists. Users with many installed plugins (I have 17 across 5 marketplaces) must invoke the command once per plugin, or rely on the session-start plugin sync mechanism — which is silent on failure and gated by per-plugin version comparison (so a "no-op" sync for a stale plugin is indistinguishable from "everything is up to date").

This pattern of demand has surfaced repeatedly:

  • #11676 — direct request for claude plugin update-all. Auto-closed after 60 days of inactivity (not because it shipped). The autoclose bot's lock message instructs filing fresh, hence this issue.
  • #11713 — open community PR implementing a /update-plugins slash command, but it ships inside a separate developer-utilities plugin. Installing yet another plugin to manage plugins is awkward, and slash commands aren't reachable from non-interactive shells (CI, scripts, hooks).
  • #10265 — about session-start auto-update (largely shipped as autoUpdate: true). @ilepn's comment proposes /plugin update --all (submitted as separate feedback ID 463f7ab1-611c-4ebe-8657-bcec5962dc7c) but never escalated to a top-level issue.

Proposed Solution

Add --all to claude plugin update:

claude plugin update --all                  # update every installed plugin
claude plugin update --all --scope user     # restrict to a particular installation scope (existing --scope flag composed with --all)

Behavior:

  • Iterate installed_plugins.json
  • Run the existing per-plugin update path for each entry in scope
  • Report per-plugin success/failure with progress indicators
  • Exit non-zero if any plugin failed
  • Print a summary line ("Updated 4 of 17 plugins; 13 already current") so users can distinguish "no-op" from "nothing happened"

The slash-command equivalent (/plugin update --all) would be a natural follow-on, matching the CLI/slash parity established by other plugin commands.

Alternative Solutions

  • Shell wrappers (for p in $(claude plugin list --json | jq -r '.plugins | keys[]'); do claude plugin update "$p"; done) — workable, undiscoverable, fragile to scope nuances, and doesn't solve the silent-no-op problem
  • The community PR #11713's /update-plugins — ships as a plugin, slash-only, not reachable from CI/hooks/non-interactive shells

Priority

Medium - Would be very helpful

Feature Category

CLI commands and flags

Use Case Example

I maintain 17 plugins across 5 marketplaces (mix of Anthropic's official marketplace, my company's team-internal marketplace, and a few personal ones). When I notice colleagues using a skill I don't have, the canonical fix today is to manually run claude plugin update <name> for the relevant plugin — but I rarely know which plugin gained the skill. A claude plugin update --all command lets me refresh everything in one invocation, get a clear summary of what changed, and move on. It also makes the operation scriptable into hooks, CI, or shell startup.

---

Related: #11676 (closed for inactivity, not implemented), #11713 (open community PR, plugin-based alternative), #10265 (parent thread, primary ask shipped, --all discussed in comments).

🤖 Generated with Claude Code

View original on GitHub ↗

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