4 Ways a 'Retired' launchd Job Kept Running on a 160+ Job Fleet — and the 3 Commands That Actually Stop It A developer running a fleet of more than 160 launchd jobs on a rarely-rebooted Mac found that renaming a job's plist file to a .plist.retired extension does not stop it, because launchd identifies jobs by the Label key inside the plist rather than by file name. The writeup documents four ways a retired job keeps executing and three commands that actually unload it, noting that macOS 13 and later excludes non-.plist extensions from directory watching. I run more than 160 launchd jobs on a Mac that almost never reboots. That fleet is what carried me from a ¥100k/month student side gig to ¥600k juggling multiple jobs, back down to zero after a layoff, and then — six months of rebuilding a Claude Code autonomous setup later — past ¥1.2M/month in revenue. Keeping that automation alive has taught me something I didn't expect: cleanly stopping a job is far harder than starting one. Renaming a file to .plist.retired does not stop the job. launchd keeps running it. launchd doesn't identify jobs by file name. It identifies them by the value of the Label key inside the plist. Take a file that actually sits in my environment in the .retired state: ~/Library/LaunchAgents/com.shun.zenn-daily.plist.retired .