What Are Startup Items on Mac?
Every time your Mac boots or you log in, macOS runs a list of programs automatically — before you have even clicked a single icon. These are your startup items: background processes, helper utilities, auto-updaters, telemetry daemons, Bluetooth adapters, cloud sync services, and more. Some of them you installed deliberately. Many were added silently by applications during installation, knowing that most users will never notice or audit the list.
Startup items fall into two broad categories on macOS: those managed through the modern Login Items interface (simple app-level toggles introduced in macOS Ventura) and those registered as low-level LaunchAgents or LaunchDaemons via Apple's launchd system. The launchd items are the real culprits behind long boot times because they operate at a layer below what System Settings shows you, and they can auto-restart themselves even after you force-quit them.
Understanding the distinction between these types — and knowing where each category lives on disk — is the key to managing your startup items effectively and safely.
LaunchAgents vs LaunchDaemons Explained
Apple's launchd is the master process manager on macOS. It replaces the old Unix cron and init systems, and it is responsible for starting, stopping, and supervising virtually every background process on your Mac. Applications register services with launchd by placing small XML configuration files called property list files (with the .plist extension) into specific directories. When macOS boots or when you log in, launchd reads these files and starts the corresponding programs.
There are two fundamental types of launchd services, and the distinction matters enormously for safety:
LaunchAgents
A LaunchAgent is a background process that runs in the context of a specific logged-in user. It starts when you log in and stops when you log out. LaunchAgents can interact with your user interface, access your home directory, and run as your account. Examples include cloud sync clients (Dropbox, Google Drive), app update checkers (Spotify, Adobe, Slack), developer tool helpers (Xcode's device daemon), and custom scripts that developers or power users have registered. Because LaunchAgents run as your user account, the corresponding plist files are stored in directories you own and have full permission to modify.
LaunchDaemons
A LaunchDaemon is a system-wide background process that runs as root, independent of any logged-in user. Daemons start at boot, before any user logs in, and keep running even when no one is using the machine. They handle low-level tasks: network configuration, disk health monitoring, security services, printer management, and macOS system internals. Because they run as root with elevated privileges, their plist files are stored in system-owned directories that require administrator authentication to modify — and many are protected by System Integrity Protection (SIP), meaning they cannot be deleted even with root access.
The practical rule: LaunchAgents in your home folder (~/Library/LaunchAgents) are yours to manage freely. Everything in /Library/ and /System/ requires careful judgment, and system daemons protected by SIP should never be touched.
Where Startup Items Live on Disk
Apple organizes launchd plist files across several directories, each with a distinct scope and ownership. Knowing these locations lets you audit what is registered on your system without relying on any third-party tool.
| Directory | Type | Scope | Who Can Edit |
|---|---|---|---|
~/Library/LaunchAgents |
LaunchAgent | Current user only, runs at login | You (no password needed) |
/Library/LaunchAgents |
LaunchAgent | All users, runs at each user's login | Administrator password required |
/Library/LaunchDaemons |
LaunchDaemon | System-wide, runs at boot as root | Administrator password required |
/System/Library/LaunchAgents |
Protected | Core macOS user-session services | SIP-protected — do not touch |
/System/Library/LaunchDaemons |
Protected | Core macOS system services | SIP-protected — do not touch |
The safest directory to audit and clean is ~/Library/LaunchAgents, which belongs entirely to your user account. On a Mac that has had several applications installed over its lifetime, this folder commonly contains 10–30 plist files — most of them from apps you may have uninstalled years ago, whose helper daemons were never cleaned up during removal.
To open this folder in Finder, press Command + Shift + G, type ~/Library/LaunchAgents, and press Enter. You can also browse it in Terminal:
# List plist files in your user LaunchAgents folder ls -la ~/Library/LaunchAgents/ # See which agents are currently loaded by launchd launchctl list | grep -v "^-"
How Startup Items Slow Down Boot and Drain RAM
The performance cost of startup items operates on two distinct timelines: the initial boot delay and the ongoing background resource consumption. Both matter, and both worsen as more items accumulate over time.
Boot Time Penalty
When you power on your Mac, launchd reads every registered plist file and starts those processes in a partially-parallel, dependency-aware sequence. Each additional process that must be initialized before your desktop becomes usable adds latency. More critically, the startup sequence competes for I/O bandwidth — all these processes are reading their binary files, loading their libraries, and initializing at the same time. On a Mac with a fast NVMe SSD this is measured in seconds. On an older Mac with a slower drive, or on any Mac with a heavy startup set, the delay can stretch considerably longer.
A common scenario: you install Zoom, Slack, Spotify, Adobe Creative Cloud, Dropbox, Google Drive, Steam, and a handful of developer tools over two years. Each installs its own LaunchAgent. That alone can add 8–15 seconds to your login time before you see a usable desktop.
Background RAM and CPU Drain
The more insidious cost is ongoing. LaunchAgents that survive login do not simply initialize and exit — they stay running in the background indefinitely, waiting for events, polling for updates, or maintaining persistent connections. A typical cloud sync agent consumes 50–120 MB of RAM. An app auto-updater checks in periodically and wakes the CPU every few minutes. Multiply this across ten or fifteen agents and you have 500 MB to 1.5 GB of RAM permanently occupied by background processes you may not actively use.
On a MacBook with 8 GB of unified memory, that is a material fraction of your total available RAM. The result is more frequent memory pressure, heavier use of swap space on your SSD (which shortens drive lifespan over years), and apps that take longer to become responsive because RAM must be reclaimed before they can fully load.
Auto-updater LaunchAgents are especially wasteful: they run all the time to check for updates every few days. If you update apps manually through the App Store or by opening the app itself, there is no reason to keep background updaters loaded at all times.
How to View Startup Items in System Settings (macOS Ventura and Later)
Starting with macOS Ventura (13.0), Apple moved Login Items management into System Settings with a much cleaner interface. This view covers apps and services that have explicitly declared themselves as login items through the modern API — but it does not expose every LaunchAgent plist file registered on your system. It is a good first stop, but not a complete picture.
- Click the Apple menu in the top-left corner of your screen and choose System Settings.
- In the sidebar, click General.
- Click Login Items & Extensions on the right side of the window.
- You will see two sections: Open at Login (apps that open a window or icon when you log in) and Allow in the Background (helper processes that run silently without a visible window or Dock icon).
- To disable an item, click the toggle next to it or select it and click the minus (−) button. Disabled items remain listed but will no longer launch automatically.
On macOS Monterey (12) and earlier, Login Items were in System Preferences → Users & Groups → Login Items. The interface is simpler and only shows application-level items, not individual LaunchAgent plists.
The Allow in the Background section introduced in Ventura is particularly important: it shows you every app that has registered a background helper process. Many of these correspond to LaunchAgent plist files, and disabling them here is the cleanest, safest way to prevent them from running — macOS handles the launchctl unload for you and preserves the change across reboots.
How to Remove User LaunchAgents Safely
For LaunchAgents that do not appear in System Settings — or for thorough cleanup of uninstalled apps that left their plists behind — you can manage them directly in the ~/Library/LaunchAgents folder. The process is straightforward and reversible.
The Safe Method: Move to Trash
The recommended approach is to move unwanted plist files to the Trash rather than permanently deleting them immediately. This lets you restore a file quickly if you discover that removing it broke something unexpected. Once you have confirmed the system behaves correctly without it, you can empty the Trash.
- Open Finder, press Command + Shift + G, and navigate to
~/Library/LaunchAgents. - Examine each plist file. The filename typically reveals the app it belongs to — for example,
com.spotify.webhelper.plistorcom.adobe.GC.Scheduler.plist. If you do not recognize the application or know the associated app has been uninstalled, it is a candidate for removal. - Before moving a file, unload it from launchd so it stops running immediately (without requiring a restart). In Terminal, run:
launchctl unload ~/Library/LaunchAgents/com.example.agent.plist— replacing the filename with the actual plist name. - Move the plist file to the Trash by dragging it or pressing Command + Delete.
- Restart your Mac and verify everything works normally. If an app you still use stops functioning correctly, retrieve the plist from the Trash, move it back to
~/Library/LaunchAgents, and runlaunchctl load ~/Library/LaunchAgents/com.example.agent.plistto restore it.
# Stop a running agent without rebooting (replace filename with actual plist) launchctl unload ~/Library/LaunchAgents/com.example.agent.plist # Confirm it is no longer listed as running launchctl list | grep "com.example"
Safe to remove: Plist files belonging to applications you have already uninstalled are always safe to delete — the app binary is gone, so the agent would fail to launch anyway. Orphaned plists like these are extremely common and account for much of the startup bloat on older Macs.
Reading a Plist File to Identify It
If a filename is not self-explanatory, you can read the plist's contents to identify what it does. Look for the Program or ProgramArguments key — it shows the exact binary the agent launches.
# Convert binary plist to readable XML and inspect it plutil -convert xml1 -o - ~/Library/LaunchAgents/com.example.agent.plist # Or use defaults to read a specific key defaults read ~/Library/LaunchAgents/com.example.agent.plist ProgramArguments
System-Protected Daemons — What NOT to Touch
The directories at /System/Library/LaunchAgents and /System/Library/LaunchDaemons are protected by Apple's System Integrity Protection (SIP), a security feature introduced in OS X El Capitan. SIP prevents any process — including processes running as root — from modifying, replacing, or deleting files in these directories. This protection is intentional and important.
The services registered in these directories are core macOS infrastructure. They include:
- WindowServer — the process that drives your entire display. Without it, you have no screen.
- configd — manages network configuration and connectivity.
- mDNSResponder — powers Bonjour and local network discovery.
- securityd — manages Keychain access and security policy.
- opendirectoryd — handles user authentication and directory services.
- coreaudiod — the audio server. Disabling it silences your Mac entirely.
Disabling or deleting any of these services will cause macOS to malfunction in serious and unpredictable ways — anything from loss of network connectivity to an unbootable system. Even if you manage to bypass SIP (which requires booting into Recovery Mode and is itself a significant security risk), the "space savings" from removing system daemons are negligible compared to the damage they cause.
Never modify /System/Library/LaunchAgents or /System/Library/LaunchDaemons. These directories are SIP-protected for a reason. No legitimate disk cleaner will ask you to touch them. Any tool that offers to "clean" system daemons is either misguided or malicious.
Third-party apps that install daemons in /Library/LaunchDaemons (not the /System path) are a different matter — these are installed by software you chose to add and can be removed safely with administrator credentials. Common examples include VPN clients, antivirus software, printer drivers, and remote management tools. Before removing any daemon from /Library/LaunchDaemons, confirm the application it belongs to and whether you still need it.
See every startup item at a glance
TrimyMac's Startup Items view lists all LaunchAgents and daemons on your Mac — with protection indicators so you always know what is safe to disable. No Terminal required.
TrimyMac Startup Items View
Auditing startup items manually — navigating multiple Finder folders, running Terminal commands, reading plist XML, cross-referencing bundle identifiers against installed apps — is a task that most Mac users simply will not do. TrimyMac's Startup Items view was designed to make this audit approachable for everyone, not just developers.
What TrimyMac Shows You
The Startup Items screen aggregates all registered LaunchAgents and LaunchDaemons across every relevant directory into a single, sorted list. For each item, TrimyMac displays:
- Display name — the human-readable name resolved from the plist label or the app bundle that owns it, not raw bundle identifiers like
com.adobe.GC.Scheduler. - Type indicator — whether the item is a user LaunchAgent, a system-level agent, or a system daemon, color-coded for immediate recognition.
- Protection status — a clear shield icon marks any item that is SIP-protected or otherwise system-critical. TrimyMac will not let you accidentally disable a protected item.
- Associated application — where possible, TrimyMac resolves the plist's program binary back to the owning application, so you can see "Spotify Web Helper" instead of a raw path to a binary buried in an app bundle.
- Load status — whether the agent is currently loaded and running, or registered but disabled.
- Orphan detection — TrimyMac flags agents whose program binary no longer exists on disk, meaning the associated app was uninstalled but its plist was left behind. These are the safest items to remove.
How to Disable a Startup Item in TrimyMac
Disabling a startup item in TrimyMac is a single toggle. When you turn off a user LaunchAgent, TrimyMac runs the equivalent of launchctl unload to stop it immediately and marks it disabled so it will not start at your next login. When you turn off a system-level item (where permitted), TrimyMac prompts for your administrator password before making any changes. SIP-protected items have their toggles grayed out entirely — they cannot be accidentally disabled.
For orphaned plists — plist files belonging to apps that are no longer installed — TrimyMac offers a one-click removal that moves the file to the Trash rather than permanently deleting it, giving you an undo path if anything is miscategorized.
TrimyMac never removes a startup item permanently without confirmation. Disabled items remain in the list so you can re-enable them at any time. The protection indicators ensure you always know at a glance which items are safe to manage and which belong to macOS itself.
Practical Startup Cleanup Workflow with TrimyMac
A typical startup cleanup session in TrimyMac takes under five minutes. Open the Startup Items view, sort by "Orphaned" to find agents left behind by uninstalled apps, remove them in one batch. Then review the remaining active agents by associated application — disable auto-updaters for apps you update manually, disable cloud sync agents for services you have stopped using, and leave everything flagged as protected untouched. Log out and back in, and measure the difference in your login time and available RAM.