macOS の権限(TCC)¶
macOS の権限付与は脆弱です。 TCCは、 アプリのコード署名、バンドル識別子、およびオンディスクパスに権限付与を付与します。 これらの変更があった場合、 macOS はアプリを新しいものとして扱い、プロンプトをドロップまたは非表示にすることがあります。
安定した権限のための要件¶
- 同一パス: アプリを固定の場所から実行します(OpenClaw の場合は
dist/OpenClaw.app)。 - 同一バンドル識別子: バンドル ID を変更すると、新しい権限アイデンティティが作成されます。
- 署名されたアプリ: 未署名またはアドホック署名のビルドでは、権限は永続化されません。
- 一貫した署名: 実際の Apple Development または Developer ID 証明書を使用し、再ビルド間で署名が安定するようにします。
アドホック署名はビルドごとに新しいアイデンティティを生成します。 macOSは以前の 助成金を忘れてしまい、古いエントリがクリアされるまでプロンプトは完全に消える可能性があります。
プロンプトが消えた場合の復旧チェックリスト¶
- アプリを終了します。
- システム設定 -> プライバシーとセキュリティ でアプリのエントリを削除します。
- 同一パスからアプリを再起動し、権限を再付与します。
- それでもプロンプトが表示されない場合は、
tccutilで TCC エントリをリセットし、再試行します。 - 一部の権限は、macOS を完全に再起動した後でのみ再表示されます。
リセットの例(必要に応じてバンドル ID を置き換えてください):
sudo tccutil reset Accessibility bot.molt.mac
sudo tccutil reset ScreenCapture bot.molt.mac
sudo tccutil reset AppleEvents
ファイルおよびフォルダの権限(デスクトップ/書類/ダウンロード)¶
macOSは、端末/バックグラウンドプロセス用のデスクトップ、ドキュメント、およびダウンロードをゲートします。 ファイルが読み込まれたり、ディレクトリ一覧がハングしたりする場合、ファイル操作を実行する同じプロセスコンテキスト(端末/iTermなど)へのアクセスを許可します。 LaunchAgentが起動したアプリ、またはSSHプロセス)。
回避策: フォルダごとの付与を避けたい場合は、ファイルを OpenClaw のワークスペース(~/.openclaw/workspace)に移動します。
権限をテストする場合は、常に実際の証明書で署名してください。アドホックビルドは、権限が重要でない短時間のローカル実行にのみ許容されます。 アドホック ビルドは、パーミッションが重要でないクイックローカルランに対してのみ受け入れられます。