macOS companion app

Разрешения macOS

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

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

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

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

Разрешения на универсальный доступ для сред выполнения Node и CLI

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

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

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

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

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

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

Примеры сброса (с использованием идентификатора пакета OpenClaw — ai.openclaw.mac):

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

Разрешения для файлов и папок (Desktop/Documents/Downloads)

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

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

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

Связанные материалы

Was this useful?
On this page

On this page