Apple - Change accessibility setting on Mac using terminal
klanomath's answer looks good, but if you're like me and aren't as familiar with SQL, want more granular control (enabling/disabling individual apps instead of all at once), or want a clearer interface to work with, you should check out tccutil.py
.
Using tccutil
, the command you'd want to run to enable an app is
sudo tccutil -e app.bundle.identifier
For example, if you wanted to enable BetterTouchTool, the command you would run is
sudo tccutil -e com.hegenberg.BetterTouchTool
I'm assuming that if you wanted to enable BetterSnapTool the last part would just be com.hegenberg.BetterSnapTool
but I don't have that installed on my computer so I can't verify.
You can easily find the correct bundle identifier by running sudo tccutil -l
after you've installed the app and it's asked for accessibility permissions (just look for the identifier that maps to the app you want to grant permissions to). If that doesn't quite work (like if the bundle identifier isn't what you expect it to be), you can find it by viewing the app bundle's contents, finding the Info.plist
file, and finding the value for the CFBundleIdentifier
key.
EDIT: please note this stopped working in OS X 10.11 El Capitan (also see first comment here)
The accessibility permissions are stored in a sqlite database file at /Library/Application Support/com.apple.TCC/TCC.db.
Since sqlite3 is shipped by default with the later Mac OS X', use it to modify the settings.
The db scheme looks like this:
sqlite> .schema
CREATE TABLE access (service TEXT NOT NULL, client TEXT NOT NULL, client_type INTEGER NOT NULL, allowed INTEGER NOT NULL, prompt_count INTEGER NOT NULL, csreq BLOB, CONSTRAINT key PRIMARY KEY (service, client, client_type));
CREATE TABLE access_overrides (service TEXT PRIMARY KEY NOT NULL);
CREATE TABLE access_times (service TEXT NOT NULL, client TEXT NOT NULL, client_type INTEGER NOT NULL, last_used_time INTEGER NOT NULL, CONSTRAINT key PRIMARY KEY (service, client, client_type));
CREATE TABLE admin (key TEXT PRIMARY KEY NOT NULL, value INTEGER NOT NULL);
The relevant table name is "access" and the relevant field name is "allowed". If allowed contains a "1" the app is granted permission to control the computer, if it contains a "0" the permission is not granted.
With the command
sudo sqlite3 "/Library/Application Support/com.apple.TCC/TCC.db" 'UPDATE access SET allowed = "1";'
you can toggle permission on for all apps listed.
With the command
sudo sqlite3 "/Library/Application Support/com.apple.TCC/TCC.db" 'UPDATE access SET allowed = "0";'
you can toggle permission off for all apps listed.