macOS Clash "Can't Be Opened" or "Damaged": Fixing Network Extension & Keychain Permissions

macOS installs of Clash often hit "can't be opened," "damaged" errors, or network extension authorization failures. Here's the full fix by macOS version, covering security settings, network extensions, and Keychain.

Installing a Clash-based client on macOS (ClashX, ClashX Meta, Clash Verge Rev, Clash Nyanpasu, and similar apps), the three most common launch blockers each come from a different macOS layer: Gatekeeper's notarization check, network extension authorization, and Keychain access control. The dialogs look similar, but the fixes are completely different — mixing up commands across these three usually makes things worse.

This guide walks through the fix in order: pin down which layer is blocking you, then jump to the matching entry point for your macOS version. It covers System Settings on macOS 13 Ventura and later, plus the equivalent System Preferences path on macOS 12 Monterey and earlier.

Identify the error: three dialogs, three different systems

Most Clash clients are maintained by community developers and aren't notarized under a paid Apple developer account — or the signature gets invalidated after repackaging. macOS responds by requiring a manual one-time override. Match the exact dialog wording against the table below to find which layer you're stuck on, then jump to that section.

Dialog textLayerWhere to fix it
"is damaged and can't be opened. You should move it to the Trash"Download quarantine flagRemove quarantine via Terminal (Section 2)
"can't be opened because the developer cannot be verified" / "Apple could not verify that this app is free of malware"Gatekeeper notarization checkRight-click Open, or "Open Anyway" (Section 3)
"Would Like to Filter Network Content" / "System Extension Blocked," Enhanced Mode toggle won't turn onNetwork extension authorizationAllow it in three places in System Settings (Section 4)
Keeps prompting "wants to use your confidential information stored in Keychain" on every launchKeychain access controlChoose Always Allow, or repair Keychain (Section 5)

These four issues can stack. Fix "won't open" first, then "opens but Enhanced Mode doesn't work," then "asks for my password on every launch." Just follow the order in this guide — no need to skip ahead.

"Damaged, can't be opened": clear the download quarantine flag

