[Bug] Bulk `claude plugin marketplace update` leaves orphan child processes alive for 10+ minutes

Resolved 💬 1 comment Opened May 15, 2026 by Emasoft Closed Jun 13, 2026

Bug Description
Bulk claude plugin marketplace update leaves orphan child processes alive for 10+ minutes after completion

Summary

Running claude plugin marketplace update (the bulk form, no marketplace-name argument) spawns helper child processes for parallel marketplace fetches. When the user-visible CLI completes (prints "✔ Successfully updated N marketplace(s)" and returns), those helper processes are NOT cleaned up — they survive as orphans (PPID=1, reparented to init) for 10–25+ minutes before exiting on their own. In a long-running session that triggers the bulk command on a recurring schedule, orphans accumulate.

Reproduce

  1. Install Claude Code 2.1.142.
  2. Have many marketplaces installed (mine: 276; behavior likely manifests with fewer).
  3. From a shell, run claude plugin marketplace update.
  4. Wait for the CLI to print "✔ Successfully updated N marketplace(s)" and return to the shell.
  5. In another shell, run ps -eo pid,ppid,etime,args | grep "[c]laude plugin marketplace update".
  6. Observe several orphan processes (PPID=1) with the exact cmdline claude plugin marketplace update, alive for 10–25+ minutes after the bulk command "completed".

Observed

After ~25 minutes of running the bulk command at 5-min intervals on macOS / 2.1.142 with 276 marketplaces:

PID PPID ELAPSED ARGS
25021 1 22:14 claude plugin marketplace update
27413 1 01:28 claude plugin marketplace update
28138 1 11:39 claude plugin marketplace update
52829 1 19:39 claude plugin marketplace update
60081 1 19:07 claude plugin marketplace update

All have PPID=1 (original spawner died), all have no marketplace-name argument (so they're not per-marketplace child invocations), and they idle for many minutes.

Expected

After claude plugin marketplace update exits with success, the helper subprocesses it spawned for parallel marketplace fetches should be reaped/joined before the CLI returns. Alternatively, they should not survive past their parent.

Environment

  • Claude Code: 2.1.142
  • OS: macOS Darwin 24.6.0 (Apple Silicon)
  • Marketplaces installed: 276
  • Trigger context: a recurring CronCreate-armed heartbeat in my ai-maestro-janitor plugin runs the bulk command every 5 minutes via a tracked, serialized worker (only ONE process per cron fire originates from my plugin — the rest are internal helpers spawned by the CLI itself).

Impact

  • Low severity: each orphan is idle (no CPU), uses small memory. But they easily compound when updates are regular.
  • Aliasing: any tool tracking "is a bulk marketplace update running?" via ps scan gets false positives from orphans.
  • In a multi-day session with recurring bulk-refresh, orphan count grows then plateaus around the duration helpers stay alive (~25 min in my observation).

Environment Info

  • Platform: darwin
  • Terminal: iTerm.app
  • Version: 2.1.142
  • Feedback ID: cad9ab75-ef79-4bdb-8eb9-c88fc1d82aa2

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