macOS コンパニオンアプリ

macOS 権限

macOSの権限許可は壊れやすいものです。TCCは、権限の許可をアプリのコード署名、バンドル識別子、およびディスク上のパスに関連付けます。これらのいずれかが変更されると、macOSはそのアプリを新規のものとして扱い、許可を削除したりプロンプトを非表示にしたりする可能性があります。

安定した権限のための要件

  • 同じパス: アプリを固定された場所から実行する(OpenClawの場合、dist/OpenClaw.app)。
  • 同じバンドル識別子: バンドルIDを変更すると、新しい権限アイデンティティが作成されます。
  • 署名済みアプリ: 未署名またはアドホック署名されたビルドは権限を保持しません。
  • 一貫した署名: 実際のApple開発者証明書またはDeveloper ID証明書を使用し、再ビルド後も署名が安定して維持されるようにします。

アドホック署名はビルドごとに新しいアイデンティティを生成します。macOSは以前の許可を忘れ、古いエントリがクリアされるまでプロンプトが完全に表示されなくなる可能性があります。

プロンプトが消えた場合の回復チェックリスト

  1. アプリを終了します。
  2. システム設定 -> プライバシーとセキュリティ からアプリのエントリを削除します。
  3. 同じパスからアプリを再起動し、権限を再付与します。
  4. プロンプトがまだ表示されない場合は、tccutil でTCCエントリをリセットして再試行します。
  5. 一部の権限は、macOSを完全に再起動した後にのみ再表示されます。

リセットの例(必要に応じてバンドルIDを置き換えてください):

sudo tccutil reset Accessibility ai.openclaw.mac
sudo tccutil reset ScreenCapture ai.openclaw.mac
sudo tccutil reset AppleEvents

ファイルとフォルダの権限(デスクトップ/書類/ダウンロード)

macOSは、ターミナルやバックグラウンドプロセスに対しても、デスクトップ、書類、ダウンロードへのアクセスを制限する場合があります。ファイルの読み取りやディレクトリ一覧の取得がハングする場合は、ファイル操作を実行する同じプロセスコンテキスト(例: Terminal/iTerm、LaunchAgentで起動したアプリ、SSHプロセス)にアクセス権を付与してください。回避策: フォルダごとの許可を避けたい場合は、ファイルをOpenClawワークスペース(~/.openclaw/workspace)に移動します。権限をテストする場合は、常に実際の証明書で署名してください。アドホックビルドは、権限が重要でない簡単なローカル実行でのみ許容されます。

macOS ロギングリモートコントロール