What did your AI tools leave running?
Claude Code, Cursor, Codex and your editor start helpers: MCP servers, language servers, dev servers, node and Python processes. Many of them keep running after the session that started them is gone. Activity Monitor shows them as "node" or "python" with no name to blame.
This check takes ten seconds: open Terminal, paste one command, read the list. It reads your process list and changes nothing.
Run the check
Open Terminal, paste this, press Return.
ps -axo user=,pid=,ppid=,rss=,etime=,ucomm= | awk -v me="$USER" -v h="$HOME" '
{ p=$0; for (k=1; k<=5; k++) sub(/^ *[^ ]+ +/, "", p); sub(/ +$/, "", p) }
$1==me && p ~ /^(node|[Pp]ython[0-9.]*|deno|bun|ruby|java)$/ && ($3==1 || $5 ~ /-/) {
q="ps -o command= -p " $2; c=""; q | getline c; close(q)
if (substr(c,1,1)=="/" && (i=index(c, "/" p " "))) c=p substr(c, i+length(p)+1); else if (substr(c,1,1)=="/" && substr(c, length(c)-length(p))=="/" p) c=p
while (h!="" && (i=index(c,h))) c=substr(c,1,i-1) "~" substr(c,i+length(h))
t+=$4; n++; printf "%6d %7.1f MB %-10s %-12s %s\n", $2, $4/1024, ($3==1 ? "detached" : "over 1 day"), $5, substr(c,1,64) }
END { if (!n) { print "Nothing found: no developer processes left running."; exit }
printf "\n%d developer processes left running: %s, not counting memory macOS has compressed.\nTo end one: kill <the number in the first column>\n", n, (t<1048576 ? sprintf("%.0f MB", t/1024) : sprintf("%.2f GB", t/1048576)) }'Read the result
Each line is one process: its process id, the memory it holds now, why it is listed, how long it has run (days-hours:minutes:seconds), and its command. This is the founder's Mac on 7 November 2026. Two lines about his own project are left out and the total is counted without them; everything else is as printed. Most of these are MCP servers from an editor session four days old:
85356 4.6 MB over 1 day 04-01:57:59 node ~/.npm/_npx/15c61037b1978c83/node_modules/chrome-devtools-m
88509 1.8 MB detached 04-00:50:51 python3 -m http.server 4747 --bind 127.0.0.1
85251 1.0 MB over 1 day 04-01:58:03 npm exec shadcn@latest mcp
85252 1.0 MB over 1 day 04-01:58:03 npm exec chrome-devtools-mcp@latest --headless --isolated --view
85270 1.0 MB over 1 day 04-01:58:03 npm exec @magicuidesign/mcp@latest
85294 0.6 MB over 1 day 04-01:58:02 node ~/.npm/_npx/d66c5096c7023bfb/node_modules/.bin/shadcn mcp
85325 0.6 MB over 1 day 04-01:58:02 node ~/.npm/_npx/1026127bea1ad4a5/node_modules/.bin/mcp
85350 0.9 MB over 1 day 04-01:58:01 chrome-devtools-mcp
8 developer processes left running: 12 MB, not counting memory macOS has compressed.
To end one: kill <the number in the first column>
- detached: macOS's launchd is its parent. Usually whatever started it has quit and it kept running; it can also be a background service you started on purpose, such as one from
brew services. - over 1 day: still attached to an editor or agent session, but running for more than a day. MCP servers from a session you forgot about land here.
A line here is a candidate, not a verdict. A database, a server you meant to keep, or a background service you installed on purpose can show up too. The total is a floor: memory macOS has compressed or moved to disk is not counted.
What the command does
ps lists processes with their owner, parent, memory, age and program name. awk keeps only yours whose program is a developer runtime (node, Python, Deno, Bun, Ruby, Java), which is what MCP servers, language servers and dev servers run on, and only those that are detached or have run over a day. For each it asks ps for the full command and prints it, then a total. It ends nothing, writes nothing and sends nothing anywhere.
What to do next
You can end what you recognise yourself: kill followed by the number in the first column, for example kill 88509. Or let Blame do it for you: it finds these all day, names which tool left each one, checks the whole process tree before ending anything, and never touches databases, builds or anything busy without asking. Diagnosis and one-click fixes are free.