Разрешения macOS (TCC)

Разрешения macOS хрупкие. TCC связывает предоставление разрешения с подписью кода приложения, идентификатором пакета и путем на диске. Если что-то из этого изменяется, macOS рассматривает приложение как новое и может отбросить или скрыть запросы.

Требования для стабильных разрешений

  • Тот же путь: запускайте приложение из фиксированного местоположения (для OpenClaw — dist/OpenClaw.app).
  • Тот же идентификатор пакета: изменение идентификатора пакета создает новую идентификацию разрешений.
  • Подписанное приложение: неподписанные или подписанные ad-hoc сборки не сохраняют разрешения.
  • Последовательная подпись: используйте настоящий сертификат Apple Development или Developer ID, чтобы подпись оставалась стабильной между пересборками.

Подписи ad-hoc генерируют новую идентичность при каждой сборке. macOS забудет предыдущие предоставления, и запросы могут полностью исчезнуть, пока устаревшие записи не будут очищены.

Контрольный список восстановления при исчезновении запросов

  1. Выйдите из приложения.
  2. Удалите запись приложения в Системных настройках → Конфиденциальность и безопасность.
  3. Перезапустите приложение с того же пути и снова предоставьте разрешения.
  4. Если запрос все еще не появляется, сбросьте записи TCC с помощью tccutil и попробуйте снова.
  5. Некоторые разрешения появляются снова только после полной перезагрузки macOS.

Примеры сброса (замените идентификатор пакета по мере необходимости):

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

Если вы тестируете разрешения, всегда подписывайте настоящим сертификатом. Сборки ad-hoc приемлемы только для быстрых локальных запусков, где разрешения не имеют значения.