macOS パーミッション(TCC)

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

安定したパーミッションの要件

  • 同じパス: 固定の場所からアプリを実行します(OpenClaw の場合は dist/OpenClaw.app)。
  • 同じバンドル識別子: バンドル ID を変更すると、新しいパーミッション ID が作成されます。
  • 署名されたアプリ: 署名されていない、またはアドホック署名されたビルドは、パーミッションを永続化しません。
  • 一貫した署名: 実際の Apple Development または Developer ID 証明書を使用して、再ビルド間で署名が安定するようにします。

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

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

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

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

sudo tccutil reset Accessibility bot.molt.mac
sudo tccutil reset ScreenCapture bot.molt.mac
sudo tccutil reset AppleEvents

パーミッションをテストする場合は、常に実際の証明書で署名してください。アドホックビルドは、パーミッションが重要でない迅速なローカル実行にのみ許容されます。