How to Use the tccutil Command in macOS Terminal to Reset and Manage Privacy Permissions (TCC)

Modern versions of macOS (including macOS Sonoma and macOS Sequoia) enforce a strict sandboxing and privacy governance architecture known as Transparency, Consent, and Control (TCC). Designed to protect user data from rogue background processes, TCC mandates that applications explicitly request user consent before accessing hardware peripherals (cameras, microphones) or protected file system boundaries (Desktop, Documents, Photos, Full Disk Access).

However, during enterprise software rollouts, app updates, or development cycles, TCC permissions frequently become corrupted or stuck in inconsistent states. An application might crash during its initial authorisation prompt, leaving it permanently blocked from accessing the camera, or an updated binary might fail code-signing validation against historical TCC records. The native command-line utility tccutil allows system administrators and power users to flush and reset these permissions granularly without requiring a destructive operating system reinstall. This guide details how to leverage tccutil to audit and reset macOS privacy permissions.


Architectural Mechanics: The TCC Privacy Framework

The TCC subsystem maintains two discrete SQLite databases protected by Apple’s System Integrity Protection (SIP):

Database Location Scope Governed Permissions Write Restrictions
~/Library/Application Support/com.apple.TCC/TCC.db Per-User Store Camera, Microphone, Contacts, Calendars, Photos, Automation (AppleEvents). Protected by SIP; writable only by native Apple daemons and tccutil.
/Library/Application Support/com.apple.TCC/TCC.db System-Wide Store Full Disk Access (SystemPolicyAllFiles), Accessibility (SystemPolicySysAdminFiles), Screen Recording. Requires root privileges; heavily restricted even against elevated sudo users.

When an application executes, the kernel-level tccd daemon evaluates its cryptographic designated requirement (code signature) against the records in TCC.db. If an administrator resets a service via tccutil, macOS purges the corresponding database rows, forcing the application to present a fresh authorisation prompt upon its subsequent execution.


Recognised TCC Service Identifiers

The tccutil command requires exact internal programmatic service strings rather than the consumer-facing labels displayed in System Settings > Privacy & Security.

Consumer-Facing Setting Internal TCC Service Identifier Typical Operational Impact
Camera Camera Built-in FaceTime HD camera and external USB webcams.
Microphone Microphone Internal audio inputs, external audio interfaces, and headsets.
Screen Recording ScreenCapture Display capture for screen sharing (e.g., Teams, Zoom, Slack).
Accessibility Accessibility UI automation, hotkey interceptors, and window management tools.
Full Disk Access SystemPolicyAllFiles Universal access to User and System Library containers, Mail, and Time Machine.
Developer Tools SystemPolicyDeveloperFiles Running software locally that doesn’t meet system security policy.
AppleEvents (Automation) AppleEvents Inter-process communication between scripts and apps via AppleScript.
Photos Photos Direct access to the macOS Photos library database.
Calendar Calendar Access to local and Exchange/iCloud calendar events.
Reminders Reminders Read/write permissions for system Reminders and tasks.

Command Syntax and Usage Patterns

The tccutil binary provides a concise command structure:

tccutil reset <SERVICE_NAME> [BUNDLE_IDENTIFIER]
  • reset: The primary administrative verb executed by the utility.
  • <SERVICE_NAME>: The exact case-sensitive TCC identifier (e.g., Camera, Microphone). Passing All resets all user-level privacy permissions universally.
  • [BUNDLE_IDENTIFIER]: (Optional) The unique reverse-DNS identifier of a specific application (e.g., com.tinyspeck.slackmacgap). If omitted, tccutil wipes the specified permission for every installed app on the system.

Step 1: Identifying an Application’s Bundle Identifier

To avoid wiping permissions for innocent applications, always target specific apps using their official Bundle Identifier. Query an application’s internal metadata using mdls or defaults:

# Query bundle identifier for Google Chrome
mdls -name kMDItemCFBundleIdentifier /Applications/Google\ Chrome.app

# Expected output:
# kMDItemCFBundleIdentifier = "com.google.Chrome"

# Query bundle identifier for Microsoft Teams
mdls -name kMDItemCFBundleIdentifier /Applications/Microsoft\ Teams.app

# Expected output:
# kMDItemCFBundleIdentifier = "com.microsoft.teams2"

# Query bundle identifier for Zoom
mdls -name kMDItemCFBundleIdentifier /Applications/zoom.us.app

