Maintaining security, system stability, and battery endurance on macOS requires governance over what software components execute automatically at startup or persist in the background. Starting in macOS Ventura and expanded in Sonoma and Sequoia, Apple introduced the Background Task Management (BTM) subsystem. BTM monitors LaunchDaemons, LaunchAgents, and login items, providing system notifications whenever software installs background persistent tasks. System administrators and power users can query, inspect, and manage these background tasks via the command-line utility sctl.
Understanding macOS Background Task Architecture
Background tasks in macOS fall into three architectural categories:
- LaunchDaemons: System-wide root background services stored in
/Library/LaunchDaemonsor/System/Library/LaunchDaemonsthat execute independently of user sessions. - LaunchAgents: Per-user background tasks located in
~/Library/LaunchAgentsor/Library/LaunchAgentsthat run within the context of a logged-in user. - Login Items & App Extensions: Sandboxed modern application components registered through the ServiceManagement framework to launch silently on boot.
Inspecting Registered Background Items with sctl
The sctl (Service Control) command interfaces directly with the Background Task Management daemon:
- Open Terminal on macOS.
- To list all registered background task management items across all developers and applications, execute:
sctl status - To print detailed JSON records including developer Team IDs, bundle identifiers, and cryptographic code signing status:
sctl dump
Disabling and Enabling Persistent Background Services
While users can toggle background apps visually in System Settings > General > Login Items & Extensions, enterprise administrators can script enforcement using sctl and launchctl:
# Query the current state of a specific background identifier:
sctl status | grep -i "com.vendor.service"
# Unload and disable an unwanted background daemon via launchctl:
sudo launchctl bootout system /Library/LaunchDaemons/com.unwanted.daemon.plist
sudo launchctl disable system/com.unwanted.daemon
Auditing Unauthorized or Unsigned Background Items
Malware and adware frequently attempt to achieve persistence by creating hidden LaunchAgents. To filter for background tasks lacking valid developer signatures or Team IDs:
# Extract unsigned or ad-hoc background items:
sctl dump | grep -B 2 -A 5 '"developer_identifier" : ""'
Any background task executing without an authenticated Apple Developer Team ID warrants immediate investigation. Check the path indicated in the item record and remove the associated property list (.plist) file if the service is unauthorized.
Managing Notifications for Background Tasks
To control whether macOS surfaces user notifications when new background daemons register:
- In enterprise MDM configurations, deploy the com.apple.servicemanagement configuration profile payload to pre-approve corporate background items (such as antivirus scanners or backup agents), suppressing intrusive user prompts.
Using sctl alongside launchctl equips macOS administrators with precise command-line control to audit startup persistence and optimize endpoint performance.