01Location
- ~/Library/LaunchAgents/*.plist
- /Library/LaunchAgents/*.plist
- /Library/LaunchDaemons/*.plist
- /System/Library/LaunchAgents/*.plist
- /System/Library/LaunchDaemons/*.plist
02Questions it answers
- Which programs are configured to start automatically, for all users or for one user?
- What executable and arguments does each job run, and under which trigger?
- Was a job added outside the vendor-provided /System locations?
03Format and versions
| Format | Property list (XML or binary) read by launchd. Daemons are system-wide; agents run per user and only while that user is logged in. |
|---|---|
| Applies to | Locations from launchd.plist(5) and Apple's daemon guide. From macOS 13, SMAppService registers agents and daemons that live inside an app bundle instead of installing plists in these folders. |
04Key fields
| Field | What it tells you |
|---|---|
| Label | Unique string identifying the job to launchd (required). |
| Program / ProgramArguments | Executable path and argument vector; Program is required if ProgramArguments is absent. |
| RunAtLoad | Launch the job once when it is loaded (default false). |
| KeepAlive | Keep the job running rather than launching on demand. |
| StartInterval, StartCalendarInterval | Run every N seconds, or on a cron-like calendar schedule. |
| WatchPaths, QueueDirectories | Start the job when watched paths change or while directories are non-empty. |
05Examination workflow
- Collect all five locations plus each user's ~/Library/LaunchAgents.
- Parse each plist and tabulate Label, Program/ProgramArguments and trigger keys.
- Check that the referenced executables exist, and review their code signatures and file system times.
- On macOS 13 and later, also review login and background items with sfltool dumpbtm.
06Interpretation pitfalls
- Property lists contain no installation time; dating relies on file system timestamps and logs.
- Globally installed jobs must be owned by root and not be group- or world-writable; deviations deserve attention.
- Helpers registered through SMAppService do not need a plist in these folders, so an empty folder does not rule out background items.
- The launchd.plist(5) page cited is from Apple's open-source launchd release and may not list keys added later.
08Sources
- launchd.plist(5) manual page Apple open source (apple-oss-distributions/launchd, GitHub) · checked 2026-10-14
- Daemons and Services Programming Guide — Creating Launch Daemons and Agents Apple Developer Documentation Archive · checked 2026-10-14
- SMAppService Apple Developer Documentation · checked 2026-10-14
- Manage login items and background tasks on Mac Apple Platform Deployment · checked 2026-10-14
- ForensicArtifacts — artifacts/data/macos.yaml ForensicArtifacts project (GitHub) · checked 2026-10-14