Требования для стабильных разрешений
- Тот же путь: запускайте приложение из фиксированного расположения (для OpenClaw,
dist/OpenClaw.app). - Тот же идентификатор пакета: изменение ID пакета создает новую идентичность разрешений.
- Подписанное приложение: неподписанные сборки или сборки с ad-hoc-подписью не сохраняют разрешения.
- Согласованная подпись: используйте настоящий сертификат Apple Development или Developer ID, чтобы подпись оставалась стабильной между пересборками.
Разрешения 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.
Контрольный список восстановления, когда запросы исчезают
- Закройте приложение.
- Удалите запись приложения в System Settings -> Privacy & Security.
- Перезапустите приложение из того же пути и выдайте разрешения заново.
- Если запрос все еще не появляется, сбросьте записи TCC с помощью
tccutilи попробуйте снова. - Некоторые разрешения снова появляются только после полного перезапуска macOS.
Разрешения для файлов и папок (Рабочий стол/Документы/Загрузки)
macOS также может ограничивать доступ к Рабочему столу, Документам и Загрузкам для терминальных и фоновых процессов. Если чтение файлов или вывод содержимого каталогов зависает, выдайте доступ тому же контексту процесса, который выполняет файловые операции (например, Terminal/iTerm, приложению, запущенному через LaunchAgent, или SSH-процессу). Обходной путь: переместите файлы в рабочую область OpenClaw (~/.openclaw/workspace), если хотите избежать выдачи разрешений для каждой папки.
Если вы тестируете разрешения, всегда подписывайте настоящим сертификатом. Ad-hoc
сборки допустимы только для быстрых локальных запусков, где разрешения не имеют значения.