Stop digging through
System Settings to toggle
Private Relay
A tiny macOS menu bar app. One click or Cmd+Shift+P to turn
iCloud Private Relay on or off. Free.
The problem
Apple buried it three levels deep
iCloud Private Relay is great for privacy, but it silently bypasses your custom DNS.
Pi-hole, AdGuard, NextDNS, local network resolvers — all ignored while Private Relay is on.
When a website breaks or your network filtering stops working, you need to turn it off.
That means opening System Settings, clicking into Apple Account, clicking iCloud, scrolling to
Private Relay, clicking into it, flipping the toggle, and confirming the dialog. Six clicks,
three levels deep. And Apple provides no API, no terminal command, no URL scheme on macOS
to do it faster. We checked.
Custom DNS bypassed
Private Relay routes around your local DNS. Ad blocking, parental filters, security rules — all ignored.
Websites breaking
Some sites block relay traffic or misidentify your location. Quick disable, fix it, re-enable.
Network debugging
Diagnosing connectivity? Private Relay adds a proxy layer that makes troubleshooting harder.
Six clicks every time
Apple Account → iCloud → Private Relay → toggle → confirm. Every. Single. Time.
What you get
Features
Menu bar native
Lives in the menu bar. No Dock icon, no window. Click the icon to see the current state and toggle.
Global hotkey
Press Cmd+Shift+P from any app to toggle without touching the mouse.
Smart disable
Turn off completely or just until tomorrow. The hotkey defaults to “until tomorrow” for quick troubleshooting.
Launch at login
Set it once. Toggle Private Relay starts automatically when you log in.
Notifications
Confirms every toggle with a macOS notification so you always know the current state.
Signed & notarized
Code-signed with a Developer ID and notarized by Apple. No Gatekeeper warnings.
Under the hood
How it works
Opens System Settings via a deep link to the iCloud pane
Navigates to iCloud → Private Relay using the macOS Accessibility API
Flips the toggle, handles the confirmation dialog, reads the new state
Updates the menu bar icon, posts a notification, and closes System Settings
System Settings flashes briefly during the toggle — this is unavoidable.
Apple provides no API for Private Relay. The Accessibility API requires the UI to be rendered.
Built with Swift and AppKit. Runs as a lightweight agent app with minimal memory footprint.
Requirements
What you need
macOS 15 Sequoia or later
iCloud+ subscription
Accessibility permission
FAQ
Questions
Is it free?
Yes. Free, no ads, no tracking, no subscriptions.
Why does it need Accessibility permission?
Apple provides no API for toggling Private Relay. The app uses the macOS
Accessibility API to interact with the toggle in System Settings on your behalf.
It does not read or record any other information from your screen.
Why does System Settings flash briefly?
The Accessibility API requires the UI to be rendered. The app opens System Settings,
navigates to the toggle, flips it, and closes the window — all in under a second.
There is no way around this without an API from Apple.
Will it work on macOS 16?
It should, assuming Apple does not significantly change the System Settings layout.
The app uses recursive search rather than hardcoded UI paths, which makes it resilient
to minor changes. Check back here for updates if a new macOS version breaks it.
Can I customize the keyboard shortcut?
Not yet. The default is Cmd+Shift+P.
Customizable shortcuts are on the roadmap.
Private Relay turned itself back on. Can the app detect that?
Not currently. Private Relay is a server-side iCloud setting — there is no local
state file, no API, and no observable system property on macOS that reports whether it is
on or off. Apple can re-enable it silently after an OS update, an iCloud sync, or when
an “until tomorrow” timer expires. The only way to read the current state is
to open System Settings and inspect the UI via the Accessibility API, which is too
disruptive for background polling. When you toggle via this app, the menu bar icon
reflects the last known state, but it cannot detect changes made outside the app.