{"id":13478694,"url":"https://github.com/jacobsalmela/tccutil","last_synced_at":"2025-05-16T14:07:25.608Z","repository":{"id":18597379,"uuid":"21802125","full_name":"jacobsalmela/tccutil","owner":"jacobsalmela","description":"♿️  Command line tool to modify OS X's accessibility database (TCC.db)","archived":false,"fork":false,"pushed_at":"2024-10-01T15:35:56.000Z","size":65,"stargazers_count":489,"open_issues_count":8,"forks_count":61,"subscribers_count":28,"default_branch":"main","last_synced_at":"2025-05-07T15:53:38.789Z","etag":null,"topics":["accessibility-database","apple","entire-database","hacktoberfest","homebrew","tccutil"],"latest_commit_sha":null,"homepage":"https://jacobsalmela.com/2014/07/14/tccutil-py-command-line-utility-modifying-accessibility-database-os-x/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jacobsalmela.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["jacobsalmela"],"custom":["https://jacobsalmela.com/sponsor/"]}},"created_at":"2014-07-13T23:45:14.000Z","updated_at":"2025-04-20T22:31:54.000Z","dependencies_parsed_at":"2024-10-24T12:58:43.968Z","dependency_job_id":"2c34891c-c38f-4833-a26a-0a7feaf1b265","html_url":"https://github.com/jacobsalmela/tccutil","commit_stats":{"total_commits":60,"total_committers":15,"mean_commits":4.0,"dds":0.7,"last_synced_commit":"cb0cfe69765ade0a568f2691cbad825c11db39bf"},"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jacobsalmela%2Ftccutil","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jacobsalmela%2Ftccutil/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jacobsalmela%2Ftccutil/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jacobsalmela%2Ftccutil/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jacobsalmela","download_url":"https://codeload.github.com/jacobsalmela/tccutil/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254544146,"owners_count":22088807,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["accessibility-database","apple","entire-database","hacktoberfest","homebrew","tccutil"],"created_at":"2024-07-31T16:02:00.947Z","updated_at":"2025-05-16T14:07:25.590Z","avatar_url":"https://github.com/jacobsalmela.png","language":"Python","funding_links":["https://github.com/sponsors/jacobsalmela","https://jacobsalmela.com/sponsor/"],"categories":["Python"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://jacobsalmela.com/\"\u003e\n        \u003cimg src=\"https://user-images.githubusercontent.com/3843505/108144809-fea82a00-708f-11eb-9c99-884ce4702282.png\" width=\"250\" height=\"250\" alt=\"tccutil\"\u003e\n    \u003c/a\u003e\n    \u003cbr\u003e\n    \u003cstrong\u003etccutil.py\u003c/strong\u003e\u003cbr\u003e\n    Modify macOS' \u003ccode\u003eTCC.db\u003c/code\u003e from the command line\n\u003c/p\u003e\n\n## Modify macOS' Transparency, Consent, and Control (TCC) Framework from the Command Line\n\nApple 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.\n\n## SIP Notice\n\nThis tool needs SIP disabled in order to function.  The risk of doing so is up to you.\n\nDiscussions on this topic can be found here: https://github.com/jacobsalmela/tccutil/discussions/44\n\n## How is `tccutil.py` Different from other solutions?\n\n- `tccutil.py` can be installed without any additional software.\n- it has an easy to use syntax\n- it supports both system wide and user scope TCC manipulation\n- it wraps the native `/usr/bin/tccutil` tool\n- there are other solutions out there, but there were some things I did not like about them:\n\n  + [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)\n\n  + [tccmanager.py](https://github.com/timsutton/scripts/blob/master/tccmanager/tccmanager.py) uses a `.plist` to add items, which is inconvenient.\n\n- these are also some other projects I found that do similar things\n\n  + [go-tccutil](https://github.com/JesusTinoco/go-tccutil) I actually only recently found this\n\n  + [tccplus](https://github.com/jslegendre/tccplus)\n\n  + [DocSystem/tccutil](https://github.com/DocSystem/tccutil)\n\n\n\n# Installation\n\n## Homebrew\n\nInstall using Homebrew.\n\n```\nbrew install tccutil\n```\n\nDepending 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.\n\n\n## Alternative Install\n\nClone this repo and manually copy `tccutil.py` to `/usr/local/bin` or run from any directory with `python /path/to/tccutil.py`.\n\n## Usage\n\n**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.\n\n\n```\nusage: tccutil.py [-h] [--service SERVICE] [--list] [--digest] [--insert INSERT] [-v]\n                  [-r REMOVE] [-e ENABLE] [-d DISABLE] [--user [USER]] [--version]\n                  [ACTION]\n\nModify Accesibility Preferences\n\npositional arguments:\n  ACTION                This option is only used to perform a reset, using \"/usr/bin/tccutil\". See\n                        `man tccutil` for additional syntax\n\noptional arguments:\n  -h, --help            show this help message and exit\n  --service SERVICE, -s SERVICE\n                        Set TCC service\n  --list, -l            List all entries in the accessibility database\n  --digest              Print the digest hash of the accessibility database\n  --insert INSERT, -i INSERT\n                        Adds the given bundle ID or path to the accessibility database\n  -v, --verbose         Outputs additional info for some commands\n  -r REMOVE, --remove REMOVE\n                        Removes a given Bundle ID or Path from the Accessibility Database\n  -e ENABLE, --enable ENABLE\n                        Enables Accessibility Access for the given Bundle ID or Path\n  -d DISABLE, --disable DISABLE\n                        Disables Accessibility Access for the given Bundle ID or Path\n  --user [USER], -u [USER]\n                        Modify accessibility database for a given user (defaults to current,\n                        if no additional parameter is provided)\n  --version             Show the version of this script\n```\n\n\n### Examples\n\nList existing Entries in the Accessibility Database\n\n```bash\nsudo tccutil.py --list\n```\n\nList existing Entries in the Accessibility Database specific to the current user\n\n```bash\nsudo tccutil.py --list -u\n```\n\nAdd `/usr/bin/osascript` to the Accessibility Database (using UNIX-Style Option)\n\n```bash\nsudo tccutil.py -i /usr/bin/osascript\n````\n\nAdd `/usr/bin/osascript` to the Accessibility Database specific to user 'myuser' (using UNIX-Style Option)\n\n```bash\nsudo tccutil.py -i /usr/bin/osascript -u myuser\n````\n\nAdd *Script Editor* to the Accessibility Database (using Long Option)\n\n```bash\nsudo tccutil.py --insert com.apple.ScriptEditor2\n```\n\nRemove *Terminal* from the Accessibility Database\n\n```bash\nsudo tccutil.py --remove com.apple.Terminal\n```\n\nEnable *Terminal* (must already exist in the Database)\n\n```bash\nsudo tccutil.py --enable com.apple.Terminal\n```\n\nDisable `/usr/bin/osascript` (must already exist in the Database)\n\n```bash\nsudo tccutil.py -d /usr/bin/osascript\n```\n\nReset system wide accessibility database\n\n```bash\nsudo tccutil.py reset ALL\n```\n\n## Contributing\n\nMany people have contributed already, so feel free to make a PR and we'll get it merged in.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjacobsalmela%2Ftccutil","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjacobsalmela%2Ftccutil","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjacobsalmela%2Ftccutil/lists"}