Claude might be saturating your machine A developer discovered that a Claude Code session left behind ten orphaned zsh processes that had been saturating all CPU cores for nearly two days. The processes were remnants of a load-testing script that failed to clean up because job control was disabled in the non-interactive shell. The developer shared a prompt to help others identify similar orphaned processes by checking load averages, parent PIDs, and full argument lists. My laptop was sitting idle with the fan at full tilt. Nothing was running that I knew of. The culprit turned out to be ten orphaned busy-loops left behind by a Claude Code session two days earlier. If your fan is roaring right now and you would rather not read the rest, paste this into a Claude Code session: My machine seems idle but the fan is at full speed. Check the load average against my core count, then list the top CPU consumers with their PPID, elapsed time, and full argument list. I am looking for orphaned processes: anything reparented to PID 1 that has been burning CPU for hours or days, especially shells and interpreters where the process name alone tells you nothing. Show me what you find and what each one actually is before killing anything, and let me confirm the list first. The "show me before killing" part is the important bit, and it is why the prompt is written that way rather than as "find and kill whatever is using CPU." A long-running process pinned to PID 1 is a strong hint that something was abandoned, but it is not proof. Daemons legitimately live there, and your own nohup 'd job or a detached build will look identical from a distance. Read the argument list before you agree to anything. In my case the arguments made it obvious in about two seconds. Start with the load average. This is a 10-core machine: bash $ uptime 19:39 up 6 days, 6:14, 10 users, load averages: 122.91 167.84 162.08 Load 122 on 10 cores is not idle. Next, the top CPU consumers: bash $ ps -Ao pcpu,pid,ppid,user,comm -r | head -12 %CPU PID PPID USER COMM 139.8 8320 1 user /Applications/Google Chrome.app/Contents/MacOS/Google Chrome 60.9 94281 1 user /bin/zsh 59.4 94279 1 user /bin/zsh 59.4 94288 1 user /bin/zsh 59.1 94287 1 user /bin/zsh 57.9 94285 1 user /bin/zsh 57.6 94284 1 user /bin/zsh 57.6 94286 1 user /bin/zsh 57.3 94283 1 user /bin/zsh 55.9 94282 1 user /bin/zsh 51.1 94280 1 user /bin/zsh Ten zsh processes at roughly 60% each, and every one has PPID 1 . That is the tell: their parent died and launchd adopted them. comm only gives you the binary name, so pull the full argument list to see what they actually are: bash $ ps -o pid,lstart,etime,pcpu,args -p 94279,94280,94281 Note the comma-separated list. Passing -p alongside -A silently gets you every process on the box instead. The arguments explained everything: /bin/zsh -c source ~/.claude/shell-snapshots/snapshot-zsh-XXXX.sh 2 /dev/null || true && eval ' SP=/private/tmp/claude-501/