macOS Clash Permissions: Network Extension Access & Keychain Prompts
Learn how to handle macOS “app is damaged” warnings, approve network extensions, and stop repeated Keychain prompts when setting up a Clash client.
Identify the prompt first: launch checks, network access, and Keychain requests are different
Check the prompt title and requesting process before granting access.Clash refers to a family of proxy cores and clients, and permissions work differently across macOS apps. Using the Clash Meta (mihomo) core does not necessarily mean an app uses Apple Network Extensions. Some clients create a TUN interface through a privileged helper; others route traffic through Network Extension.
This guide uses the settings names in macOS 13 Ventura, 14 Sonoma, and 15 Sequoia. Check your macOS version from the Apple menu in the top-left corner → “About This Mac,” then note the client and core versions in the client’s About page. If labels differ, follow the entry shown in the system prompt. Don’t install extra components just to look for a setting that may not exist.
| Prompt or symptom | What it relates to | What to do first |
|---|---|---|
| “Developer cannot be verified” or “app is damaged” | App launch and security checks | Verify the download source, installer, and system architecture |
| A request to add a VPN configuration or allow a network extension | System-level network routing | Verify the app name and publisher |
| An administrator password is requested to install a helper | Privileged service installation | Confirm you just initiated the service installation |
| A request to access an item in Keychain | Credential access | Verify the requesting process and item name |
“App is damaged” on first launch: replace the installer before changing security settings
Move the app to Applications first
- Quit any older running version, including background processes in the menu bar.
- Open the downloaded DMG and drag the client into Applications. Don’t keep launching it from the disk image.
- Eject the DMG, then open the client from Applications. Keeping the app in a fixed location helps avoid mismatches between saved permissions and the app after an update.
- If it still won’t open, download an installer built for your Mac. Choose arm64 for Apple silicon or x64 for Intel; make sure a Universal build includes your Mac’s architecture.
“App is damaged and can’t be opened” doesn’t always mean the download itself is corrupted. The cause may be signing, quarantine attributes, or how the app was packaged. An architecture mismatch can produce a different launch error. A single alert isn’t enough to identify the cause. Stop using installers from unknown sources, and don’t treat removing quarantine attributes as a universal fix.
Use “Open Anyway” only for apps from a verified source
After a launch attempt is blocked, open System Settings → “Privacy & Security” and check whether “Open Anyway” appears in the Security section. This button isn’t available for every type of block. Verify the app name and source before proceeding. If macOS explicitly warns that the app is malicious, will damage your computer, or has a revoked certificate, stop and check with the maintainer.
Network Extension and TUN access: follow the client’s actual implementation
If you only need browsers that honor system proxy settings to connect, start by enabling “System Proxy.” You usually don’t need TUN for the initial setup. System Proxy and TUN are separate mechanisms: the former changes proxy settings, while the latter routes traffic through a virtual interface and related routes. TUN doesn’t guarantee that every app or protocol will work automatically; results still depend on the core configuration and routing environment.
When a network extension or VPN configuration prompt appears
- Turn on “TUN Mode” or the client’s equivalent network-routing feature yourself, then check the prompt. This helps avoid granting access to an unrelated background process.
- When prompted to add a VPN configuration, check the app name shown. Click “Allow” only after confirming the request came from the client you’re using.
- In macOS 15, check System Settings → General → “Login Items & Extensions” → “Network Extensions” for the relevant extension. Depending on your version, you may need to click the details button next to it.
- In macOS 13 and 14, if macOS says system software was blocked, follow the prompt to “Privacy & Security” and look for “Allow.” VPN or filter entries may also appear under Network → “VPN & Filters.” The absence of an entry doesn’t mean installation failed; first confirm that the client uses this mechanism.
If the client says “Install Service,” “Install Helper,” or “Service Mode,” administrator authentication is usually needed to install a privileged helper—not to unlock Keychain. After installation, return to the client and check the service status before enabling TUN. Don’t click install repeatedly. Restart only if macOS or the client explicitly asks you to.
Keychain prompts: check which item the app wants to access
A typical prompt says an app wants to use confidential information stored in Keychain and lists the requesting process and item name. This is different from administrator authentication to install a service. A client may store subscription credentials, access tokens, or other sensitive settings in Keychain, but not every Clash client does. Don’t assume every Keychain request is legitimate.
Choosing between “Allow Once” and “Always Allow”
- Just installed the app and aren’t sure what the item is for: Click “Deny” first, see which feature is affected, and check the client’s documentation. The related feature may be temporarily unavailable after you deny access.
- You’ve verified both the process and the item: Click “Allow” to approve this access, then check whether subscription updates or saved settings work again.
- You use the app regularly and have verified its identity: Consider “Always Allow.” It applies to access to the relevant Keychain item; it doesn’t grant every permission.
Use the password requested in the prompt. Accessing the “login” Keychain usually requires its password, which is often the same as your current account password. They may differ if the account password was reset another way. Don’t try your subscription password, Apple Account password, and server password one by one.
Inspect Keychain Access instead of deleting every entry
- Use Spotlight to find and open Keychain Access. The Passwords app in macOS 15 isn’t a full Keychain management tool.
- Select the “login” Keychain and search for the item name shown in the prompt—not just “Clash.”
- Open the matching item and check its name, type, and related details. If it has an “Access Control” section, check that the allowed app still points to the current client.
- Fix access for the individual item first. Don’t choose “Allow all applications to access this item,” and don’t reset the entire default Keychain.
Repeated prompts after an update: check the app path, signing identity, and login Keychain
It’s not unusual for an app to ask again the first time you open it after an update. Replacing the app can change its signing identity, helper process, or Keychain access requirements. Look into it if the prompt appears every time you launch the app or returns immediately after you click “Allow.” Repeatedly entering your password usually just masks the issue.
| When it happens | Check first | What to do |
|---|---|---|
| After launching from a different location | Multiple copies in Downloads, the DMG, and Applications | Quit every copy and always launch from Applications |
| After every update | Whether the distribution channel, app identity, or helper process changed | Check the maintainer’s notes and reapprove access to the individual item |
| Several apps prompt after signing in to macOS | Whether the login Keychain is locked or its password is out of sync | Resolve the account and Keychain issue first |
| Only when updating a subscription | The subscription credential item and requesting process | Check that item, not the TUN permissions |
If the login Keychain won’t unlock after you changed your account password, but you still know its old password, unlock it in Keychain Access and, if available, sync it via Edit → “Change Password for Keychain ‘login’.” If you’ve forgotten the old password, start with Apple’s account recovery process. Resetting the default Keychain affects saved credentials, so assess the impact first.
Delete an item only if you’ve confirmed it’s no longer valid and know how to sign in again or re-enter the credentials. Note the item name first, and make sure you can restore access to the subscription service. Don’t bulk-delete certificates, private keys, or every item with the client’s name just to stop the prompts.
After granting access, verify the system proxy and listening port
Granting permission only confirms that one step was allowed; it doesn’t mean the proxy server is working. Check in this order: configuration enabled → core running → local port listening → traffic routed. This is more reliable than guessing between the permissions pane and the server list. The commands below only inspect settings; they don’t change the system proxy or routes.
sw_vers -productVersion
scutil --proxy
lsof -nP -iTCP:7890 -sTCP:LISTEN
sw_versdisplays your macOS version so you can find the corresponding permission settings.- Use
scutil --proxyto view current system proxy settings. If HTTP/HTTPS system proxy is enabled, check thatHTTPEnableandHTTPSEnableare set to1and that the server and port match the client settings. For PAC, check the automatic proxy configuration fields. - Use
lsofto check whether a process is listening on TCP port 7890. That’s just a common example; if the client usesmixed-port: 7897, change the port in the command to 7897. No output doesn’t necessarily mean access was denied.
Run two separate tests instead of enabling every routing feature at once
- First, turn off TUN, enable a valid configuration, and turn on System Proxy. Visit a known-accessible website in your browser while checking the client’s Connections or Logs for requests.
- Once the system proxy test works, test TUN according to the client’s instructions. To tell which feature is routing traffic, temporarily turn off System Proxy, visit the same site again, and check the actual connections in the logs.
- If the logs show requests but report
i/o timeout, check the server, destination, and network. If they reportno such host, check the DNS path first. Don’t reauthorize Keychain based only on these errors. - If startup reports
address already in use, check whether another client is using the same port. This is a port conflict, not a missing Network Extension permission.
Multiple VPNs, enterprise security tools, and proxy clients routing traffic at the same time can cause route and DNS conflicts. Retest after disabling only other network-routing features you’re authorized to manage. On a managed device, don’t remove enterprise filters yourself. For further diagnosis, see Troubleshooting and note whether System Proxy or TUN was enabled during each test.
Restore network settings before quitting or uninstalling
Turn off TUN and System Proxy in the client before quitting. Then open System Settings → Network → your current Wi-Fi or Ethernet connection → Details → Proxies, and check for a stale proxy pointing to 127.0.0.1. Don’t change proxy settings configured by your school or employer.
If the client offers “Uninstall Service,” use that option to remove its helper service. Remove Network Extension and VPN configurations according to the client’s uninstall instructions. Don’t copy terminal commands from someone else to delete system files with similar names. You’re done when the client routes traffic as expected while running, normal network access returns after quitting, and the same permission prompt doesn’t recur after a restart.
Download and configure a Clash client
Choose a client built for your Mac’s processor. After installation, import your subscription and verify the system proxy before setting up TUN if needed.