How to stop apps from changing your default apps on Mac
You set Visual Studio Code to open .json files. A week later they open in Xcode. Nothing you did, so what happened?
Why defaults change by themselves
- New apps claim file types. Every app lists the types it can open. When a new app is installed or launched for the first time, macOS may make it the handler for types that had no clear default.
- Updates re-register. A big app update can re-register the app with macOS and take back types it used to own.
- “Make default” prompts. Browsers and email apps ask to become the default. One accidental click and every link moves.
- Duplicate copies. Two copies of the same app, such as a beta, can split file types between them.
Since macOS 26.4, apps must get your confirmation to change file-type and browser defaults, which helps a lot. Changes from new installs and other link types can still slip through, and it's easy to click “Use …” without reading.
Catch changes with Default Guard
Default Guard is part of Defaultify for Mac Pro:
- In Defaultify, click the pin next to each default you care about.
- Defaultify checks your defaults in the background, and right after any app launches or quits.
- If a pinned default changes, you get a notification: “
.jsondefault changed. Xcode replaced Visual Studio Code.” - Click Revert. Defaultify takes a backup first, then puts your app back.
Every change also shows up in the Default Guard list and the menu bar, so you can review them later.
Without extra apps
You can check a type at any time with Finder: select a file, press ⌘ I, and look at Open with. To fix it, choose the app and click Change All…. See changing the default app for a file type.
Set it once, keep it that way
Defaultify for Mac watches the defaults you pin and puts them back in one click.