Permissions
Last updated September 12, 2026
macOS asks you to approve each of these individually, in its own system dialog, the first time UnIdle actually needs it — never all at once, and never before you've turned on the feature that needs it. This page lists every one UnIdle can ask for, why, and exactly what stops working if you decline. None of them let UnIdle read your screen, your terminal contents, your code, or anything you type outside of the two specific shortcuts below.
Accessibility
Used by several featuresThree separate things depend on this one system permission:
- ⌥⌘L (Lock screen, keep working) and ⌘⌃A (toggle Always-on) — the global keyboard shortcuts, so they fire no matter which app is focused, not just while UnIdle's own window is. macOS treats "receive a keystroke while some other app is in front" as an Accessibility-gated capability, same as any other menu-bar utility offering a global shortcut (Raycast, Alfred, Rectangle, etc.).
- Mouse Motion (Settings → Power) — an optional second keep-awake method that nudges the cursor on a timer, for apps or screen locks that watch for literal input rather than trusting the OS's own busy signal. Moving the cursor programmatically is an Accessibility-gated action.
- Lock screen, keep working itself — UnIdle first tries a mechanism that needs no permission at all; on macOS versions where that path isn't available, it falls back to simulating the standard ⌃⌘Q lock shortcut, which does need Accessibility to post a synthetic keystroke.
Without it: the two global shortcuts only work while UnIdle's own popover has focus, Mouse Motion silently does nothing, and Lock-and-leave may not work at all depending on your macOS version. Grant it any time from Settings — UnIdle re-checks and turns everything back on immediately, no restart needed.
Powers: ⌥⌘L Lock-and-leave, ⌘⌃A toggle Always-on, Mouse Motion keep-awake
Notifications
Powers the two alerts UnIdle can show: "an agent needs your permission" and "a task finished." Without hooks or this permission, UnIdle still knows an agent is running — it just can't tell you what it's doing.
Without it: both alert toggles in Settings still exist, but nothing ever actually shows on screen — UnIdle already flags this directly in Settings when it detects notifications aren't authorized.
Powers: permission-needed alerts, task-finished alerts
Local Network
Pro, opt-inOnly requested if you turn on "Push to my phone." The alert itself — title, message, the "needs permission"/"finished" text — always goes over the internet, through the public ntfy.sh relay (see the privacy policy); that part never touches your local network. Local Network is for something narrower: when an alert includes Approve/Deny buttons, tapping one sends your phone straight to your Mac's address on the same Wi-Fi, reaching a small local server UnIdle runs — no round trip through the internet for that tap.
Without it: push-to-phone notifications keep arriving exactly the same, since the alert itself never depended on this permission — only the Approve/Deny buttons stop working, since your phone can no longer reach your Mac to deliver the tap.
Powers: Approve/Deny buttons on push-to-phone alerts
One-time admin password
Pro, opt-inNot a macOS "permission" in the System Settings sense — a one-time administrator authorization, requested only if you turn on "Prevent sleep on lid-close (battery)." It installs a narrowly-scoped sudoers entry so UnIdle can override lid-close sleep specifically while it's actively holding your Mac awake for a running agent. Asked once, at setup; never again after.
Without it: closing the lid on battery sleeps your Mac immediately, same as it always did — every other feature on this page works independently of this one.
Powers: Prevent sleep on lid-close (battery)
Questions
hello@unidle.app — or see the Privacy Policy for what data (if any) ever leaves your Mac.