What Is launchd on a Mac and Why Is It Using CPU?
Scroll through Activity Monitor and you will find a process called launchd, with process ID 1. It rarely uses much CPU, but now and then it does, and it is not obvious why.
The short answer: launchd is the first process macOS starts and the manager that starts, stops and restarts almost everything else, from system services such as nsurlsessiond to your own background agents. It is essential and cannot be quit. When it uses CPU, the cause is almost always another program that keeps crashing and being restarted, not launchd itself.
What launchd is
Apple's manual page describes launchd as the "system wide and per-user daemon/agent manager" and says that "during boot launchd is invoked by the kernel to run as the first process on the system and to further bootstrap the rest of the system." That is why it always has PID 1.
From then on it starts services when they are needed, keeps the ones that must stay running alive, and stops the ones that are idle. Apple's terms are worth knowing:
- A daemon is a system-wide service with one copy for everyone.
- An agent is a service that runs separately for each logged-in user.
On our test Mac, running macOS 27.0.1, launchd ran as root with PID 1, and 436 of the 637 running processes were its direct children. launchctl list showed 541 jobs defined for the logged-in user alone.
Why is launchd using high CPU?
Most of the time launchd sits near zero. It works when it has to start or restart things, so it gets busy when:
- A background job keeps crashing. If a service exits and is configured to stay running,
launchdstarts it again. A job that crashes immediately on every start keepslaunchdbusy restarting it. - Many things start at once, such as right after login, when dozens of agents launch together.
If it stays busy, the real problem is the job it keeps restarting.
How to find the job that keeps restarting
In Terminal, list the jobs for your user:
launchctl list
The first column is the process ID, or - if the job is not running. The second is the last exit status. A job that keeps failing shows a non-zero status and, if you run the command a few times, a different process ID each time.
Two things to know when reading it:
-9is usually not a crash. It means the process was last ended with a kill signal, which macOS does routinely to idle or low-priority services, for example under memory pressure. The column is the status from the last time the job stopped, so a job can show-9while running normally now. On our test Mac several Apple services showed-9and were working normally.- Look at third-party names. A job named after an app you installed, crashing over and over, is the usual culprit. Updating or removing that app normally fixes it.
Can you quit launchd?
No. It is the parent of most processes on the Mac and macOS cannot run without it. There is nothing to gain from trying: the busy part is the job it is restarting, so fix that instead.
Is launchd safe?
Yes. It is part of macOS and runs from /sbin/launchd. A second process called launchd running from anywhere else would be worth investigating.
Keep an eye on it
MacStats keeps CPU, memory and the busiest processes one click away in the menu bar, so a sustained load is easy to spot, and with MacStats Pro you can click one of your own processes for a plain-English explanation. launchd itself runs as root, which MacStats does not list yet; when it is busy, launchctl list above shows which job is the cause.
macOS reports normal memory pressure.
↓8.03KB Live Activity
- 1MacStats16.4%›
- 2corespotlightd7.3%›
- 3Siri AI6.5%›
- 4dataaccessd2.3%›
- 1Google Chrome486.2 MB›
- 2Chrome Helper380 MB›
- 3OrbStack Helper373.6 MB›
- 4cmux296.7 MB›
MacBook Air, Apple M4 | 16 GB RAM | macOS 27.0
See what is keeping your Mac busy before you go digging.
Frequently asked questions
What is launchd on a Mac?
It is the first process macOS starts at boot and the manager that starts, stops and restarts system services and per-user agents. Apple describes it as the system wide and per-user daemon and agent manager.
Why does launchd have PID 1?
Because the kernel starts it first during boot, before anything else, so it receives process ID 1. It then starts the rest of the system.
Why is launchd using so much CPU?
Usually because a background job keeps crashing and launchd keeps restarting it. Run launchctl list in Terminal and look for a job with a non-zero exit status whose process ID changes each time you run it.
Can I quit launchd?
No. macOS cannot run without it, and most processes on the Mac are its children. Fix the job it keeps restarting instead.
Is launchd a virus?
No. It is part of macOS and runs from /sbin/launchd as root with process ID 1.