Restart a User LaunchAgent with bootout and bootstrap
Unload and reload a stuck or misbehaving user agent through launchd instead of killing its process.
01Command
$ launchctl bootout gui/$UID/<label> && launchctl bootstrap gui/$UID ~/Library/LaunchAgents/<label>.plist02What it does
bootout removes a service from your user's gui domain, which stops its process and drops launchd's in-memory state for it; bootstrap re-reads the plist on disk and starts the service as if you had just logged in. The legacy equivalents are launchctl unload and launchctl load, which Apple now marks as legacy and which still work on current macOS versions.
03Risk
04Undo
$ launchctl bootout gui/$UID/<label>05Sources
- launchctl — interact with launchd (macOS)Evidence: The page documents bootout domain/service-target as "Remove domain/service (equivalent to unload in the legacy syntax)", shows the gui/uid/[service-name] specifier form, and gives examples pairing bootout with the new syntax against legacy unload.
- launchctl(1) — macOS man pageEvidence: The man page documents bootstrap gui/uid <plist-path> to load a service into the user's gui domain and bootout gui/uid/service-label to remove it, noting these replace the legacy load/unload subcommands.
Last verified: 2026-09-19 · Category: System & Settings
06Related solutions
The modern launchctl interface — full state of any launchd job plus a restart that actually works.
Filter macOS's single unified log by process, message type, or subsystem straight from the Terminal.
Watch every open, write, and stat call happening on your disks and see exactly which process made it.