メインコンテンツへスキップ
macOSの権限付与は壊れやすいものです。TCCは、権限付与をアプリのコード署名、バンドル識別子、ディスク上のパスに関連付けます。これらのいずれかが変わると、macOSはそのアプリを新しいものとして扱い、プロンプトを削除したり非表示にしたりする場合があります。

安定した権限の要件

  • 同じパス: アプリを固定された場所から実行します(OpenClawの場合は dist/OpenClaw.app)。
  • 同じバンドル識別子: OpenClawのバンドルIDは ai.openclaw.mac です。これを変更すると、新しい権限 ID が作成されます。
  • 署名済みアプリ: 未署名またはアドホック署名のビルドでは権限が保持されません。
  • 一貫した署名: 実際の Apple Development または Developer ID 証明書を使用し、再ビルド間で署名が安定するようにします。
アドホック署名はビルドごとに新しい ID を生成します。macOSは以前の許可を忘れ、古いエントリを消去するまでプロンプトが完全に表示されなくなることがあります。

Node と CLI ランタイムのアクセシビリティ許可

汎用の node バイナリではなく、OpenClaw.app、Peekaboo.app、または独自のバンドル識別子を持つ別の署名済みヘルパーにアクセシビリティを付与することを推奨します。 macOS TCCは、監視対象のプロセスのコード ID にアクセシビリティを付与します。Homebrew、nvm、pnpm、または npm のワークフローによって共有 node 実行ファイルにアクセシビリティが付与されると、その同じ実行ファイルを通じて起動された任意の JavaScript パッケージが GUI 自動化権限を継承する可能性があります。 システム設定の node エントリは、1つの npm パッケージへの権限ではなく、その Node ランタイムへの広範な権限として扱ってください。その正確な Node インストールを通じて起動されるすべてのスクリプトとパッケージを信頼していない限り、node にアクセシビリティを付与しないでください。 誤って node にアクセシビリティを付与した場合は、システム設定 -> プライバシーとセキュリティ -> アクセシビリティからそのエントリを削除します。その後、UI 自動化を所有すべき署名済みアプリまたはヘルパーに付与してください。

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

  1. アプリを終了します。
  2. システム設定 -> プライバシーとセキュリティでアプリのエントリを削除します。
  3. 同じパスからアプリを再起動し、権限を再付与します。
  4. それでもプロンプトが表示されない場合は、tccutil で TCC エントリをリセットして再試行します。
  5. 一部の権限は、macOSを完全に再起動した後でないと再表示されません。
リセット例(OpenClawのバンドルID ai.openclaw.mac を使用):
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)に移動します。 権限をテストしている場合は、必ず実際の証明書で署名してください。アドホックビルドが許容されるのは、権限が重要でない短時間のローカル実行のみです。

関連