tccd
別名: プライバシーのアクセス権
結論
tccdは、プライバシーのアクセス権を管理するmacOSのプロセスです。カメラ、マイク、画面収録、ファイルとフォルダ、連絡先、フルディスクアクセス、アクセシビリティを、どのアプリが使ってよいかを管理します。TCCはTransparency, Consent and Control(透明性、同意、管理)の略で、“アクセスを求めています”という確認メッセージはすべてこの仕組みから出ています。
アプリが保護されたものにアクセスしようとするたびに、macOSはtccdに許可されているかどうかを問い合わせます。tccdは回答をデータベースに保存し、まだ回答がなければアクセス権の確認メッセージを表示します。システム設定 → プライバシーとセキュリティでオン・オフを切り替えているのは、tccdのデータベースです。
インスタンスは2つあります。1つは自分のアカウント用、もう1つはシステム用です。どちらも通常はアイドル状態で、負荷はほとんどありません。
tccdのCPU使用率が高い理由
アプリがアクセス権を何度も要求しています。多くは、拒否されたのに試し続けているか、アップデートされて署名がtccdの許可したものと一致しなくなったためです。よくあるのは画面収録とアクセシビリティのアクセス権です。
まれに、移行や中断されたアップデートのあとにアクセス権のデータベースが正常でない状態になり、tccdが読み込みに失敗し続けることもあります。
直す方法
システム設定 → プライバシーとセキュリティを開き、アプリが必要とするアクセス権を探して、スイッチをオフにしてからオンに戻します。または、マイナスボタンでリストからアプリを削除し、もう一度要求させます。
1つのアクセス権をすべてのアプリについてリセットするには、ターミナルでtccutil resetのあとにサービス名を付けて実行します。たとえばtccutil reset ScreenCaptureです。アプリは次に必要になったときに、改めて要求します。
tccdに問い合わせ続けているアプリを確認する方法
tccdが忙しいときに知るべきなのは、誰が何を求めているかです。tccd自身のログにその両方が書かれています。
- アクティビティモニタを開いて“表示” → “すべてのプロセス”を選び、検索フィールドに
tccdと入力します。“ユーザ”の列には、システムのインスタンスならroot、自分のものなら自分の名前が表示されます。どちらがCPUを使っているかを確認します。 - ターミナルを開いて
log stream --predicate 'process == "tccd" AND eventMessage CONTAINS "AUTHREQ"'を実行します。止めるにはControl+Cを押します。 - 繰り返し出てくる行を読みます。
service=はkTCCServiceScreenCaptureのようなアクセス権の種類を、identifier=はcom.example.appのようなアプリを示しています。 - 結果の行の
authValue=を見ます。0は拒否、2は許可を意味します。0を何度も受け取っているアプリが、ループの原因です。 - そのアプリのそのアクセス権だけをリセットします。サービス名のうち
kTCCServiceより後ろの部分がtccutilに渡す値なので、tccutil reset ScreenCapture com.example.appを実行すると、そのアプリだけの回答が消去されます。tccutil reset All com.example.appでは、そのアプリのすべてのアクセス権が消去されます。 - アプリをもう一度開いて確認メッセージに答えるか、システム設定 → プライバシーとセキュリティでアクセス権を与えます。
tccdの普通の状態と気にすべき状態
普通: ゼロ近くで、アプリが保護されたものを要求するたびに少しだけ跳ね上がる。アプリは頻繁に要求しますが、ほとんどの回答はデータベースから一瞬で返されます。
確認する価値あり: tccdが何分もCPUのリストに居続ける、または許可したはずのアクセス権を何度も求められる。よくある原因:
- アップデートまたは再署名されたアプリ。tccdが、許可したアプリと同じものだと認識しなくなります。
- 拒否したのに要求をやめないアプリ。
- 移行の際にきちんと引き継がれなかったアクセス権のデータベース。
許可したアクセス権が機能しない理由
アクセス権の中には、アプリの起動時にしか反映されないものがあります。よくあるのは“画面収録”と“フルディスクアクセス”で、オンにするとmacOSがアプリを終了して開き直すよう提案します。“あとで行う”を選ぶと、自分でアプリを終了するまで、アクセス権がないかのように動き続けます。
スイッチがオンで、アプリを再起動してもまだ機能が使えないなら、スイッチをオフにし、マイナスボタンでリストからアプリを削除して、もう一度追加します。これで、tccdのデータベースの古い記録が、現在のアプリに合った記録に置き換わります。
よくある質問
Macのtccdとは?
カメラ、マイク、画面収録、ファイルへのアクセスなど、プライバシーのアクセス権を管理するmacOSのプロセスです。アクセス権の確認メッセージを表示し、その回答を記憶します。
tccdのCPU使用率が高いのはなぜ?
たいていは、アプリがアクセス権を繰り返し要求しているからで、多くはアップデートで署名が変わったあとに起こります。“プライバシーとセキュリティ”でアクセス権を与え直すか、tccutilでリセットすれば、ループは止まります。
tccutilでプライバシーのアクセス権をリセットしても大丈夫?
はい。そのアクセス権について保存された回答を消去するだけなので、アプリがもう一度要求してきます。ほかには何も削除しませんが、そのアクセス権が必要なアプリは改めて許可する必要があります。
tccdを無効にできる?
いいえ。macOSの一部で、システム整合性保護によって守られています。tccdがなければ、カメラ、マイク、ファイルへのアクセスをアプリに許可することも拒否することもできません。確認メッセージを止めるには、それに答えるか、システム設定 → プライバシーとセキュリティでアプリのアクセス権を変更します。
MacのTCCデータベースはどこにある?
自分のアクセス権は~/Library/Application Support/com.apple.TCC/TCC.dbにあり、システム全体のものは/Libraryの下の同じパスにあります。どちらのファイルもmacOSが保護しているので、直接編集せず、システム設定かtccutilでアクセス権を変更します。
関連項目
アクティビティモニタより優れたものをお探しなら、Mac向けアクティビティモニタの代替アプリのおすすめをご覧ください。用語集のすべての用語も見られます。