Installing Clash on macOS: Network Extension & Keychain Permissions
macOS triggers a chain of network extension, keychain, and accessibility permission prompts the first time a client launches. This article walks through each prompt in the order it appears, what to click, how to recover from a denial, and where to double-check things in System Settings.
Why macOS shows more confirmation dialogs than other platforms
Proxy clients on Windows and Android usually need just one network permission confirmation, but macOS's system-level security model is far more granular. It splits "taking over network traffic," "reading and writing sensitive credentials," and "simulating system input" into three independent authorization categories: network extension, keychain access, and accessibility. A Clash-family client needs at least the first two to work; if the interface has an automation button like "one-click system proxy," it also touches the third.
This design exists to stop malicious apps from silently intercepting traffic or stealing passwords—it isn't a hurdle placed specifically in front of proxy software. Once you know which system capability each prompt maps to, granting them becomes a non-decision, and if you deny one by accident you'll know exactly where to fix it without reinstalling anything.
Prompt 1: Network Extension
The first time a client tries to enable TUN mode or a system proxy, macOS shows a message along the lines of "'Clash' Would Like to Add VPN Configurations" or "Network extension blocked," and a pending entry appears under System Settings → General → VPN & Device Management, or Network → Filters & Proxy Extensions.
This step corresponds to the content filter or Personal VPN capability inside the NetworkExtension framework. TUN mode requires the client to insert a virtual network adapter into the system's networking stack so it can redirect some or all traffic into the Clash core—functionally identical to how a VPN app works, which is why macOS routes it through the same VPN-configuration approval flow.
- When the prompt appears, click "Allow" or "Open System Preferences."
- macOS will jump to the Privacy & Security or Network pane; find the client's entry there and switch it on.
- Some macOS versions also require your local admin password to confirm—this is expected, just enter it.
- Back in the client, restart or toggle TUN mode again; the prompt shouldn't reappear.
If you accidentally clicked "Don't Allow," the TUN toggle in the client usually turns gray or throws an "extension not active" error. There's no need to uninstall and reinstall—just switch the extension on manually in System Settings, as described in the next section.
Prompt 2: Keychain access
Right after the network extension is approved, macOS typically shows another dialog: "'Clash' Wants to Use Confidential Information Stored in Your Keychain." This is the client requesting read/write access to Keychain Access, used to persist VPN configuration certificates or password entries so it doesn't have to redo the system authorization flow every time you restart your Mac.
This prompt has nothing to do with the network itself, but denying it means the confirmation dialog can reappear every time you enable the system proxy—annoying in daily use. Click "Always Allow" to settle it once and for all.
Manually checking permissions in Keychain Access
- Open Spotlight (⌘+Space), type "Keychain Access," and launch it.
- Select the "login" keychain on the left, then search for the client's name in the top-right search box.
- Double-click the matching entry and switch to the "Access Control" tab.
- Confirm the client itself is on the list and hasn't been removed; if it's missing, click the plus button in the bottom-left corner to re-add it.
Prompt 3: Accessibility permission (for automation features)
Some clients offer shortcuts like "one-click system proxy" or "auto-switch proxy mode," which rely on macOS's Accessibility permission to simulate system input under the hood. If the client's interface has a button like this, the first click triggers a "'Clash' Would Like to Control This Computer" prompt.
This permission has a broader scope than the previous two, and macOS won't proactively warn you it's missing—the prompt only fires when you click the related feature button. If an automation button does nothing when clicked, it's almost always a missing permission, not a client bug.
- Open System Settings → Privacy & Security → Accessibility.
- Find the client in the list on the right and switch it on.
- If the client isn't listed yet, trigger the feature that requests the permission once—macOS will automatically add it to the list awaiting approval.
- After checking the box, you may need to fully quit and reopen the client for the permission to take effect.
Recovering from a denial: three places to double-check in System Settings
If you clicked "Deny" on a prompt in the heat of setup, there's no need to redownload the installer—just head to System Settings and flip the matching switch. The three entry points below correspond to the three permission categories above.
| Permission type | Location in System Settings | What it affects |
|---|---|---|
| Network extension / VPN configuration | Privacy & Security → VPN & Device Management (or Network → Filters & Proxy Extensions) | TUN mode, system-wide traffic takeover |
| Keychain access | Keychain Access app → search client name → Access Control | Persisting configuration credentials |
| Accessibility | Privacy & Security → Accessibility | One-click system proxy and similar automation buttons |
These three permissions don't affect each other's status, so you can check them one at a time: first confirm the client's toggle is on under VPN & Device Management, then check that the keychain entry hasn't been removed from the access list, and finally—if you use any automation buttons—confirm Accessibility has it checked. After enabling each one, go back to the client and retry the corresponding action; a restart usually isn't necessary.
Common symptoms and fixes
TUN toggle turns itself off right after enabling
This usually means the network extension permission hasn't fully taken effect. Check VPN & Device Management first to confirm the entry shows "Connected" or its toggle is on; if the entry doesn't exist at all, you denied the first prompt, so go back to the client and trigger the TUN toggle again to make macOS re-issue the authorization request.
The client asks for a password again every time it restarts
This happens when keychain access has been revoked, or you chose "Allow Once" instead of "Always Allow." Follow the manual Keychain Access steps above and switch Access Control to always allow—this fixes it permanently.
macOS warns the extension is "from an unidentified developer"
If the installer itself is legitimate, this warning typically shows up the first time an unsigned extension—or one signed with a custom certificate—runs. Scroll to the bottom of Privacy & Security and look for an "Open Anyway" button or similar to proceed; this is a routine macOS security notice, not a sign the installer is broken.
All permissions reset after a macOS upgrade
Major macOS version upgrades reset the authorization state of certain sensitive permissions as part of the OS's security policy—this is expected system behavior and has nothing to do with the client version. After upgrading, just run through the three permission categories in this article again to restore everything.
A one-time check after setup is done
Once all three permissions look correct, it's worth running a full verification to make sure the proxy chain is actually working, rather than just trusting a "Connected" label in the UI:
- Pick a node in the client's node list and check that latency numbers come back normally instead of timing out.
- Open the Network pane in System Settings and check whether the active network shows the proxy description added by the client.
- Visit any IP lookup page in a browser and confirm the reported location matches the selected node.
- If TUN mode is enabled, disable any browser proxy extension and test again to confirm system-wide traffic is genuinely being routed, not just traffic from the browser extension.
Once these four checks pass, you can be confident the entire authorization and network setup is fully in place, and normal day-to-day use shouldn't trigger these confirmation dialogs again.