Before You Install: Clients, Cores, and macOS Permissions

Search for “Clash for Mac” and you’ll find installers for different projects. Clash for Windows once offered a macOS version, but it is no longer maintained. Other clients built on the Clash or Clash Meta (mihomo) core do not share the same permission flow. Similar-looking interfaces don’t mean they need the same network extension or background service.

First, check three things: your Mac’s processor, macOS version, and the client’s project name and version. Open Apple menu → About This Mac to check the chip or processor. You can also run this read-only command in Terminal:

sw_vers -productVersion
uname -m

arm64 usually indicates an Apple silicon Mac, while x86_64 indicates an Intel Mac. If Terminal is running under Rosetta, the reported architecture may reflect the translated environment, so use About This Mac to choose your download. Choose an ARM64 installer for Apple silicon and x64 for Intel; Universal installers typically include both architectures.

  • Allowing the app to launch: Gatekeeper checks details such as the download source, signature, and notarization. This determines whether the app can launch.
  • Network Extension or VPN permission: Some clients use this to route traffic through a tunnel. It determines whether the network tunnel can be created.
  • Helper tool or service mode: Used to install background components that need elevated privileges. This is not the same as a network extension.
  • Keychain access: Allows access to passwords, tokens, and other protected items. It is separate from permission to access the network.

First Install: Move the App to Applications, Then Handle Launch Warnings

Install in a Consistent Location Instead of Launching from the Disk Image

  1. Download the version for your system and processor architecture from the project’s release page or our installer downloads. Check the minimum macOS version required for that release.
  2. Open the DMG and drag the app into Applications. For a ZIP, extract it first, then move the complete .app app.
  3. Eject the mounted disk image, then launch the client from Finder → Applications.
  4. For the first launch, leave TUN off. Import your configuration, then test a standard proxy connection.

Installing in a consistent location helps avoid confusion when updating, registering helper services, or identifying the app. Don’t run copies from both Downloads and Applications at the same time. If two identical menu bar icons appear, quit both copies, then launch the one in its final location.

“Developer Cannot Be Verified” and “App Is Damaged” Are Different Warnings

On macOS 13 Ventura, macOS 14 Sonoma, or macOS 15 Sequoia, if the system blocks an app from launching, check the security message near the bottom of System Settings → Privacy & Security. Use Open Anyway only if you’ve verified the source and macOS offers that option, then authenticate if prompted. Button labels and available actions vary by macOS version.

“Apple cannot check it for malicious software,” “Developer cannot be verified,” and “App is damaged” indicate different check results. If macOS explicitly warns that an app contains malware or will damage your computer, stop and verify the source and project announcements instead of using the standard allow-to-open steps. Newer macOS versions may also omit the right-click workaround described in older guides.

Approving Network Extensions, VPNs, and Background Services

After importing a configuration, check the client’s traffic-routing mode. In System Proxy mode, the client usually points macOS HTTP, HTTPS, or SOCKS proxy settings to a local port; only apps that honor those settings will use it. When you switch to TUN, the client may ask to add a VPN configuration, enable a network extension, or install a helper required for service mode.

Prompt What It Usually Does What to Check
Allow VPN Configuration Creates a system-managed tunnel configuration. Did the request appear after launching the client, and is the name expected?
System Extension Blocked Allows the extension declared by the client to load. Does the developer or team shown match the publisher?
Install Helper Tool — Administrator Authentication Required Registers or updates a privileged background service. Did you just choose to install the service or enable the related mode?
Allow Access to a Keychain Item Reads a protected credential or key. Are the requesting app, item name, and current action related?

Find Network Extensions in macOS 15

In macOS 15 Sequoia, check System Settings → General → Login Items & Extensions → Network Extensions to see whether the client is allowed. You can also check VPN configurations under System Settings → VPN; in some versions, they’re accessible from a Network-related page. Use the configuration name shown by macOS rather than guessing from the icon.

System Extension Prompts in macOS 13 and 14

On macOS 13 and 14, if a prompt tells you to allow system software in Privacy & Security, open that page soon after trying to enable the feature. If there’s no matching item, return to the client and check whether the enable action actually triggered and whether it uses a network extension. The absence of an extension entry does not mean installation failed.

Authenticate as prompted, then return to the client and reconnect. Restart only if macOS asks you to. Pause if a guide tells you to lower startup security, disable SIP, or install a legacy kernel extension. Modern network extensions and kernel extensions are different mechanisms; don’t change system-wide security settings just to configure a standard proxy.

Repeated Keychain Prompts: Check Each Request Individually

“An app wants to use the login keychain” and “An app wants to access an item stored in the keychain” call for different troubleshooting. The first may involve a locked Keychain or an out-of-sync password; the second is more likely about item access controls. The requested item could be a credential saved by the client, system proxy authentication, or another related app. Don’t click Always Allow automatically.

Check the App, Item, and Password Type

  1. Note the requesting app and item name shown in the prompt. Check whether you just imported a configuration, connected, or updated the app.
  2. Make sure the requesting app is the installed client or a known helper. If its name or path looks unusual, cancel the request.
  3. If prompted to unlock the login keychain, enter its password. It is often the same as your current macOS login password, but not always.
  4. After allowing access once, see whether the prompt returns. Then check for duplicate app copies or old background processes.

An administrator password, a subscription website password, and a Keychain password are not interchangeable. In particular, if you reset your Mac login password using a recovery method, the old login keychain may still use the previous password. Repeatedly entering the new login password will not unlock it.

Check Keychain Access Without Deleting the Whole Keychain

