[Bug] Bulk `claude plugin marketplace update` leaves orphan child processes alive for 10+ minutes
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
- Install Claude Code 2.1.142.
- Have many marketplaces installed (mine: 276; behavior likely manifests with fewer).
- From a shell, run
claude plugin marketplace update. - Wait for the CLI to print "✔ Successfully updated N marketplace(s)" and return to the shell.
- In another shell, run
ps -eo pid,ppid,etime,args | grep "[c]laude plugin marketplace update". - 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
psscan 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
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