Files downloaded through a browser or chat app get tagged with the com.apple.quarantine extended attribute. When a quarantined app fails signature verification, macOS shows the "damaged" dialog. The fix is to remove that attribute — re-downloading won't help, since the new copy will be quarantined again too.

  1. Drag the app from the dmg into the Applications folder, and confirm the final path is /Applications/ClashX.app (use the actual app name).
  2. Open Terminal (Launchpad → Other → Terminal).
  3. Run the command below, then type your login password when prompted (nothing will appear as you type — that's normal) and press Enter.
sudo xattr -rd com.apple.quarantine /Applications/ClashX.app

What the flags mean: -r recursively processes every file inside the app bundle, -d removes the specified attribute. Wrap the path in quotes if it contains spaces — or leave a trailing space after the command and drag the app icon from Finder straight into the Terminal window to auto-fill the path and avoid typos.

Note

This command tells Gatekeeper to skip its check for this one app. Only use it on installers from the official GitHub repo or another trusted source — delete anything from an unknown source instead of overriding it.

"Developer cannot be verified": a one-time Gatekeeper override

This dialog is milder than "damaged" — macOS has a built-in one-time override, no Terminal needed. Use either method below.

Method 1 (recommended): In Finder, hold Control and click the app icon (or two-finger click), then choose Open. The dialog now includes an Open button — click it, and macOS remembers your choice, so double-clicking works normally from then on.

Method 2: Within about an hour of being blocked, open System Settings → Privacy & Security, scroll down to the Security section, and you'll see a "blocked from use" notice for the app. Click Open Anyway and enter your password to confirm.

Version differences: On macOS 13 Ventura and later, this lives under System Settings → Privacy & Security. On macOS 12 Monterey and earlier, it's under System Preferences → Security & Privacy → General — click the lock icon in the bottom-left corner to unlock the pane before you can click Open Anyway.

What not to do

Some older guides suggest running sudo spctl --master-disable to enable "Anywhere" as an allowed source. This disables Gatekeeper system-wide, so every future download skips the check — the blast radius is way too big. Allowing apps one at a time already covers every real use case, so don't touch the global switch.

Network extension authorization: Enhanced Mode and TUN mode

ClashX Meta's Enhanced Mode and the TUN mode found in mihomo-based clients both work by installing a system-level network extension that takes over all device traffic. macOS requires explicit user authorization for this, so the first time you turn it on, you'll see two separate system dialogs in sequence:

  • "'xxx' Would Like to Filter Network Content": content filter authorization — click Allow.
  • "System Extension Blocked" from developer xxx: system extension load authorization — go to Settings and click Allow.

On macOS 13 and later, check all three authorization points:

  1. System Settings → Network → Filters: confirm the toggle for your client's filter is turned on. If you accidentally clicked "Don't Allow" the first time, re-enable it here.
  2. System Settings → General → Login Items & Extensions → Network Extensions: confirm the client's extension is enabled.
  3. System Settings → Privacy & Security → Security: click Allow if you see a "blocked" notice — some macOS versions require a restart for this to take effect.

If it's still not working after authorizing: fully quit the client from the menu bar icon and relaunch it; toggle Enhanced Mode or TUN off and back on in the client's settings; check whether another proxy tool's network extension is running at the same time — only one TUN device can be active at once, and whichever one starts second will fail.

TUN mode is useful because it doesn't rely on system proxy settings — it can capture traffic from apps that ignore the system proxy (some CLI tools, games, sandboxed apps). For everyday browsing, the system proxy alone is enough; only turn on Enhanced Mode or TUN when you need to capture traffic from the whole machine.

Keychain keeps prompting: fixing write authorization and the login keychain

The client needs access to your login keychain to set the system proxy, install a privileged helper tool, or read node credentials from your subscription. The dialog "xxx wants to use your confidential information stored in your keychain" is normal — click Always Allow once, and you're done. If it keeps popping up on every launch, the authorization isn't being saved to Keychain.

  1. Enter your login password in the dialog and click Always Allow — not Allow, which only grants access for that one process run.
  2. Still prompting repeatedly: open Keychain Access, select the login keychain on the left, search for the client's name, double-click the matching entry, switch to the Access Control tab, and choose "Allow all applications to access this item," or add the client to the always-allow list.
  3. Endless system-wide prompts right after changing your macOS login password: your login keychain password is now out of sync with your account password. Open Keychain Access, go to menu bar → Keychain Access → Settings → Reset Default Keychains, and the keychain password will realign with your login password automatically.

Before you proceed

Resetting the default keychain wipes every password and credential stored in it (website passwords, Wi-Fi passwords, etc.). Make sure important credentials are backed up elsewhere, or recoverable from iCloud Keychain, before doing this.

Also worth knowing: an app's signing identity can change with each update, which invalidates old "Always Allow" records. Being asked to authorize again right after an update is expected — not a bug.

Wrong architecture: Apple silicon vs. Intel builds

Another common cause of the "damaged" error is downloading the wrong architecture. Click the menu in the top-left corner → About This Mac: if Chip shows an Apple M-series name, you're on Apple silicon (arm64); if it shows Intel, you're on x86_64. Apple silicon Macs should download builds labeled arm64 or universal; Intel Macs should pick x86_64.

If you specifically need to run an Intel build on Apple silicon, install the Rosetta 2 translation layer first:

softwareupdate --install-rosetta --agree-to-license

Popular clients (ClashX Meta, Clash Verge Rev, Clash Nyanpasu) all ship dual-architecture builds — grabbing the native build for your chip is more stable and uses fewer resources than relying on translation.

Post-install checklist

  1. The client's icon shows up in the menu bar, and you can open the panel and see the node list.
  2. Run scutil --proxy in Terminal and confirm HTTPEnable is 1 and HTTPPort matches your client's port (7890 by default for ClashX, 7897 for Clash Verge Rev).
  3. Run lsof -nP -iTCP:7890 -sTCP:LISTEN (swap in your actual port) and confirm the client process is listening.
  4. Import your subscription link, set the proxy mode to Rule, and open a blocked site in your browser to confirm connectivity.
  5. After enabling Enhanced Mode or TUN, double-check with an app that doesn't use the system proxy.

If every step above checks out, all three permission layers are correctly configured. For subscription updates, rule-based routing, LAN sharing, and other topics, check the other guides and glossary pages on this site.

DOWNLINK READY

Download Clash

Get macOS builds for both arm64 and x86_64, plus Windows, Linux, and Android versions, all sorted by platform on the download page.

Download Clash