Use Spotlight to open Keychain Access, select the login keychain, then search for the item named in the prompt. In macOS 15, the Passwords app is mainly for managing passwords and passkeys; it does not replace all the items and access controls in Keychain Access.

  • Prompts started after an update: The app’s signing identity or access controls may have changed. First confirm the update came from the original project, then consider approving access again.
  • Prompts started after moving the app: Check whether an older copy is still running. Quit it, then launch only the copy in Applications.
  • Asked to unlock at every launch: Check whether the login keychain is locked and whether it is set to lock after sleep or a period of inactivity.
  • Repeated requests for just one item: Check that item’s Access Control settings. Don’t change it to allow access from all apps.

Only consider deleting an individual item if you’ve confirmed the client created it and you can retrieve the credential again. Resetting the default keychain affects other credentials saved on your Mac. If you don’t know the old password, consult Apple’s recovery guidance and understand the consequences first. Don’t treat a keychain reset as a standard step for installing Clash.

“App Is Damaged and Can’t Be Opened”: Check the Source and Signature First

This warning doesn’t always mean the download was corrupted. It can also relate to an invalid signature, modified app contents, packaging, or the system’s security assessment. Quit the app and download the same-architecture installer again from a verified release source. Extract it and move it to Applications before trying again. Don’t overwrite the original installation with a “fixed” copy from an unfamiliar site.

Gather Details with Read-Only Commands

The commands below check the app’s signature and Gatekeeper assessment without modifying the app. Type the first part of a command, then drag the client app from Finder into Terminal to insert its actual path. Run each command separately. Don’t paste this explanatory text into Terminal.

codesign --verify --deep --strict --verbose=2
spctl --assess --type execute --verbose=4
xattr -l

Add a space at the end of each command, then drag the .app you want to check into Terminal. codesign checks signature integrity, spctl shows the system’s execution policy assessment, and xattr -l lists extended attributes. A valid signature alone does not prove that an app is trustworthy; still verify the developer and download source.

Don’t Treat Removing Quarantine Attributes as a Universal Fix

com.apple.quarantine is a common quarantine attribute on downloaded files; its presence is not itself a problem. Recursively deleting extended attributes or disabling Gatekeeper system-wide changes the checks macOS normally performs, but won’t fix an invalid signature, missing files, or an incompatible environment.

If the original project documents a distribution issue affecting a specific version, follow its instructions for that version and limit changes to the verified app. If macOS reports modified signed resources or missing files, download the app again or switch to a supported version. Sharing the exact error, macOS version, and processor architecture with the project maintainers is more useful than repeatedly running unknown repair scripts.

After Approval: Test System Proxy and TUN Separately

Permission approval only authorizes the requested action; it doesn’t confirm that your subscription, nodes, or DNS are working. Select a configuration in the client and make sure it loads, then choose an available policy. The port 7890 is used below as an example. Use the client’s actual HTTP or mixed listening port; defaults vary between clients.

  1. Turn off TUN and enable only the system proxy. On macOS 13–15, open System Settings → Network → your current connection → Details → Proxies, then check the enabled proxy, address, and port.
  2. The local proxy address is usually 127.0.0.1. Make sure the port matches the client and doesn’t point to an old client that has already quit.
  3. Run the explicit proxy request below to test the local HTTP proxy connection. This test doesn’t depend on whether Terminal reads the system proxy settings.
  4. Once the standard proxy works, enable TUN if needed. Watch the client logs and system VPN status, changing only one setting at a time.
scutil --proxy
lsof -nP -iTCP:7890 -sTCP:LISTEN
curl -I --max-time 15 --proxy http://127.0.0.1:7890 https://example.com/

scutil --proxy shows the system proxy status; lsof finds the process listening on the example port; curl uses a 15-second timeout. An HTTP response means the server responded to that request, but doesn’t prove that every app or TUN route is working. If the connection is refused, check the listening address and port first. If it times out, check the node, routes, and DNS in the logs.

If the system proxy works but TUN doesn’t, check extensions, helper services, and conflicts with other VPNs first. If both fail, check the configuration and nodes. Don’t run two VPN or TUN clients that route all traffic at the same time; their routes and DNS settings may override each other, making it look like you still can’t connect after granting permission.

FAQ: Which Permissions Can You Leave Off?

Do I need a network extension just to use a proxy in my browser?

Usually not. Once the client provides a local HTTP or SOCKS proxy, your browser can use it through system settings or its own proxy configuration. A system proxy won’t route traffic from every app, but that doesn’t mean you should automatically switch to TUN. Choose the traffic-routing mode that fits your needs.

The app asks for Full Disk Access. Should I turn it on?

Standard proxy connections usually don’t need Full Disk Access. Check the client’s documentation to find out which feature requires it. Network extension approval, administrator authentication, and Full Disk Access are separate permissions; granting the last one cannot replace the first two.

Is it normal to be asked for an administrator password or Keychain access again after an update?

Updating a helper service may require administrator authentication again, and a change to the app’s identity may trigger a Keychain prompt. Check that the request follows an update you initiated and that the app name and source are expected. If prompts keep appearing without an update, cancel and check for background processes instead of repeatedly approving them.

I can’t find the approval button. Do I need to reinstall macOS?

First check your macOS version, the client’s traffic-routing mechanism, and any device management restrictions. Only clients that use network extensions show the corresponding extension entry; for clients that use a helper service, check the service status. Save the exact error and follow the project’s troubleshooting guide. Reinstalling macOS is rarely the place to start.