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 у System Settings широким дозволом для цього середовища виконання 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

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

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

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

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

Пов’язані матеріали

Was this useful?
On this page

On this page