macOS companion app

Разрешения macOS

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

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

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

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

Разрешения Accessibility для сред Node и CLI

Предпочитайте выдавать Accessibility приложению OpenClaw.app, Peekaboo.app или другому подписанному помощнику с собственным идентификатором пакета, а не обычному бинарному файлу node.

macOS TCC выдает Accessibility кодовой идентичности процесса, который он видит. Если рабочий процесс Homebrew, nvm, pnpm или npm приводит к тому, что общий исполняемый файл node получает Accessibility, любой JavaScript-пакет, запущенный через тот же исполняемый файл, может унаследовать привилегии автоматизации GUI.

Считайте запись node в System Settings широким разрешением для этой среды Node, а не разрешением для одного npm-пакета. Не выдавайте Accessibility для node, если вы не доверяете каждому скрипту и пакету, запускаемому через эту точную установку Node.

Если вы случайно выдали Accessibility для node, удалите эту запись из System Settings -> Privacy & Security -> Accessibility. Затем выдайте разрешение подписанному приложению или помощнику, который должен владеть автоматизацией UI.

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

  1. Закройте приложение.
  2. Удалите запись приложения в System Settings -> Privacy & Security.
  3. Перезапустите приложение из того же пути и выдайте разрешения заново.
  4. Если запрос все еще не появляется, сбросьте записи TCC с помощью tccutil и попробуйте снова.
  5. Некоторые разрешения снова появляются только после полного перезапуска macOS.

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

bash
sudo tccutil reset Accessibility ai.openclaw.macsudo tccutil reset ScreenCapture ai.openclaw.macsudo tccutil reset AppleEvents

Разрешения для файлов и папок (Рабочий стол/Документы/Загрузки)

macOS также может ограничивать доступ к Рабочему столу, Документам и Загрузкам для терминальных и фоновых процессов. Если чтение файлов или вывод содержимого каталогов зависает, выдайте доступ тому же контексту процесса, который выполняет файловые операции (например, Terminal/iTerm, приложению, запущенному через LaunchAgent, или SSH-процессу).

Обходной путь: переместите файлы в рабочую область OpenClaw (~/.openclaw/workspace), если хотите избежать выдачи разрешений для каждой папки.

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

См. также

Was this useful?
On this page

On this page