# Expected output:
# kMDItemCFBundleIdentifier = "us.zoom.xos"

Step 2: Resetting Permissions for a Specific Application

When an application fails to request permissions or its video/audio pipeline stalls, target only that application’s specific service record:

Resetting Camera Access for a Single App:

# Reset Camera permission for Google Chrome
tccutil reset Camera com.google.Chrome

# Expected output:
# Successfully reset Camera approval status for com.google.Chrome

Resetting Microphone Access for Video Conferencing:

# Reset Microphone for Microsoft Teams
tccutil reset Microphone com.microsoft.teams2

# Reset Microphone for Zoom
tccutil reset Microphone us.zoom.xos

Resetting Screen Capture Permissions:

# Reset Screen Recording for Slack
tccutil reset ScreenCapture com.tinyspeck.slackmacgap

Upon restarting the application, macOS presents a pristine system security prompt requesting camera, audio, or screen capture privileges as if the application were launched for the first time.


Step 3: Resetting System-Wide Service Categories

If an entire category of hardware inputs becomes unmanageable across multiple software clients, reset the entire subsystem:

# Reset Camera approvals across all installed applications
tccutil reset Camera

# Reset Microphone approvals across all installed applications
tccutil reset Microphone

# Reset Accessibility approvals across all installed applications
tccutil reset Accessibility

Warning Regarding tccutil reset All: Executing tccutil reset All revokes every privacy permission for every user-space application on your Mac. You will be inundated with dozens of pop-up dialogues as background utilities, cloud sync daemons, and productivity tools request permission to run.


Step 4: Inspecting TCC Permissions via Terminal

While tccutil lacks a native “list” command, administrators can read the user-level TCC SQLite database directly using read-only SQL queries in Terminal:

# Query user TCC database for active Camera and Microphone records
sqlite3 ~/Library/Application\ Support/com.apple.TCC/TCC.db \
  "SELECT service, client, auth_value, last_modified FROM access WHERE service IN ('kTCCServiceCamera', 'kTCCServiceMicrophone');"

Interpreting the auth_value column:

  • 0: Denied (Explicitly blocked by user in dialogue).
  • 2: Allowed (Explicitly approved by user in dialogue).
  • kTCCService...: The programmatic service prefix used internally by the database engine.

Troubleshooting Common tccutil Faults

Observed Issue Root Cause Diagnostic & Remediation Step
tccutil: Failed to reset service error Typo in the service name or attempting to reset a protected system-level service without elevated rights Service names are strictly case-sensitive. Verify exact identifier (e.g., ScreenCapture, not screen-recording). For system-wide stores, prefix command with sudo.
App still blocked after tccutil reset Application was actively running in memory when the command was executed TCC cache is held in process memory. Completely quit the application (Cmd + Q or killall [app_name]) before running tccutil reset, then relaunch.
Direct SQLite update fails with Error: database is locked or Operation not permitted System Integrity Protection (SIP) strictly forbids write access to TCC.db even for root Never attempt direct UPDATE or DELETE SQL queries on TCC.db. Use tccutil reset or deploy Privacy Preferences Policy Control (PPPC) profiles via an MDM.
Screen Recording toggle in System Settings remains greyed out Enterprise Mobile Device Management (MDM) profile enforcing strict restriction payload Open System Settings > Privacy & Security > Profiles. Check if an IT administrative profile (Jamf, Intune, or Kandji) has locked down screen recording permissions.

Operational Governance and Best Practices

  • Target Bundle IDs in Support Scripts: When preparing automated self-help scripts for corporate helpdesks, never run naked tccutil reset Microphone. Always bind the command strictly to the failing enterprise app (e.g., tccutil reset Microphone com.cisco.webexmeetingsapp).
  • Deploy PPPC Payloads for Enterprise Apps: In managed enterprise fleets, avoid forcing users to manually click prompts. Pre-approve camera, screen capture, and accessibility access using Apple Privacy Preferences Policy Control (PPPC) configuration profiles deployed via your MDM.
  • Verify Code Signing After Binary Updates: If an in-house enterprise app constantly loses its TCC permissions across version updates, verify that the application binary is signed with a stable Developer ID certificate (codesign -dv --verbose=4 /Applications/App.app). An inconsistent code signing identity triggers TCC invalidation.

Get the best tech tips delivered straight to your inbox.

Join thousands of readers mastering Apple, Google, Microsoft, and Linux.