Troubleshooting macOS Gatekeeper: A Diagnostic Guide for Ventura and Later
When a macOS app refuses to launch with a Gatekeeper warning, this diagnostic guide walks you through the root causes, step‑by‑step checks, and targeted fixes—plus when to file a bug with Apple.
19 May 2026, 13:24 UTC

Recognizable Condition
When you try to launch an application, you either see a dialog that says "[AppName] can’t be opened because it is from an unidentified developer", or the app quits immediately with no user interface. This is Gatekeeper rejecting the binary before it can run.
Cause & Diagnostic Table
| Potential Cause | Typical Symptom | How to Detect |
|---|---|---|
| Unsigned or missing notarization | Gatekeeper dialog appears immediately | Run spctl -a -t execute -vv /Path/To/App – look for “rejected” |
| Security & Privacy set to "App Store only" | All non‑App‑Store apps block | Check System Settings → Security & Privacy → General |
| Corrupted quarantine attribute on an otherwise allowed app | App quits without warning after being previously approved | Run xattr -l /Path/To/App – look for com.apple.quarantine |
| System Integrity Protection (SIP) preventing policy changes | Commands like spctl --master-disable return “Operation not permitted” | Boot into Recovery and run csrutil status |
Ordered Checks
- Verify the app’s signature and notarization status:
spctl -a -t execute -vv /Applications/ExampleApp.appExpected output ends with
acceptedif the binary is signed and notarized. If it showsrejected, proceed to step 4. - Check Gatekeeper policy:
spctl --statusOutput should be
assessments enabled. If it showsassessments disabled, Gatekeeper is turned off. - Review user‑level security settings:
Open System Settings → Security & Privacy → General. Ensure the source is set to "App Store and identified developers". If it’s "App Store only", Gatekeeper will block all other binaries.
- Inspect quarantine attributes:
xattr -l /Applications/ExampleApp.appIf
com.apple.quarantineis present, remove it withxattr -d com.apple.quarantine /Applications/ExampleApp.app. This clears a stale quarantine flag that can trigger re‑evaluation. - Check Console for Gatekeeper logs:
log show --predicate 'subsystem == "com.apple.gatekeeper"' --info --last 1hLook for entries that reference the app’s bundle identifier. These entries confirm whether Gatekeeper is actively rejecting the binary.
Fixes Tied to Findings
- Unsigned or missing notarization: Obtain a notarized build from the vendor or re‑sign with a valid Developer ID and notarize via Xcode or
notarytool. After notarization, re‑run thespctlcheck to confirm acceptance. - "App Store only" policy: Temporarily switch to "App Store and identified developers" in System Settings or run
sudo spctl --master-disable(this disables Gatekeeper entirely). After testing, re‑enable withsudo spctl --master-enableto restore security. - Quarantine attribute present: Remove it with
xattr -d com.apple.quarantine /Applications/ExampleApp.app. Verify the attribute is gone by re‑runningxattr -l. - SIP blocking changes: Boot into Recovery, run
csrutil disable, reboot, adjust Gatekeeper policy, then runcsrutil enableto restore SIP. Use this only when other steps fail.
Escalation Criteria
If after applying the appropriate fix the app still fails to launch, gather the following information:
- Full Gatekeeper log:
log show --predicate 'subsystem == "com.apple.gatekeeper"' --info --last 1h - App’s bundle identifier and version (found in
Info.plist). - The exact error message displayed.
- Any custom signing certificates used.
Submit this package to Apple’s Feedback Assistant under the “Security” category. Apple’s engineering team will review the log and determine if a bug or mis‑configuration is at fault.
Limitations & Practical Verification
- Disabling Gatekeeper globally exposes the system to malware. Use
sudo spctl --master-disableonly for short‑term testing and re‑enable immediately after. - Removing quarantine attributes without verifying provenance can allow tampered code. Always compare the binary’s hash to the vendor’s published checksum.
- After each fix, confirm acceptance with
spctl -a -t execute -vv /Applications/ExampleApp.appand launch the app from Finder to ensure no Gatekeeper dialog appears.
Concrete Example
Suppose you’re trying to run ExampleApp.app from /Applications and receive the Gatekeeper warning. Follow these steps:
- Run
spctl -a -t execute -vv /Applications/ExampleApp.app→ output showsrejected. - Check policy:
spctl --status→assessments enabled. - Verify Security & Privacy setting is "App Store only" → change to "App Store and identified developers".
- Re‑run
spctl→ now showsaccepted. - Launch the app; it opens without warning.
These steps resolve the most common Gatekeeper blockage scenarios on macOS Ventura and later.
0 replies
A thoughtful contribution can make all the difference. Be the first to share one.