Підтвердження виконання
Підтвердження виконання — це захисний механізм companion app / хоста вузла для того, щоб дозволити агенту в пісочниці запускати команди на реальному хості (gateway або node). Думайте про це як про захисне блокування:
команди дозволяються лише тоді, коли політика + список дозволених дій + (необов’язкове) підтвердження користувача збігаються.
Підтвердження виконання діють додатково до політики інструментів і шлюзу підвищених прав (якщо тільки для elevated не встановлено full, що пропускає підтвердження).
Ефективна політика — це суворіша з tools.exec.* і типових налаштувань підтверджень; якщо поле підтверджень пропущене, використовується значення tools.exec.
Виконання на хості також використовує локальний стан підтверджень на цій машині. Локальне для хоста
ask: "always" у ~/.openclaw/exec-approvals.json і далі показуватиме запити, навіть якщо
сеанс або типові налаштування конфігурації вимагають ask: "on-miss".
Використовуйте openclaw approvals get, openclaw approvals get --gateway або
openclaw approvals get --node <id|name|ip>, щоб переглянути запитану політику,
джерела політики хоста та ефективний результат.
Для локальної машини openclaw exec-policy show показує той самий об’єднаний вигляд, а
openclaw exec-policy set|preset може синхронізувати запитану локальну політику з
локальним файлом підтверджень хоста за один крок. Коли локальна область видимості запитує host=node,
openclaw exec-policy show під час виконання повідомляє про цю область як таку, що керується вузлом, замість того
щоб удавати, ніби локальний файл підтверджень є ефективним джерелом істини.
Якщо UI companion app недоступний, будь-який запит, що потребує підтвердження,
обробляється через резервну поведінку ask (типово: deny).
Власні клієнти підтвердження в чаті також можуть показувати специфічні для каналу елементи керування в
повідомленні про очікуване підтвердження. Наприклад, Matrix може додавати швидкі реакції до
запиту на підтвердження (✅ дозволити один раз, ❌ заборонити та ♾️ дозволити завжди, якщо доступно),
при цьому залишаючи команди /approve ... у повідомленні як резервний варіант.
Де це застосовується
Підтвердження виконання примусово застосовуються локально на хості виконання:- хост gateway → процес
openclawна машині gateway - хост node → runner вузла (companion app для macOS або headless-хост вузла)
- Виклики, автентифіковані через Gateway, вважаються довіреними операторами для цього Gateway.
- Спарені вузли розширюють цю можливість довіреного оператора на хост вузла.
- Підтвердження виконання зменшують ризик випадкового виконання, але не є межею автентифікації на рівні користувача.
- Підтверджені запуски на хості вузла прив’язують канонічний контекст виконання: канонічний cwd, точний argv, прив’язку env, коли вона присутня, і зафіксований шлях до виконуваного файла, коли це застосовно.
- Для shell-скриптів і прямого виклику файлів через інтерпретатор/середовище виконання OpenClaw також намагається прив’язати один конкретний локальний файловий операнд. Якщо цей прив’язаний файл зміниться після підтвердження, але до виконання, запуск буде заборонено замість виконання зміненого вмісту.
- Ця прив’язка файла навмисно є механізмом best-effort, а не повною семантичною моделлю для кожного шляху завантаження інтерпретатора/середовища виконання. Якщо режим підтвердження не може визначити рівно один конкретний локальний файл для прив’язки, він відмовляється створювати запуск на основі підтвердження, а не удає повне покриття.
- сервіс хоста вузла пересилає
system.runдо застосунку macOS через локальний IPC. - застосунок macOS примусово застосовує підтвердження + виконує команду в контексті UI.
Налаштування та зберігання
Підтвердження зберігаються в локальному JSON-файлі на хості виконання:~/.openclaw/exec-approvals.json
Приклад схеми:
Режим “YOLO” без підтвердження
Якщо ви хочете, щоб виконання на хості працювало без запитів на підтвердження, потрібно відкрити обидва рівні політики:- запитана політика виконання в конфігурації OpenClaw (
tools.exec.*) - локальна політика підтверджень хоста в
~/.openclaw/exec-approvals.json
tools.exec.security:fullнаgateway/nodetools.exec.ask:off- хост
askFallback:full
tools.exec.host=autoвибирає, де виконується exec: у пісочниці, якщо вона доступна, інакше на gateway.- YOLO вибирає, як підтверджується виконання на хості:
security=fullплюсask=off. - У режимі YOLO OpenClaw не додає окремий евристичний шлюз підтвердження для обфускації команд поверх налаштованої політики виконання на хості.
autoне робить маршрутизацію через gateway безкоштовним способом обходу із сеансу в пісочниці. Запитhost=nodeна рівні окремого виклику дозволений ізauto, аhost=gatewayдозволений ізautoлише тоді, коли активне середовище виконання в пісочниці відсутнє. Якщо вам потрібне стабільне нетипове значення замість auto, установітьtools.exec.hostабо явно використовуйте/exec host=....
allowlist / on-miss
або deny.
Постійне налаштування “ніколи не запитувати” для хоста gateway:
- локальні
tools.exec.host/security/ask - локальні типові значення
~/.openclaw/exec-approvals.json
openclaw approvals set --gateway або
openclaw approvals set --node <id|name|ip>.
Для хоста вузла застосуйте той самий файл підтверджень на цьому вузлі:
openclaw exec-policyне синхронізує підтвердження вузлаopenclaw exec-policy set --host nodeвідхиляється- підтвердження виконання вузла отримуються з вузла під час виконання, тож оновлення, націлені на вузол, потрібно робити через
openclaw approvals --node ...
/exec security=full ask=offзмінює лише поточний сеанс./elevated full— це аварійний ярлик, який також пропускає підтвердження виконання для цього сеансу.
Параметри політики
Security (exec.security)
- deny: блокувати всі запити на виконання на хості.
- allowlist: дозволяти лише команди зі списку дозволених дій.
- full: дозволяти все (еквівалент elevated).
Ask (exec.ask)
- off: ніколи не показувати запит.
- on-miss: показувати запит лише тоді, коли список дозволених дій не збігається.
- always: показувати запит для кожної команди.
- тривала довіра
allow-alwaysне пригнічує запити, коли ефективний режим ask —always
Ask fallback (askFallback)
Якщо потрібен запит, але UI недосяжний, резервна поведінка визначає результат:
- deny: блокувати.
- allowlist: дозволяти лише за збігу зі списком дозволених дій.
- full: дозволяти.
Посилення inline eval інтерпретаторів (tools.exec.strictInlineEval)
Коли tools.exec.strictInlineEval=true, OpenClaw розглядає форми inline eval коду як такі, що потребують лише підтвердження, навіть якщо сам двійковий файл інтерпретатора є у списку дозволених.
Приклади:
python -cnode -e,node --eval,node -pruby -eperl -e,perl -Ephp -rlua -eosascript -e
- ці команди все одно потребують явного підтвердження;
allow-alwaysне зберігає для них нові записи списку дозволених автоматично.
Список дозволених дій (для кожного агента)
Списки дозволених дій — окремі для кожного агента. Якщо існує кілька агентів, перемкніть агента, якого редагуєте, у застосунку macOS. Шаблони — це нечутливі до регістру glob-збіги. Шаблони мають вказувати на шляхи до двійкових файлів (записи лише з базовою назвою ігноруються). Застарілі записиagents.default під час завантаження мігрують до agents.main.
Ланцюжки shell-команд на кшталт echo ok && pwd усе одно вимагають, щоб кожен сегмент верхнього рівня відповідав правилам списку дозволених дій.
Приклади:
~/Projects/**/bin/peekaboo~/.local/bin/*/opt/homebrew/bin/rg
- id стабільний UUID, що використовується для ідентичності в UI (необов’язково)
- last used часову мітку
- last used command
- last resolved path
Автодозвіл для CLI Skills
Коли ввімкнено Автодозвіл для CLI Skills, виконувані файли, на які посилаються відомі Skills, вважаються такими, що є у списку дозволених дій на вузлах (вузол macOS або headless-хост вузла). Для цього використовуєтьсяskills.bins через Gateway RPC, щоб отримати список двійкових файлів Skills. Вимкніть це, якщо вам потрібні суворі ручні списки дозволених дій.
Важливі примітки щодо довіри:
- Це неявний зручний список дозволених дій, окремий від ручних записів списку дозволених шляхів.
- Він призначений для довірених операторських середовищ, де Gateway і вузол перебувають у межах однієї моделі довіри.
- Якщо вам потрібна сувора явна довіра, залиште
autoAllowSkills: falseі використовуйте лише ручні записи списку дозволених шляхів.
Safe bins (лише stdin)
tools.exec.safeBins визначає невеликий список двійкових файлів лише для stdin (наприклад, cut),
які можуть працювати в режимі allowlist без явних записів у списку дозволених дій. Safe bins відхиляють
позиційні файлові аргументи та токени, схожі на шляхи, тож вони можуть працювати лише з вхідним потоком.
Сприймайте це як вузький швидкий шлях для потокових фільтрів, а не як загальний список довіри.
Не додавайте двійкові файли інтерпретаторів або середовищ виконання (наприклад, python3, node, ruby, bash, sh, zsh) до safeBins.
Якщо команда за своєю природою може виконувати eval коду, запускати підкоманди або читати файли, надавайте перевагу явним записам у списку дозволених дій і залишайте запити на підтвердження ввімкненими.
Користувацькі safe bins мають визначати явний профіль у tools.exec.safeBinProfiles.<bin>.
Перевірка є детермінованою лише за формою argv (без перевірок існування у файловій системі хоста), що
запобігає поведінці oracle щодо існування файлів через відмінності allow/deny.
Опції, орієнтовані на файли, заборонені для типових safe bins (наприклад, sort -o, sort --output,
sort --files0-from, sort --compress-program, sort --random-source,
sort --temporary-directory/-T, wc --files0-from, jq -f/--from-file,
grep -f/--file).
Safe bins також примусово застосовують явну політику прапорців для кожного двійкового файла для опцій, які порушують
поведінку лише через stdin (наприклад, sort -o/--output/--compress-program і рекурсивні прапорці grep).
Довгі опції в режимі safe-bin перевіряються за fail-closed принципом: невідомі прапорці та неоднозначні
скорочення відхиляються.
Заборонені прапорці за профілем safe-bin:
grep:--dereference-recursive,--directories,--exclude-from,--file,--recursive,-R,-d,-f,-rjq:--argfile,--from-file,--library-path,--rawfile,--slurpfile,-L,-fsort:--compress-program,--files0-from,--output,--random-source,--temporary-directory,-T,-owc:--files0-from
$VARS) для сегментів лише зі stdin, тож шаблони на кшталт * або $HOME/... не можуть
використовуватися для прихованого читання файлів.
Safe bins також мають визначатися з довірених каталогів двійкових файлів (системні типові каталоги плюс необов’язкові
tools.exec.safeBinTrustedDirs). Записи PATH ніколи не вважаються довіреними автоматично.
Типові довірені каталоги safe-bin навмисно мінімальні: /bin, /usr/bin.
Якщо ваш виконуваний файл safe-bin розташований у шляхах package manager або користувача (наприклад,
/opt/homebrew/bin, /usr/local/bin, /opt/local/bin, /snap/bin), додайте їх явно
до tools.exec.safeBinTrustedDirs.
Ланцюжки shell-команд і перенаправлення не дозволяються автоматично в режимі allowlist.
Ланцюжки shell-команд (&&, ||, ;) дозволені, якщо кожен сегмент верхнього рівня відповідає списку дозволених дій
(включно з safe bins або автодозволом для Skills). Перенаправлення в режимі allowlist, як і раніше, не підтримуються.
Підстановка команд ($() / зворотні лапки) відхиляється під час розбору allowlist, зокрема всередині
подвійних лапок; використовуйте одинарні лапки, якщо вам потрібен буквальний текст $().
У підтвердженнях companion app для macOS сирий текст shell, що містить керівні або розгортувальні конструкції shell
(&&, ||, ;, |, `, $, <, >, (, )), розглядається як незбіг зі списком дозволених дій, якщо
сам двійковий файл shell не є у списку дозволених.
Для обгорток shell (bash|sh|zsh ... -c/-lc) перевизначення env у межах запиту зводяться до
невеликого явного списку дозволених значень (TERM, LANG, LC_*, COLORTERM, NO_COLOR, FORCE_COLOR).
Для рішень allow-always у режимі allowlist відомі обгортки диспетчеризації
(env, nice, nohup, stdbuf, timeout) зберігають внутрішні шляхи до виконуваних файлів, а не шляхи
до самих обгорток. Shell-мультиплексори (busybox, toybox) також розгортаються для shell-аплетів (sh, ash,
тощо), тож зберігаються внутрішні виконувані файли, а не двійкові файли мультиплексора. Якщо обгортку або
мультиплексор не можна безпечно розгорнути, запис списку дозволених дій автоматично не зберігається.
Якщо ви додаєте інтерпретатори, як-от python3 або node, до списку дозволених, надавайте перевагу tools.exec.strictInlineEval=true, щоб inline eval і далі вимагав явного підтвердження. У суворому режимі allow-always усе ще може зберігати нешкідливі виклики інтерпретатора/скрипта, але носії inline-eval автоматично не зберігаються.
Типові safe bins:
cut, uniq, head, tail, tr, wc
grep і sort не входять до типового списку. Якщо ви явно їх увімкнете, зберігайте явні записи списку дозволених дій для
їхніх сценаріїв, що не обмежуються stdin.
Для grep у режимі safe-bin передавайте шаблон через -e/--regexp; позиційна форма шаблону
відхиляється, щоб файлові операнди не можна було приховати як неоднозначні позиційні аргументи.
Safe bins у порівнянні зі списком дозволених дій
| Тема | tools.exec.safeBins | Список дозволених дій (exec-approvals.json) |
|---|---|---|
| Мета | Автодозвіл для вузьких stdin-фільтрів | Явна довіра до конкретних виконуваних файлів |
| Тип збігу | Назва виконуваного файла + політика argv safe-bin | Glob-шаблон шляху до визначеного виконуваного файла |
| Область аргументів | Обмежена профілем safe-bin і правилами буквальних токенів | Лише збіг шляху; відповідальність за аргументи інакше на вас |
| Типові приклади | head, tail, tr, wc | jq, python3, node, ffmpeg, користувацькі CLI |
| Найкраще застосування | Низькоризикові текстові перетворення в конвеєрах | Будь-який інструмент із ширшою поведінкою або побічними ефектами |
safeBinsнадходить із конфігурації (tools.exec.safeBinsабоagents.list[].tools.exec.safeBinsдля окремого агента).safeBinTrustedDirsнадходить із конфігурації (tools.exec.safeBinTrustedDirsабоagents.list[].tools.exec.safeBinTrustedDirsдля окремого агента).safeBinProfilesнадходить із конфігурації (tools.exec.safeBinProfilesабоagents.list[].tools.exec.safeBinProfilesдля окремого агента). Ключі профілю для окремого агента мають пріоритет над глобальними ключами.- записи allowlist зберігаються в локальному для хоста
~/.openclaw/exec-approvals.jsonуagents.<id>.allowlist(або через Control UI /openclaw approvals allowlist ...). openclaw security auditпоказує попередженняtools.exec.safe_bins_interpreter_unprofiled, коли двійкові файли інтерпретаторів/середовищ виконання з’являються вsafeBinsбез явних профілів.openclaw doctor --fixможе створити заготовки відсутніх записівsafeBinProfiles.<bin>як{}(після цього перегляньте й посильте їх). Для двійкових файлів інтерпретаторів/середовищ виконання заготовки автоматично не створюються.
jq до safeBins, OpenClaw усе одно відхиляє вбудовану команду env у режимі safe-bin,
щоб jq -n env не міг вивантажити середовище процесу хоста без явного шляху allowlist
або запиту на підтвердження.
Редагування в Control UI
Використовуйте картку Control UI → Nodes → Exec approvals, щоб редагувати типові налаштування, перевизначення для окремих агентів і списки дозволених дій. Виберіть область видимості (Defaults або агент), змініть політику, додайте/видаліть шаблони списку дозволених дій, а потім натисніть Save. UI показує метадані last used для кожного шаблону, щоб вам було легше підтримувати список у впорядкованому стані. Селектор цілі вибирає Gateway (локальні підтвердження) або Node. Вузли мають оголошуватиsystem.execApprovals.get/set (застосунок macOS або headless-хост вузла).
Якщо вузол ще не оголошує підтвердження виконання, відредагуйте його локальний
~/.openclaw/exec-approvals.json безпосередньо.
CLI: openclaw approvals підтримує редагування gateway або вузла (див. CLI підтверджень).
Потік підтвердження
Коли потрібен запит на підтвердження, gateway транслюєexec.approval.requested клієнтам операторів.
Control UI і застосунок macOS обробляють його через exec.approval.resolve, після чого gateway пересилає
підтверджений запит хосту вузла.
Для host=node запити на підтвердження містять канонічне корисне навантаження systemRunPlan. Gateway використовує
цей план як авторитетний контекст команди/cwd/сеансу під час пересилання підтверджених запитів system.run.
Це важливо для асинхронної затримки підтвердження:
- шлях виконання вузла готує один канонічний план наперед
- запис підтвердження зберігає цей план і його метадані прив’язки
- після підтвердження остаточний пересланий виклик
system.runповторно використовує збережений план замість довіри до пізніших змін викликача - якщо викликач змінює
command,rawCommand,cwd,agentIdабоsessionKeyпісля створення запиту на підтвердження, gateway відхиляє пересланий запуск як невідповідність підтвердженню
Команди інтерпретатора/середовища виконання
Запуски інтерпретатора/середовища виконання на основі підтвердження навмисно є консервативними:- Точний контекст argv/cwd/env завжди прив’язується.
- Форми прямого shell-скрипта і прямого файла середовища виконання прив’язуються в режимі best-effort до одного конкретного локального знімка файла.
- Поширені форми обгорток package manager, які все ще визначаються в один прямий локальний файл (наприклад,
pnpm exec,pnpm node,npm exec,npx), розгортаються перед прив’язкою. - Якщо OpenClaw не може визначити рівно один конкретний локальний файл для команди інтерпретатора/середовища виконання (наприклад, package scripts, форми eval, специфічні для середовища виконання ланцюжки завантажувачів або неоднозначні форми з кількома файлами), виконання на основі підтвердження забороняється замість того, щоб стверджувати семантичне покриття, якого насправді немає.
- Для таких робочих процесів надавайте перевагу пісочниці, окремій межі хоста або явному довіреному процесу allowlist/full, де оператор приймає ширшу семантику середовища виконання.
Exec finished / Exec denied). Якщо жодне рішення не надійде до завершення
часу очікування, запит вважається таким, що перевищив час очікування підтвердження, і показується як причина відмови.
Поведінка доставлення followup
Після завершення підтвердженого асинхронного exec OpenClaw надсилає followup-хідagent у той самий сеанс.
- Якщо існує дійсна зовнішня ціль доставлення (канал доставлення плюс ціль
to), доставлення followup використовує цей канал. - У потоках лише з webchat або внутрішнім сеансом без зовнішньої цілі доставлення followup залишається лише в межах сеансу (
deliver: false). - Якщо викликач явно запитує суворе зовнішнє доставлення без жодного зовнішнього каналу, що може бути визначений, запит завершується помилкою
INVALID_REQUEST. - Якщо ввімкнено
bestEffortDeliverі не вдається визначити жоден зовнішній канал, доставлення знижується до режиму лише для сеансу замість помилки.
- команду + аргументи
- cwd
- id агента
- визначений шлях до виконуваного файла
- метадані хоста + політики
- Allow once → виконати зараз
- Always allow → додати до списку дозволених дій + виконати
- Deny → заблокувати
Пересилання підтверджень до чат-каналів
Ви можете пересилати запити на підтвердження exec до будь-якого чат-каналу (включно з каналами плагінів) і підтверджувати їх за допомогою/approve. Для цього використовується звичайний конвеєр вихідного доставлення.
Конфігурація:
OC_I18N_900006
Відповідь у чаті:
OC_I18N_900007
Команда /approve обробляє як підтвердження exec, так і підтвердження плагінів. Якщо ID не збігається з жодним очікуваним підтвердженням exec, вона автоматично перевіряє підтвердження плагінів.
Пересилання підтверджень плагінів
Пересилання підтверджень плагінів використовує той самий конвеєр доставлення, що й підтвердження exec, але має власну незалежну конфігурацію вapprovals.plugin. Увімкнення або вимкнення одного не впливає на інше.
OC_I18N_900008
Форма конфігурації ідентична approvals.exec: enabled, mode, agentFilter,
sessionFilter і targets працюють так само.
Канали, що підтримують спільні інтерактивні відповіді, показують однакові кнопки підтвердження як для exec, так і для
підтверджень плагінів. Канали без спільного інтерактивного UI використовують звичайний текст із
інструкціями /approve.
Підтвердження в тому самому чаті на будь-якому каналі
Коли запит на підтвердження exec або плагіна надходить із чату, який підтримує доставлення, цей самий чат тепер за замовчуванням може підтверджувати його через/approve. Це стосується таких каналів, як Slack, Matrix і
Microsoft Teams, а також наявних потоків Web UI і terminal UI.
Цей спільний шлях текстової команди використовує звичайну модель автентифікації каналу для цієї розмови. Якщо вихідний чат
вже може надсилати команди й отримувати відповіді, запитам на підтвердження більше не потрібен
окремий власний адаптер доставлення лише для того, щоб залишатися в очікуванні.
Discord і Telegram також підтримують /approve у тому самому чаті, але ці канали все ще використовують свій
визначений список тих, хто може підтверджувати, для авторизації, навіть коли власне доставлення підтверджень вимкнено.
Для Telegram та інших власних клієнтів підтвердження, які викликають Gateway безпосередньо,
цей резервний механізм навмисно обмежено збоями типу “підтвердження не знайдено”. Реальна
відмова/помилка підтвердження exec не повторюється мовчки як підтвердження плагіна.
Власне доставлення підтверджень
Деякі канали також можуть працювати як власні клієнти підтвердження. Власні клієнти додають приватні повідомлення тим, хто може підтверджувати, fanout у вихідний чат і специфічний для каналу інтерактивний UX підтвердження поверх спільного потоку/approve у тому самому чаті.
Коли доступні власні картки/кнопки підтвердження, цей власний UI є основним
шляхом взаємодії для агента. Агент також не повинен дублювати звичайну команду чату
/approve, якщо тільки результат інструмента не вказує, що підтвердження через чат недоступні або
ручне підтвердження — це єдиний шлях, що залишився.
Загальна модель:
- політика виконання на хості й далі визначає, чи потрібне підтвердження exec
approvals.execкерує пересиланням запитів на підтвердження в інші чат-призначенняchannels.<channel>.execApprovalsкерує тим, чи цей канал виступає власним клієнтом підтвердження
- канал підтримує власне доставлення підтверджень
- тих, хто може підтверджувати, можна визначити з явних
execApprovals.approversабо з задокументованих резервних джерел цього каналу channels.<channel>.execApprovals.enabledне задано або має значення"auto"
enabled: false, щоб явно вимкнути власний клієнт підтвердження. Установіть enabled: true, щоб примусово
ввімкнути його, коли тих, хто може підтверджувати, вдається визначити. Доставлення в публічний вихідний чат і далі явно керується через
channels.<channel>.execApprovals.target.
FAQ: Чому для підтверджень exec у чаті існує дві конфігурації?
- Discord:
channels.discord.execApprovals.* - Slack:
channels.slack.execApprovals.* - Telegram:
channels.telegram.execApprovals.*
/approve у тому самому чаті та спільних кнопок підтвердження.
Спільна поведінка:
- Slack, Matrix, Microsoft Teams та подібні чати, що підтримують доставлення, використовують звичайну модель автентифікації каналу
для
/approveу тому самому чаті - коли власний клієнт підтвердження автоматично вмикається, типовою ціллю власного доставлення стають DM тим, хто може підтверджувати
- для Discord і Telegram лише визначені особи, які можуть підтверджувати, можуть підтверджувати або відхиляти
- осіб, які можуть підтверджувати в Discord, можна задати явно (
execApprovals.approvers) або вивести зcommands.ownerAllowFrom - осіб, які можуть підтверджувати в Telegram, можна задати явно (
execApprovals.approvers) або вивести з наявної конфігурації власника (allowFrom, а такожdefaultToдля direct-message, де це підтримується) - осіб, які можуть підтверджувати в Slack, можна задати явно (
execApprovals.approvers) або вивести зcommands.ownerAllowFrom - власні кнопки Slack зберігають тип id підтвердження, тож id
plugin:можуть визначати підтвердження плагінів без другого локального резервного шару Slack - власна маршрутизація DM/каналу та швидкі реакції Matrix обробляють як підтвердження exec, так і підтвердження плагінів;
авторизація плагінів і далі походить із
channels.matrix.dm.allowFrom - запитувач не обов’язково має бути особою, що може підтверджувати
- вихідний чат може підтверджувати безпосередньо через
/approve, коли цей чат уже підтримує команди та відповіді - власні кнопки підтвердження Discord маршрутизують за типом id підтвердження: id
plugin:одразу переходять до підтверджень плагінів, усе інше — до підтверджень exec - власні кнопки підтвердження Telegram дотримуються того самого обмеженого резервного переходу від exec до плагіна, що й
/approve - коли власний
targetвмикає доставлення у вихідний чат, запити на підтвердження містять текст команди - очікувані підтвердження exec типово протерміновуються через 30 хвилин
- якщо жоден UI оператора або налаштований клієнт підтвердження не може прийняти запит, запит переходить до
askFallback
target: "dm"). Ви можете переключити це на channel або both, якщо
хочете, щоб запити на підтвердження також з’являлися у вихідному чаті/темі Telegram. Для тем форуму Telegram
OpenClaw зберігає тему для запиту на підтвердження і follow-up після підтвердження.
Дивіться:
Потік IPC у macOS
OC_I18N_900009 Примітки щодо безпеки:- Режим Unix socket
0600, токен зберігається вexec-approvals.json. - Перевірка однотипного UID однорангового процесу.
- Challenge/response (nonce + HMAC token + хеш запиту) + короткий TTL.
Системні події
Життєвий цикл exec відображається як системні повідомлення:Exec running(лише якщо команда перевищує поріг сповіщення про виконання)Exec finishedExec denied
runId у цих повідомленнях для зручної кореляції.
Поведінка у разі відхиленого підтвердження
Коли асинхронне підтвердження exec відхилене, OpenClaw не дозволяє агенту повторно використовувати вивід будь-якого попереднього запуску тієї самої команди в сеансі. Причина відхилення передається з явною вказівкою, що жодного виводу команди немає, що не дозволяє агенту стверджувати, що є новий вивід, або повторювати відхилену команду зі застарілими результатами попереднього успішного запуску.Наслідки
- full має широкі можливості; за можливості надавайте перевагу спискам дозволених дій.
- ask залишає вас у циклі, водночас дозволяючи швидко підтверджувати.
- Окремі для кожного агента списки дозволених дій не дають підтвердженням одного агента потрапляти до інших.
- Підтвердження застосовуються лише до запитів host exec від авторизованих відправників. Неавторизовані відправники не можуть виконувати
/exec. /exec security=full— це зручний параметр на рівні сеансу для авторизованих операторів, який навмисно пропускає підтвердження. Щоб жорстко заборонити host exec, установіть для security підтверджень значенняdenyабо забороніть інструментexecчерез політику інструментів.
Пов’язане
- Exec — інструмент виконання shell-команд
- Пісочниця — режими пісочниці та доступ до робочого простору
- Безпека — модель безпеки та посилення захисту
- Пісочниця vs Політика інструментів vs Elevated — коли що використовувати