Разрешения macOS (TCC)
Разрешения macOS хрупкие. TCC связывает предоставление разрешения с подписью кода приложения, идентификатором пакета и путем на диске. Если что-то из этого изменяется, macOS рассматривает приложение как новое и может отбросить или скрыть запросы.
Требования для стабильных разрешений
- Тот же путь: запускайте приложение из фиксированного местоположения (для OpenClaw — dist/OpenClaw.app).
- Тот же идентификатор пакета: изменение идентификатора пакета создает новую идентификацию разрешений.
- Подписанное приложение: неподписанные или подписанные ad-hoc сборки не сохраняют разрешения.
- Последовательная подпись: используйте настоящий сертификат Apple Development или Developer ID, чтобы подпись оставалась стабильной между пересборками.
Подписи ad-hoc генерируют новую идентичность при каждой сборке. macOS забудет предыдущие предоставления, и запросы могут полностью исчезнуть, пока устаревшие записи не будут очищены.
Контрольный список восстановления при исчезновении запросов
- Выйдите из приложения.
- Удалите запись приложения в Системных настройках → Конфиденциальность и безопасность.
- Перезапустите приложение с того же пути и снова предоставьте разрешения.
- Если запрос все еще не появляется, сбросьте записи TCC с помощью tccutil и попробуйте снова.
- Некоторые разрешения появляются снова только после полной перезагрузки macOS.
Примеры сброса (замените идентификатор пакета по мере необходимости):
sudo tccutil reset Accessibility bot.molt.mac
sudo tccutil reset ScreenCapture bot.molt.mac
sudo tccutil reset AppleEvents
Если вы тестируете разрешения, всегда подписывайте настоящим сертификатом. Сборки ad-hoc приемлемы только для быстрых локальных запусков, где разрешения не имеют значения.