Persistently Disable a System Daemon with launchctl disable
launchctl enable/disable writes a persistent override so a daemon stays off across reboots and updates of its plist.
Run `sudo launchctl disable system/<label>` to keep a daemon off permanently, and `sudo launchctl print-disabled system` to review the list.
01Command
Command
$ sudo launchctl disable system/com.apple.example.daemon
# Confirm current state:
sudo launchctl print-disabled system | grep example02What it does
Unlike `launchctl bootout`, which only unloads a service until its plist is re-read, `disable` records a per-user or per-system override that launchd honors on every boot. The target takes the unusual `system/<label>` form — the domain, a slash, and the service label from the plist, not the file path. This is the supported hardening move for shrinking a Mac's attack surface without deleting Apple's files, since disabling survives macOS updates that would restore a removed plist.
03Risk
!Warning: Some Apple services are protected by SIP and re-enable themselves; check `print-disabled` output rather than assuming the disable took effect.
04Undo
Undo
$ sudo launchctl enable system/com.apple.example.daemon05Sources
- launchctl — macOS Command ReferenceEvidence: Documents enable/disable subcommands and the system/<label> syntax.
Last verified: 2026-09-17 · Category: Security & Privacy