コンテンツにスキップ
Tadoru
日本語
Esc
移動開く⌘Jプレビュー
このページの内容

macOS 権限のセットアップ

Tadoru が使う TCC 権限の一覧と、tadoru doctor による診断・付与の流れ。

Tadoru は画面収録を使いません。かわりに、何を記録するか(設定の capture.sources)に応じて最大 3 種類の macOS 権限(TCC)を使います。

必要な権限

権限 System Settings 上の項目 何のために使うか 関係するイベント型
アクセシビリティ Accessibility ウィンドウタイトル・フォーカス・UI 要素の取得 window.* ui.*
入力監視 Input Monitoring キー・スクロール・クリックの検知 input.* ui.click clipboard.*
オートメーション Automation(対象アプリごと) Chrome から現在の URL・タブ情報を取得 browser.navigate

2 つの重要な性質があります。

  • アプリの起動・終了・前面切替(app.*)は権限なしで記録できます。 権限を一切付与しなくても、アプリ単位の行動履歴としては機能します。
  • 権限が「必須」になるのは、それを必要とするソースを有効にしている場合だけです。 たとえば capture.sources から input を外した構成では、入力監視が未付与でも診断は ok になります。

doctor で診断する

tadoru doctor

現在の設定に照らして必要な権限の付与状況を診断します。不足があれば、付与手順と該当する System Settings ペインを案内し、終了コード 3 で終了します。

tadoru doctor --fix

--fix は不足している権限の設定ペインを直接開きます(付与の操作自体はユーザーが行います)。

agent・スクリプト向け:--json

tadoru doctor --json
{
  "ok": false,
  "capture_sources": ["app", "window", "ui", "input", "browser"],
  "permissions": {
    "accessibility":     { "status": "granted" },
    "input_monitoring":  { "status": "denied", "required_for": ["input.key", "input.scroll", "clipboard.copy", "clipboard.paste", "ui.click"] },
    "automation":        { "per_app": { "com.google.Chrome": "not_determined" } }
  },
  "missing_required": ["input_monitoring"],
  "settings_pane": "x-apple.systempreferences:com.apple.preference.security?Privacy_ListenEvent"
}

status の値は granted / denied / not_determined の 3 値です。権限不足は専用の終了コード 3 で通知されるため、agent やスクリプトは出力を解析しなくても「権限の問題である」ことを判定できます(終了コード)。

手動で付与する場合

System Settings → Privacy & Security から tadoru を有効化します。

権限 場所
アクセシビリティ Privacy & Security → Accessibility
入力監視 Privacy & Security → Input Monitoring
オートメーション Privacy & Security → Automation(初回の Apple Events 送信時にダイアログでも確認されます)

権限とコード署名

macOS の権限は「実行バイナリの署名 ID」に紐づきます。リリースバイナリは署名・notarize されており署名 ID が安定しているため、バイナリが入れ替わっても付与済みの権限は維持されます。Homebrew での配布は準備中で、現在はソースからビルドしてインストールします(下の注意参照)。

Tadoru がやらないこと

  • 権限の自動付与・TCC データベースへの直接操作はしません(macOS の設計上も不可能です)。Tadoru が行うのは検出・誘導・診断までです。
  • start 実行時に権限不足を検出した場合、記録は開始せず終了コード 3 で不足内容を案内します。中途半端な状態で黙って動き続けることはありません。

このページは役に立ちましたか?