Permissions Leo asks for
Last updated: May 2026
Leo is a native macOS app distributed outside the Mac App Store, code-signed with an Apple Developer ID certificate and notarised by Apple. To do its job well, it asks macOS for two permissions. Both prompts are triggered by something you did in the app (clicking Capture, starting a recording) — never in the background. This page explains each one in plain English.
Accessibility
What macOS asks: "Leo would like to control this computer using accessibility features."
What Leo actually uses it for: reading the URL of the active tab in your frontmost browser, only at the exact moment you click Capture. macOS does not offer a more granular API for this — "read the focused window's URL" requires the same entitlement as "control the computer," but Leo only ever uses the read side of it.
What Leo never does with it: read keystrokes, capture passwords, observe what you type into other apps, or run anything when you haven't clicked Capture. The accessibility hook is the smallest possible: read one URL, on demand, when you click a button.
Where to revoke it: System Settings → Privacy & Security → Accessibility. Leo will keep working without it; Capture will only have the page's title and URL if you paste it manually instead of clicking from a browser.
Screen Recording
What macOS asks: "Leo would like to record this computer's screen."
What Leo actually uses it for: capturing short clips when you start a recording from inside the app. Uses Apple's ScreenCaptureKit framework — the same API that QuickTime Player → New Screen Recording uses.
What Leo never does with it: record without your explicit click, record continuously in the background, upload recordings without your action, or take screenshots of other apps' contents that you haven't asked it to capture.
Where to revoke it: System Settings → Privacy & Security → Screen & System Audio Recording. Leo will keep working without it; the recording feature simply won't be available.
What Leo doesn't ask for
- Full Disk Access — never requested. Leo reads and writes only inside its own application support folder (
~/Library/Containers/tech.currentlabs.offstage) plus anything you explicitly drag or save into it. - Input Monitoring — never requested. Leo does not observe keystrokes outside its own windows.
- Camera, Microphone, Contacts, Calendar, Photos, Reminders, Files & Folders — never requested.
- Background Login Item / LaunchAgent — Leo does not install background services. Quitting the app fully stops it.
How updates work
Leo updates itself through the Sparkle framework. Each release is signed twice — once by Apple's notarisation service, once by our own EdDSA key — and the auto-updater refuses any update whose signature doesn't verify against the public key built into the running app. The update feed is served over HTTPS from our own domain.
Verifying the download
On macOS, you can verify Leo's code-signature and notarisation status yourself before installing:
xcrun stapler validate /Applications/Leo.app
spctl --assess --verbose=4 /Applications/Leo.app
codesign --display --verbose=4 /Applications/Leo.app
Expected: stapler reports "The validate action worked"; spctl reports "accepted source=Notarized Developer ID"; codesign shows the Apple Developer Team identifier registered to CurrentLabs.
Questions?
Security and privacy questions go to security@currentlabs.tech. We also publish a security.txt following RFC 9116.