Why your Mac suddenly says an app is damaged
What's actually happening here is Gatekeeper, the security layer Apple built into macOS, is tagging any downloaded app with a quarantine attribute. That attribute tells macOS which app came from where — the app store, the internet, or a USB stick. When you try to open an app that was downloaded from the internet and not notarized by Apple, Gatekeeper blocks it and shows that scary message about the app being damaged or unable to be opened.
The real cause is usually one of two things: either the app was built with an older SDK that Apple's current macOS no longer trusts, or the quarantine attribute is just stale and needs to be cleared. In most cases, the app itself is fine — your Mac is just being overzealous.
This shows up most often after updating macOS, say from Ventura to Sonoma, when the new version tightens Gatekeeper rules. You'll see it with apps you've used for years, suddenly refusing to open. Or you'll see it right after installing a fresh download of something like an open-source tool from GitHub.
The 30-second fix: right-click and open
Apple gives you a manual bypass that works about 80% of the time. Skip double-clicking. Instead, right-click (or Control-click) the app icon in Finder and select Open from the context menu. macOS will show a slightly different dialog — one that gives you an Open button you can actually press.
Why does this work? Because Gatekeeper's automatic check runs on double-click, but the right-click path triggers a manual override. It's the same reason you'll see this trick mentioned on every Mac forum since 2012.
If that open dialog doesn't appear, or if the app still refuses to launch after you click Open, move to the next step.
The 5-minute fix: clear quarantine with xattr
The right-click bypass doesn't always clear the underlying flag. Sometimes Gatekeeper keeps complaining because the quarantine attribute is still attached. That's when you go to Terminal and strip it manually.
Open Terminal (it's in /Applications/Utilities/) and run this:
xattr -d com.apple.quarantine /path/to/YourApp.app
But you probably don't want to type the full path. Here's the easier way: drag the app icon from Finder into the Terminal window after typing xattr -d com.apple.quarantine. The path fills in automatically. Then press Return.
Let me explain what this does: xattr is the command-line tool for managing extended attributes on files. The -d flag deletes an attribute. The attribute name com.apple.quarantine is what Gatekeeper uses to track downloaded files. Removing it tells macOS "this app is local, nothing to see here."
You'll know it worked when Terminal shows no output. No output means success. If you get an error like No such xattr, that means the quarantine flag isn't there — which means your problem is something else entirely.
After that, try opening the app normally. If it still won't open, you might have a deeper issue.
The 15-minute fix: check Gatekeeper and app integrity
If clearing the quarantine flag didn't help, the app itself might have a broken signature or be too old for your macOS version. Here's how to find out.
First, check the system-wide Gatekeeper setting. On modern macOS it's mostly locked down unless you've disabled SIP, but it's worth verifying:
spctl --status
If the output says assessments disabled, Gatekeeper is off, which is unusual. If it says assessments enabled, your Mac is actively blocking apps. In that case, you can temporarily allow your app with:
spctl --add --label "MyApp" /path/to/YourApp.app
But honestly, that's a band-aid. The better approach is to check whether the app is actually signed and notarized:
codesign --verify --deep --strict /path/to/YourApp.app
If this returns nothing, the signature is valid. If it spits out errors like code object is not signed at all, the app is unsigned. Some unsigned apps still work — you just have to right-click open every time. Others won't work at all because they rely on Apple's security APIs that require a valid signature.
For an unsigned app that used to work on an older macOS, what's actually happening is the new macOS version requires hardened runtime support. Apple drops support for older signing formats with each major release. If that's the case, you have two options: find an updated build from the developer, or run the app inside a virtual machine with an older macOS.
One more thing to check: whether the quarantine attribute is actually on the app or on the enclosing folder. Some apps are distributed as a ZIP that contains multiple files. If you extracted the ZIP, the quarantine flag might be on the folder, not the app. Run xattr -r -d com.apple.quarantine /path/to/Folder to clear it recursively.
What to do if nothing works
When all three steps fail, the problem isn't Gatekeeper. Either the app is corrupted during download (check the file size against what the developer lists), or it's genuinely incompatible with your macOS version.
The fastest way to test corruption: redownload the app from a different source, ideally the developer's site directly, and try again. Also check if there's a newer version that supports your macOS. I've gone down the rabbit hole of tampering with codesign flags to force an unsigned app to run, and it's rarely worth it. The app will likely crash later.
One last thought: if you're on an Apple Silicon Mac and the app is Intel-only, it might not have Rosetta 2 installed. Install it with softwareupdate --install-rosetta and that could be the actual fix.
That's the complete troubleshooting flow. Start with right-click open, then clear the quarantine flag, then dig into signatures. Stop when your app launches. If it still won't, you're probably dealing with a bad download or an app that's just too old for modern macOS. Time to move on.