<p align="center"> <a href="https://jacobsalmela.com/" rel='nofollow' onclick='return false;'> <img src="https://user-images.githubusercontent.com/3843505/108144809-fea82a00-708f-11eb-9c99-884ce4702282.png" width="250" height="250" alt="tccutil"> </a> <br> <strong>tccutil.py</strong><br> Modify macOS' <code>TCC.db</code> from the command line </p> ## Modify macOS' Transparency, Consent, and Control (TCC) Framework from the Command Line Apple has a utility in `/usr/bin` named `tccutil`, but it only supports one command, which is to `reset` the entire database. It has been like this for many versions of macOS. I wanted a command-line utility that would be able to add, remove, list, and take other actions. ## SIP Notice This tool needs SIP disabled in order to function. The risk of doing so is up to you. Discussions on this topic can be found here: https://github.com/jacobsalmela/tccutil/discussions/44 ## How is `tccutil.py` Different from other solutions? - `tccutil.py` can be installed without any additional software. - it has an easy to use syntax - there are other solutions out there, but there were some things I did not like about them: + [Privacy Manager Services](https://github.com/univ-of-utah-marriott-library-apple/privacy_services_manager) has other dependencies that need to be installed (it has also gone over five years without any updates) + [tccmanager.py](https://github.com/timsutton/scripts/blob/master/tccmanager/tccmanager.py) uses a `.plist` to add items, which is inconvenient. - these are also some other projects I found that do similar things + [go-tccutil](https://github.com/JesusTinoco/go-tccutil) I actually only recently found this + [tccplus](https://github.com/jslegendre/tccplus) + [DocSystem/tccutil](https://github.com/DocSystem/tccutil) # Installation ## Homebrew Install using Homebrew. ``` brew install tccutil ``` Depending how you have your `$PATH` variable setup, you can simply type `tccutil` (instead of the full path) and it will run this utility _instead_ of Apple's. ## Alternative Install Clone this repo and manually copy `tccutil.py` to `/usr/local/bin` or run from any directory with `python /path/to/tccutil.py`. ## Usage **This utility needs super-user priveleges for most operations.** It is important that you either run this as root or use `sudo`, otherwise it won't work and you will end up with “permission denied” errors. ``` usage: tccutil.py [-h] [--service SERVICE] [--list] [--insert INSERT] [-v] [-r REMOVE] [-e ENABLE] [-d DISABLE] [--version] [ACTION] Modify Accesibility Preferences positional arguments: ACTION This option is only used to perform a reset. optional arguments: -h, --help show this help message and exit --service SERVICE, -s SERVICE Set TCC service --list, -l List all entries in the accessibility database. --insert INSERT, -i INSERT Adds the given bundle ID or path to the accessibility database. -v, --verbose Outputs additional info for some commands. -r REMOVE, --remove REMOVE Removes a given Bundle ID or Path from the Accessibility Database. -e ENABLE, --enable ENABLE Enables Accessibility Access for the given Bundle ID or Path. -d DISABLE, --disable DISABLE Disables Accessibility Access for the given Bundle ID or Path. --version Show the version of this script ``` ### Examples List existing Entries in the Accessibility Database ```bash sudo tccutil.py --list ``` Add `/usr/bin/osascript` to the Accessibility Database (using UNIX-Style Option) ```bash sudo tccutil.py -i /usr/bin/osascript ```` Add *Script Editor* to the Accessibility Database (using Long Option) ```bash sudo tccutil.py --insert com.apple.ScriptEditor2 ``` Remove *Terminal* from the Accessibility Database ```bash sudo tccutil.py --remove com.apple.Terminal ``` Enable *Terminal* (must already exist in the Database) ```bash sudo tccutil.py --enable com.apple.Terminal ``` Disable `/usr/bin/osascript` (must already exist in the Database) ```bash sudo tccutil.py -d /usr/bin/osascript ``` ## Contributing Many people have contributed already, so feel free to make a PR and we'll get it merged in.