- Docker Desktop has its own disk. Every image, container, volume and build cache lives inside one virtual disk (
Docker.raw) with a fixed size limit. Your Mac can have hundreds of GB free while that disk is at 97 % and builds fail withno space left on device. - On dev Macs it fills up fast. Agents and worktrees build images, spin up throwaway containers and leave build cache behind. Nobody cleans it.
- Two fixes, use both: raise the limit (Settings → Resources → Advanced → Disk usage limit) and install this LaunchAgent, which prunes rebuildable things weekly, or right away when the disk passes 80 %.
- Volumes are never touched. They hold your local databases. Prune them by hand when you know what's inside.
- AI coding tools leak MCP processes. When a conversation or session ends, clients such as Google Antigravity (and others) often leave their MCP servers running. On macOS they are re-parented to
launchd(PPID 1) and live forever. [1][2][3] - With the Cloudflare MCP servers this hurts twice. Each leaked
mcp-remotebridge keeps an authenticated session to Cloudflare. Pile up enough of them and the Cloudflare API answers HTTP 429 (rate limited). They also eat RAM. - Reap orphans, not old processes. The safe signal is "my parent is gone" (PPID 1), not "I'm older than N hours". Killing by age also kills live sessions and live dev servers, and a dev server whose runtime you kill just respawns it, forever.
- Install once, check the log. A per-user LaunchAgent runs every 30 min. It shows up in Login Items as
cf-zombie-clean.shand logs every PID it kills.
fseventsdis not malware. It is Apple's file-change daemon. Spotlight, Time Machine, Dropbox, IDEs, dev servers, Docker and AI agents all depend on it. Its memory budget is ~30 MB.- On dev Macs it leaks. Lots of watcher churn (AI agent sessions, dozens of git worktrees, long-running
wrangler dev/vite/esbuildwatchers, test runners) makes it grow to tens of GB. It never gives that memory back, pins a CPU core and pushes the Mac into swap. - Restarting it is safe and instant:
sudo kill -TERM $(pgrep -x fseventsd).launchdrespawns it at a few MB. There is no config knob, and the daemon can't be disabled. - Prevent and watch: exclude your projects folder and every hidden folder in
~from Spotlight, clean up stale worktrees, orphaned watchers and headless browsers, and install the alert below. It shows a Restart button forfseventsdand a Close them button for orphaned dev processes, and ne
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| _377921c1b414c313d0310f0e159870a3.adiberia.com. 1 IN CNAME 2d80b2c192970a715c9e6e6858e933ee.91a6ce27ae1824777bd984e3f687e557.Wb3DsP6B.comodoca.com. | |
| _48b3de17868bc969af063831893cee3b.adiberia.com. 1 IN CNAME a3ce56287dc626d75ab8b625e94700a9.05f1017c3e99ec8f0b1d59c0c824abd5.sectigo.com. | |
| _dmarc.adiberia.com. 1 IN TXT "v=DMARC1;p=none;" | |
| _sip._tls.adiberia.com. 1 IN SRV 100 1 443 sipdir.online.lync.com. | |
| _sipfederationtls._tcp.adiberia.com. 1 IN SRV 100 1 5061 sipfed.online.lync.com. | |
| acdkim1._domainkey.adiberia.com. 1 IN CNAME dkim.acdkim1.acems1.com. | |
| acdkim2._domainkey.adiberia.com. 1 IN CNAME dkim.acdkim2.acems1.com. | |
| adiberia.com 3600 IN SOA mario.ns.cloudflare.com. dns.cloudflare.com. 2046210118 10000 2400 604800 3600 | |
| adiberia.com. 1 IN A 13.80.255.59 | |
| adiberia.com. 1 IN MX 10 adiberia-com.mail.protection.outlook.com. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| "tail /opt/hybris/data/hybristomcat.java.pid".execute().text | |
| "jmap -dump:format=b,file=/NFS_DATA/transfer/incoming/export/20181014-heapdump.bin 91724".execute().text | |
| "tar -zcvf /NFS_DATA/transfer/incoming/export/20181014-heapdump.bin.tgz /NFS_DATA/transfer/incoming/export/20181014-heapdump.bin.hprof".execute().text | |
| "chmod 777 /NFS_DATA/transfer/incoming/export/20181014-heapdump.bin.addons".execute().text | |
| "chmod 777 /NFS_DATA/transfer/incoming/export/20181014-heapdump.bin.tgz".execute().text |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| # REPO_NAME=<repo>.git | |
| # ORIGIN_URL=git@<host>:<project>/$REPO_NAME | |
| # REPO1_URL=git@<host>:<project>/$REPO_NAME | |
| rm -rf $REPO_NAME | |
| git clone --bare $ORIGIN_URL | |
| if [ "$?" != "0" ]; then | |
| echo "ERROR: failed clone of $ORIGIN_URL" |