Skip to content

DocSystem/tccutil

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

16 Commits
Β 
Β 
Β 
Β 

Repository files navigation

tccutil

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

Permission Flag Description
πŸ“‡ Contacts --contacts Access to Contacts app data
πŸ“… Calendars --calendars Access to Calendar app data
βœ… Reminders --reminders Access to Reminders app data
πŸ“Έ Photos --photos Access to Photos library
πŸ“Ή Camera --camera Camera hardware access
🎀 Microphone --microphone Microphone hardware access
πŸ“ Location --location Location Services access
πŸ–₯️ Screen Recording --screen-recording Screen capture permissions
β™Ώ Accessibility --accessibility Accessibility API access
πŸ’Ύ Full Disk Access --full-disk-access Complete file system access
⌨️ Input Monitoring --input-monitoring Keystroke and input monitoring
πŸ“Ά Bluetooth --bluetooth Bluetooth hardware access
🌐 Local Network --local-network Local network access
🎡 Media Library --media-library Apple Music and media access
πŸ—£οΈ Speech Recognition --speech-recognition Speech recognition services
πŸ–₯️ Desktop Folder --desktop-folder Desktop folder access
πŸ“„ Documents Folder --documents-folder Documents folder access
πŸ“₯ Downloads Folder --downloads-folder Downloads 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