TCC 是 Apple macOS 系统中的一个安全机制,全称为:Transparency, Consent, and Control,中文常翻译为“透明性、同意与控制”。
TCC作用
TCC 是 macOS 用来管理隐私权限的系统框架,控制哪些 App 可以访问哪些系统资源或用户数据。
受 TCC 控制的权限包括:
1、辅助功能(Accessibility);
2、屏幕录制(Screen Recording);
3、照片库(Photos);
4、麦克风(Microphone);
5、摄像头(Camera);
6、文件与文件夹访问(Documents, Downloads, Desktop, Removable volumes, etc.);
7、通讯录、日历、提醒事项等;
工作原理
当应用首次尝试访问某个受保护的资源时,macOS 会通过 TCC 拦截并弹出授权对话框,用户可以“允许”或者“拒绝”:

TCC 会将用户的选择保存在数据库中(即使之后删除 App,它也记得)。
数据存储位置
TCC 权限记录被保存在 SQLite 数据库中:
/Library/Application Support/com.apple.TCC/TCC.db (系统级)
~/Library/Application Support/com.apple.TCC/TCC.db (用户级)
可以用命令行工具 tccutil 或 sqlite3 来查看或重置权限(不推荐直接修改数据库)。
TCC 常见问题
1、辅助功能勾选不到 App:
App 必须被“触发”一次(如调用 AXIsProcessTrusted()),系统才会识别它。
如果是通过 Xcode 运行的,需要在辅助功能中勾选 Xcode 和目标 App。
2、无法触发授权弹窗:
某些权限不会主动弹窗(如辅助功能),必须提示用户去“系统设置”中勾选。

或者,使用检测代码弹出响应提示,例如检测“辅助功能”:
// 检测“辅助功能”的代码
let options = [kAXTrustedCheckOptionPrompt.takeRetainedValue() as String: true] as CFDictionary
let isTrusted = AXIsProcessTrustedWithOptions(options)

但是,如果开启了App SandBox,则无法使用检测代码弹出提示。
NSAppleEventsUsageDescription、NSCameraUsageDescription 等 Info.plist key 也需要填写,否则系统可能不会授权(根据Xcode版本而定)。
3、修改权限无效:
权限被拒后,即使卸载重装 App,TCC 仍记得之前的选择。
需要 tccutil reset 或手动进入“系统设置”重置权限。
常用命令
1、重置某个权限(例如麦克风):
tccutil reset Microphone
2、重置某个 App 的所有权限(指定 bundle id):
tccutil reset All com.example.MyApp
总结
TCC 是 macOS 用来保护用户隐私的权限管理系统,控制 App 是否能访问敏感资源(如屏幕、麦克风、辅助功能等)。