I wrote a tool that sniffs changes to macOS defaults as they change and autogenerates the defaults
incantation to set those preferences. I have a post in the wings about this. For that to be useful, though, I need to establish a bit more groundwork about defaults. In particular, the various locations where the backing plist files can exist. Most are intuitive, but many are not.
Here’s a rundown of places where defaults
plist files can exist if they’re not in ~/Library/Preferences
or /Library/Preferences
.
Host-specific
A default may be “host-specific,” meaning it only applies to a specific machine. I believe the idea is to allow per-machine configuration in situations where a user’s preferences are loaded from a synchronized folder or network share (such as an LDAP directory or NFS home directory). In this case the preference will be under a UUID that is specific to the given machine. Looking under ~/Library/Preferences/ByHost
, you should see a number of plist files each with a UUID in its name. Using defaults
to apply a setting to the local machine, use the -currentHost
option. Further, the UUID in the plist file name is omitted from the defaults domain. The screen saver preference is an example. A change to: ~/Library/Preferences/ByHost/com.apple.screensaver.2DDBD5D3-ADCF-4EB4-AC37-285A5079813B.plist
…could be accomplished with:
$ defaults -currentHost write 'com.apple.screensaver' 'moduleDict' -dict-add 'path' '<string>/System/Library/Frameworks/ScreenSaver.framework/Resources/Computer Name.saver</string>'
$ defaults -currentHost write 'com.apple.screensaver' 'moduleDict' -dict-add 'moduleName' '<string>Computer Name</string>'
NSGlobalDomain
When the preference domain is the NSGlobalDomain
, the default isn’t stored in a domain specific to an application or preference pane. These defaults are visible to all applications, regardless of their own preference domains. Locations where global preferences may be recorded include:
/Library/Preferences/.GlobalPreferences.plist
~/Library/Preferences/.GlobalPreferences.plist
~/Library/Preferences/ByHost/.GlobalPreferences.plist
If it isn’t clear where a preference is being recorded, try one of these locations.
Multiple plist files
In some cases, a single setting in a user interface may actually manifest across multiple plist files. An example of this is the Trackpad preference pane.

The “Tap to click” setting is stored across the following three domains:
com.apple.driver.AppleBluetoothMultitouch.mouse
com.apple.AppleMultitouchTrackpad
NSGlobalDomain
(under thecom.apple.mouse.tapBehavior
key)
On a MacBook, settings in all three of these domains are required to configure tap-to-click.
Containerized Applications
Apps that are containerized (such as any app from the Mac App Store) can only write files inside their own containers. App containers are located in ~/Library/Containers
. For example, TextEdit.app’s container is /Library/Containers/com.apple.TextEdit
, and it’s preferences are written in Data/Library/Preferences/com.apple.TextEdit.plist
inside that directory.
This can get confusing; in some cases a previous, non-containerized version of the app may have written its preferences to ~/Library/Preferences
. So there may be a plist file there that is no longer in use.
So that’s a summary of preference locations on the filesystem that may be less than obvious. In the next post, I’ll describe a tool that will work out for you what the defaults incantation is to configure a specific setting. For that tool, you’ll need the foundation established in this and the previous defaults
posts.