tccutil

June 20, 2025 ยท View on GitHub

A macOS TCC permissions manager

macOS Python

๐Ÿ“‹ Overview

โœ… Tested and verified on macOS 15.5 (Sequoia) plus other macOS versions

โš ๏ธ Requires SIP to be (at least partially) disabled

๐Ÿ”ง Supports all major TCC permission types

๐Ÿšจ Important Notice

โš ๏ธ WARNING: This tool directly modifies the TCC.db file. Use at your own risk.

๐ŸŽฏ Supported Permissions

PermissionFlagDescription
๐Ÿ“‡ Contacts--contactsAccess to Contacts app data
๐Ÿ“… Calendars--calendarsAccess to Calendar app data
โœ… Reminders--remindersAccess to Reminders app data
๐Ÿ“ธ Photos--photosAccess to Photos library
๐Ÿ“น Camera--cameraCamera hardware access
๐ŸŽค Microphone--microphoneMicrophone hardware access
๐Ÿ“ Location--locationLocation Services access
๐Ÿ–ฅ๏ธ Screen Recording--screen-recordingScreen capture permissions
โ™ฟ Accessibility--accessibilityAccessibility API access
๐Ÿ’พ Full Disk Access--full-disk-accessComplete file system access
โŒจ๏ธ Input Monitoring--input-monitoringKeystroke and input monitoring
๐Ÿ“ถ Bluetooth--bluetoothBluetooth hardware access
๐ŸŒ Local Network--local-networkLocal network access
๐ŸŽต Media Library--media-libraryApple Music and media access
๐Ÿ—ฃ๏ธ Speech Recognition--speech-recognitionSpeech recognition services
๐Ÿ–ฅ๏ธ Desktop Folder--desktop-folderDesktop folder access
๐Ÿ“„ Documents Folder--documents-folderDocuments folder access
๐Ÿ“ฅ Downloads Folder--downloads-folderDownloads folder access

๐Ÿ› ๏ธ Usage

Basic Syntax

sudo python3 tccutil.py [ACTION] [APP_IDENTIFIER] [PERMISSION]

Actions

  • -e, --enable - Grant permission to the app
  • -d, --disable - Deny permission to the app
  • -r, --remove - Remove permission record entirely

App Identification

  • -id BUNDLEID - Specify app by bundle ID (e.g., com.apple.Terminal)
  • -p APPPATH - Specify app by full path
  • -n APPNAME - Specify app by name (searches in /Applications/)

๐Ÿ“š Example Commands

Enable Permissions

# Grant Terminal full disk access
sudo python3 tccutil.py -e --full-disk-access -n Terminal

# Allow VS Code to record screen
sudo python3 tccutil.py -e --screen-recording -id com.microsoft.VSCode

# Grant camera access to Zoom
sudo python3 tccutil.py -e --camera -n zoom.us

# Enable microphone for Discord
sudo python3 tccutil.py -e --microphone -id com.hnc.Discord

Disable Permissions

# Revoke location access from an app
sudo python3 tccutil.py -d --location -n "Some App"

# Disable contacts access
sudo python3 tccutil.py -d --contacts -id com.example.app

Remove Permission Records

# Completely remove accessibility permission record
sudo python3 tccutil.py -r --accessibility -n "My App"

# Remove all traces of input monitoring permission
sudo python3 tccutil.py -r --input-monitoring -id com.example.keylogger

Multiple Permissions

# Grant multiple permissions to an app
sudo python3 tccutil.py -e --camera --microphone --screen-recording -n "OBS Studio"

๐Ÿ”ง Installation & Setup

Prerequisites

  1. Disable SIP (System Integrity Protection):

    # Boot into Recovery Mode (โŒ˜+R during startup)
    # Open Terminal and run:
    csrutil disable
    # Reboot normally
    
  2. Python 3.6+ (usually pre-installed on macOS)

Quick Setup

  1. Clone or download this repository
  2. Make executable:
    chmod +x tccutil.py
    

Add to PATH (Optional)

To use tccutil from anywhere:

# For zsh (macOS 10.15+)
echo 'alias tccutil="sudo python3 /path/to/tccutil.py"' >> ~/.zshrc
source ~/.zshrc

# For bash
echo 'alias tccutil="sudo python3 /path/to/tccutil.py"' >> ~/.bash_profile
source ~/.bash_profile

Then use it like:

tccutil -e --camera -n "My App"

๐Ÿ“ Notes

If you don't want to disable SIP completely for any reason. The only protection that truly needs to be off is the filesystem protection.

The command that you'll need to run in recovery mode if you want this is:

csrutil enable --without fs