macOS 権限のセットアップ
Zanei が使う TCC 権限の一覧と、zanei doctor による診断・付与の流れ。
何を記録するか(設定の capture.sources)に応じて、Zanei は最大 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 で診断する
zanei doctor
現在の設定に照らして必要な権限の付与状況を診断します。不足があれば、付与手順と該当する System Settings ペインを案内し、終了コード 3 で終了します。
zanei doctor --fix
--fix は不足している権限の設定ペインを直接開きます(付与の操作自体はユーザーが行います)。
agent・スクリプト向け:--json
zanei 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 やスクリプトは出力を解析せずに権限の問題を判定できます(終了コード)。
手動で付与する場合
macOS がコマンドラインツールを一覧に登録するのは、そのツールが権限を要求した後です。まず recorder を起動します。
zanei startを実行します(すでに動いている場合はzanei stop && zanei start)。これで recorder が macOS に権限を要求します。- 該当するペインを開きます。
zaneiの行が一覧にあれば、トグルを ON にします。 zaneiの行が現れない場合のみ:+をクリックし、ファイルダイアログで Command-Shift-G(⌘⇧G)を押してwhich zaneiのパスを貼り付け、Return → Open、その行を ON にします。
| 権限 | 場所 |
|---|---|
| アクセシビリティ | Privacy & Security → Accessibility |
| 入力監視 | Privacy & Security → Input Monitoring |
| オートメーション | Privacy & Security → Automation(初回の Apple Events 送信時にダイアログでも確認されます) |
権限とコード署名
macOS の権限は実行バイナリの署名 ID に紐づきます。リリースバイナリは署名・notarize されているため、バイナリが入れ替わっても付与済みの権限は維持されます。Homebrew での配布は準備中で、現在はソースからビルドしてインストールします(下の注意参照)。
範囲
- 権限の自動付与や TCC データベースの操作は行いません(macOS が許可していません)。Zanei が行うのは検出・誘導・診断です。
start実行時に権限不足を検出した場合、記録は開始せず、終了コード 3 で不足内容を案内します。