Apple's Gatekeeper security system in OS X allows you to limit running applications to those that are created by trusted developers. With this feature enabled, if you open an unsigned program directly instead of using the contextual menu, then you will get an error message and the program will not execute.
However, Gatekeeper also detects whether a program has potentially been altered, and will prevent such a program from running. This is an effort to prevent programs, signed or otherwise, from being tampered with by malware and hackers. When this happens, the system will issue a similar Gatekeeper warning that states that the program is damaged.
Unlike the warnings for running programs from unidentified developers, there is no built-in option to bypass warnings about damaged applications. Even if you right-click the program and choose to open it from the contextual menu, you will still be met with the same warning that gives you the option of quitting the program or moving it to the trash.
Useful as this feature can be, it can also be frustrating, as some programs alter themselves when running without anything being wrong, or you may be testing a program and manually altering it yourself. A developer may also issue an update to a program that is perfectly legitimate, but somehow is signed and checksummed in such a way as to trigger the "damaged application" warning and thus be prevented from running.
While in these cases the safest bet is to contact the developer for an update to the program that works properly with Gatekeeper, this can sometimes take a while to get sorted out, and in the meantime you can't use the program or are forced to downgrade to a different version.
However, if you know the program version being blocked is perfectly fine, there is a way to overcome this problem, which is to create a Gatekeeper exception for it. To do this, you will create a new rule set for the updated program, which can be done in the OS X Terminal by the following routine:
- Open the Terminal and type the following (do not press enter yet):
spctl --add --label "NAME"In the above command, replace "NAME" with a label that you would like for the rule, which you might consider setting to the program name for relevance (for example, you might name it "Word" for Microsoft Word).
- Make sure there is only a single space after the "NAME" portion of the command, and then drag the faulty application to the Terminal window. This will complete the full path to the program, so the command should appear like the following:
spctl --add --label "NAME" /Applications/Program\ Folder/Program.app
When finished, press Enter to execute the command, and an exception for the program will be created that will allow it to run. Now you can double-click the program and open it directly, and should not be met with a damaged-application error. Again, do keep in mind this routine will bypass Gatekeeper checks for the specified program, so only do this if you know the Gatekeeper warning is simply a false positive.