Overview & Root Cause Summary: The security warning
"AppName" cannot be opened because the developer cannot be verified(and its companion error"AppName" is damaged and can't be opened. You should move it to the Trash) is triggered by Apple’s Gatekeeper subsystem on macOS. When an application, installer, or command-line binary is downloaded outside the Mac App Store, macOS automatically flags the file with thecom.apple.quarantineextended file attribute. If the software lacks a registered Apple Developer ID signature or has not been notarized by Apple’s verification servers, Gatekeeper blocks execution to prevent untrusted code execution.
Understanding the Root Causes
- The
com.apple.quarantineExtended Attribute: Web browsers (Safari, Chrome, Firefox) and download tools assign quarantine metadata to all downloaded files. Gatekeeper intercepts quarantined binaries upon launch. - Missing Apple Notarization: Open-source projects, internal developer tools, and software hosted on GitHub releases often operate without a paid Apple Developer subscription, meaning they cannot submit apps for Apple’s automated notarization scanning.
- Corrupted or Missing Ad-Hoc Signatures on Apple Silicon: On ARM64 Macs (M1, M2, M3, M4), the Darwin kernel mandates that all executable code must possess a valid cryptographic signature. If a binary is stripped, modified, or compiled without a signature, macOS flags it as “damaged”.
- Strict Gatekeeper Policies on Modern macOS: macOS Ventura, Sonoma, and Sequoia have tightened Gatekeeper rules, removing global disable options from System Settings and requiring explicit user authorization.
Step 1: Quick Fix (Remove the Quarantine Attribute via Terminal)
Stripping the quarantine metadata using the xattr utility is the cleanest and fastest developer solution, allowing the application to run normally without disabling system-wide Gatekeeper protection.
# 1. Inspect existing extended attributes on the target application:
xattr -l /Applications/AppName.app
# If quarantined, you will see: com.apple.quarantine
# 2. Recursively remove the quarantine attribute from the app bundle:
sudo xattr -r -d com.apple.quarantine /Applications/AppName.app
# 3. For completely clearing all extended attributes across all nested binaries:
sudo xattr -cr /Applications/AppName.app
# 4. For standalone command-line binaries (e.g. downloaded to ~/Downloads or /usr/local/bin):
xattr -d com.apple.quarantine /usr/local/bin/my_cli_tool
If you prefer using the native macOS graphical interface, grant an individual security exception for the application.
# Method A: Finder Context Menu Bypass
# 1. Open Finder and navigate to the Applications folder.
# 2. Right-click (or Control-click) on AppName.app and select 'Open'.
# 3. In the warning modal, click the 'Open' button (which appears instead of only 'Cancel' or 'Move to Trash').
# 4. macOS will register a permanent user override for this specific application bundle.
# Method B: macOS System Settings Override
# 1. Open System Settings > Privacy & Security.
# 2. Scroll down to the 'Security' section.
# 3. Look for the message: '"AppName" was blocked from use because it is not from an identified developer'.
# 4. Click 'Open Anyway' and enter your macOS user password.
Step 3: Re-Sign Binaries Locally Using Ad-Hoc Codesign
If the application reports “App is damaged and can’t be opened” on Apple Silicon Macs, the binary’s code signature is broken or missing. Re-sign the bundle locally with an ad-hoc signature.
# 1. Re-sign the entire application bundle recursively with an ad-hoc signature (-):
sudo codesign --force --deep --sign - /Applications/AppName.app
# 2. If the application contains embedded frameworks or helper executables:
sudo codesign --force --deep --preserve-metadata=entitlements --sign - /Applications/AppName.app
# 3. Re-verify the new signature status:
codesign --verify --verbose /Applications/AppName.app
Verification & Testing Steps
Confirm that all quarantine attributes have been cleared and verify Gatekeeper compliance.
# 1. Confirm that no quarantine attributes remain on the bundle:
xattr -l /Applications/AppName.app
# Expected output: (empty)
# 2. Check Gatekeeper assessment using spctl:
spctl -a -vv /Applications/AppName.app
# Note: An ad-hoc signed app will report accepted or rejected by rule, but xattr removal allows execution.
# 3. Launch the application from terminal:
open /Applications/AppName.app
Summary Comparison Table
| Remediation Method | Trigger Scenario | System Security Impact | Recommended Context |
|---|---|---|---|
xattr -cr /Applications/App.app |
Developer cannot be verified | Zero impact on other apps | Developers & CLI tools (Fastest) |
| Right-Click > Open in Finder | First-time app launch prompt | Native OS exception | Non-technical desktop users |
| Privacy & Security > Open Anyway | App blocked in background | Native OS exception | GUI preference override |
codesign --force --deep --sign - |
“App is damaged” on Apple Silicon | Creates valid local signature | ARM64 signature mismatches |
Leave a Reply