[Fixed] “App” cannot be opened because the developer cannot be verified in macOS: Step-by-Step Troubleshooting Guide

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 the com.apple.quarantine extended 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.quarantine Extended 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

Step 2: Bypass via macOS System Settings or Finder Context Menu

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

Discover more from Victor's room

Subscribe now to keep reading and get access to the full archive.

Continue reading