chore(i18n): refresh uk translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-04-10 06:20:25 +00:00
parent 7bef788277
commit 0ea17975ee

View File

@ -1,66 +1,71 @@
---
read_when:
- Налаштування підтверджень exec або списків дозволів
- Реалізація UX підтвердження exec у застосунку macOS
- Перегляд запитів на вихід із sandbox і пов’язаних наслідків
summary: Підтвердження exec, списки дозволів і запити на вихід із sandbox
title: Підтвердження exec
- Налаштування підтверджень виконання або списків дозволених дій
- Реалізація UX підтвердження виконання в застосунку для macOS
- Перегляд запитів на вихід із пісочниці та їхніх наслідків
summary: Запити на підтвердження виконання, списки дозволених дій і запити на вихід із пісочниці
title: Підтвердження виконання
x-i18n:
generated_at: "2026-04-07T18:43:49Z"
generated_at: "2026-04-10T06:17:33Z"
model: gpt-5.4
provider: openai
source_hash: 6041929185bab051ad873cc4822288cb7d6f0470e19e7ae7a16b70f76dfc2cd9
source_hash: 5f4a2e2f1f3c13a1d1926c9de0720513ea8a74d1ca571dbe74b188d8c560c14c
source_path: tools/exec-approvals.md
workflow: 15
---
# Підтвердження exec
# Підтвердження виконання
Підтвердження exec — це **захисний механізм застосунку-компаньйона / хоста вузла** для дозволу sandbox-агенту запускати
команди на реальному хості (`gateway` або `node`). Сприймайте це як запобіжне блокування:
команди дозволяються лише тоді, коли політика + список дозволів + (необов’язкове) підтвердження користувача всі погоджуються.
Підтвердження exec діють **додатково** до політики інструментів і elevated gating (якщо тільки elevated не встановлено в `full`, що пропускає підтвердження).
Ефективна політика — це **суворіша** з `tools.exec.*` і типових значень підтверджень; якщо поле підтверджень пропущене, використовується значення `tools.exec`.
Host exec також використовує локальний стан підтверджень на цій машині. Локальне для хоста
`ask: "always"` у `~/.openclaw/exec-approvals.json` продовжує запитувати навіть якщо
типові значення сесії або конфігурації вимагають `ask: "on-miss"`.
Підтвердження виконання — це **захисний механізм 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 застосунку-компаньйона **недоступний**, будь-який запит, що потребує підтвердження,
Якщо UI companion app **недоступний**, будь-який запит, що потребує підтвердження,
обробляється через **резервну поведінку ask** (типово: deny).
Власні клієнти підтвердження в чаті також можуть надавати специфічні для каналу елементи інтерфейсу в повідомленні
про очікуване підтвердження. Наприклад, Matrix може додавати швидкі реакції до
запиту на підтвердження (`✅` дозволити один раз, `❌` відхилити та `♾️` завжди дозволяти, коли доступно),
водночас залишаючи команди `/approve ...` у повідомленні як резервний варіант.
Власні клієнти підтвердження в чаті також можуть показувати специфічні для каналу елементи керування в
повідомленні про очікуване підтвердження. Наприклад, Matrix може додавати швидкі реакції до
запиту на підтвердження (`✅` дозволити один раз, `❌` заборонити та `♾️` дозволити завжди, якщо доступно),
при цьому залишаючи команди `/approve ...` у повідомленні як резервний варіант.
## Де це застосовується
Підтвердження exec застосовуються локально на хості виконання:
Підтвердження виконання примусово застосовуються локально на хості виконання:
- **gateway host** → процес `openclaw` на машині gateway
- **node host** → раннер вузла (застосунок-компаньйон macOS або headless node host)
- **хост gateway** → процес `openclaw` на машині gateway
- **хост node** → runner вузла (companion app для macOS або headless-хост вузла)
Примітка щодо моделі довіри:
- Викликачі, автентифіковані gateway, є довіреними операторами для цього Gateway.
- Виклики, автентифіковані через Gateway, вважаються довіреними операторами для цього Gateway.
- Спарені вузли розширюють цю можливість довіреного оператора на хост вузла.
- Підтвердження exec зменшують ризик випадкового виконання, але не є межею автентифікації на рівні користувача.
- Схвалені запуски на хості вузла прив’язують канонічний контекст виконання: канонічний cwd, точний argv, прив’язку env
за наявності та зафіксований шлях до виконуваного файла, де це застосовно.
- Для shell-скриптів і прямих викликів файлів інтерпретатора/середовища виконання OpenClaw також намагається прив’язати
один конкретний локальний файловий операнд. Якщо цей прив’язаний файл змінюється після підтвердження, але до виконання,
запуск відхиляється замість виконання зміненого вмісту.
- Ця прив’язка файлів навмисно є best-effort, а не повною семантичною моделлю для кожного шляху
завантажувача інтерпретатора/середовища виконання. Якщо режим підтвердження не може точно визначити один конкретний локальний
файл для прив’язки, він відмовляється створювати запуск із підтвердженням, а не вдає повне покриття.
- Підтвердження виконання зменшують ризик випадкового виконання, але не є межею автентифікації на рівні користувача.
- Підтверджені запуски на хості вузла прив’язують канонічний контекст виконання: канонічний cwd, точний argv, прив’язку env,
коли вона присутня, і зафіксований шлях до виконуваного файла, коли це застосовно.
- Для shell-скриптів і прямого виклику файлів через інтерпретатор/середовище виконання OpenClaw також намагається прив’язати
один конкретний локальний файловий операнд. Якщо цей прив’язаний файл зміниться після підтвердження, але до виконання,
запуск буде заборонено замість виконання зміненого вмісту.
- Ця прив’язка файла навмисно є механізмом best-effort, а не повною семантичною моделлю для кожного
шляху завантаження інтерпретатора/середовища виконання. Якщо режим підтвердження не може визначити рівно один конкретний локальний
файл для прив’язки, він відмовляється створювати запуск на основі підтвердження, а не удає повне покриття.
Поділ у macOS:
- **служба хоста вузла** пересилає `system.run` до **застосунку macOS** через локальний IPC.
- **застосунок macOS** застосовує підтвердження + виконує команду в контексті UI.
- **сервіс хоста вузла** пересилає `system.run` до **застосунку macOS** через локальний IPC.
- **застосунок macOS** примусово застосовує підтвердження + виконує команду в контексті UI.
## Налаштування та зберігання
@ -103,30 +108,30 @@ Host exec також використовує локальний стан під
}
```
## Режим "YOLO" без підтверджень
## Режим "YOLO" без підтвердження
Якщо ви хочете, щоб host exec запускався без запитів на підтвердження, потрібно відкрити **обидва** шари політики:
Якщо ви хочете, щоб виконання на хості працювало без запитів на підтвердження, потрібно відкрити **обидва** рівні політики:
- запитану політику exec у конфігурації OpenClaw (`tools.exec.*`)
- локальну для хоста політику підтверджень у `~/.openclaw/exec-approvals.json`
- запитана політика виконання в конфігурації OpenClaw (`tools.exec.*`)
- локальна політика підтверджень хоста в `~/.openclaw/exec-approvals.json`
Тепер це типова поведінка хоста, якщо ви явно не зробите її суворішою:
Тепер це типова поведінка хоста, якщо ви явно її не зробите суворішою:
- `tools.exec.security`: `full` на `gateway`/`node`
- `tools.exec.ask`: `off`
- host `askFallback`: `full`
- хост `askFallback`: `full`
Важливе розрізнення:
- `tools.exec.host=auto` вибирає, де виконується exec: у sandbox, коли доступно, інакше на gateway.
- YOLO вибирає, як схвалюється host exec: `security=full` плюс `ask=off`.
- У режимі YOLO OpenClaw не додає окремий евристичний бар’єр підтвердження обфускації команд поверх налаштованої політики host exec.
- `auto` не робить маршрутизацію через gateway вільним обходом із sandbox-сесії. Запит `host=node` на рівні окремого виклику дозволений із `auto`, а `host=gateway` дозволяється з `auto` лише тоді, коли немає активного runtime sandbox. Якщо вам потрібен стабільний типово не-`auto` режим, задайте `tools.exec.host` або використовуйте `/exec host=...` явно.
- `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`
Якщо вам потрібніше більш консервативне налаштування, зробіть суворішим будь-який із рівнів назад до `allowlist` / `on-miss`
або `deny`.
Постійне налаштування gateway host "ніколи не запитувати":
Постійне налаштування "ніколи не запитувати" для хоста gateway:
```bash
openclaw config set tools.exec.host gateway
@ -135,7 +140,7 @@ openclaw config set tools.exec.ask off
openclaw gateway restart
```
Потім приведіть файл підтверджень хоста у відповідність:
Потім установіть відповідний файл підтверджень хоста:
```bash
openclaw approvals set --stdin <<'EOF'
@ -150,7 +155,22 @@ openclaw approvals set --stdin <<'EOF'
EOF
```
Для хоста вузла замість цього застосуйте той самий файл підтверджень на цьому вузлі:
Локальний ярлик для тієї самої політики хоста gateway на поточній машині:
```bash
openclaw exec-policy preset yolo
```
Цей локальний ярлик оновлює обидва:
- локальні `tools.exec.host/security/ask`
- локальні типові значення `~/.openclaw/exec-approvals.json`
Він навмисно працює лише локально. Якщо вам потрібно змінити підтвердження для хоста gateway або хоста вузла
віддалено, і далі використовуйте `openclaw approvals set --gateway` або
`openclaw approvals set --node <id|name|ip>`.
Для хоста вузла застосуйте той самий файл підтверджень на цьому вузлі:
```bash
openclaw approvals set --node <id|name|ip> --stdin <<'EOF'
@ -165,39 +185,45 @@ openclaw approvals set --node <id|name|ip> --stdin <<'EOF'
EOF
```
Ярлик лише для сесії:
Важливе локальне обмеження:
- `/exec security=full ask=off` змінює лише поточну сесію.
- `/elevated full` — це аварійний shortcut, який також пропускає підтвердження exec для цієї сесії.
- `openclaw exec-policy` не синхронізує підтвердження вузла
- `openclaw exec-policy set --host node` відхиляється
- підтвердження виконання вузла отримуються з вузла під час виконання, тож оновлення, націлені на вузол, потрібно робити через `openclaw approvals --node ...`
Якщо файл підтверджень хоста залишається суворішим за конфігурацію, усе одно перемагає суворіша політика хоста.
Ярлик лише для сеансу:
- `/exec security=full ask=off` змінює лише поточний сеанс.
- `/elevated full` — це аварійний ярлик, який також пропускає підтвердження виконання для цього сеансу.
Якщо файл підтверджень хоста залишається суворішим, ніж конфігурація, суворіша політика хоста все одно має пріоритет.
## Параметри політики
### Security (`exec.security`)
- **deny**: блокувати всі запити host exec.
- **allowlist**: дозволяти лише команди зі списку дозволів.
- **full**: дозволяти все (еквівалентно elevated).
- **deny**: блокувати всі запити на виконання на хості.
- **allowlist**: дозволяти лише команди зі списку дозволених дій.
- **full**: дозволяти все (еквівалент elevated).
### Ask (`exec.ask`)
- **off**: ніколи не запитувати.
- **on-miss**: запитувати лише коли список дозволів не збігається.
- **always**: запитувати для кожної команди.
- довіреність `allow-always` не пригнічує запити, коли ефективний режим ask — `always`
- **off**: ніколи не показувати запит.
- **on-miss**: показувати запит лише тоді, коли список дозволених дій не збігається.
- **always**: показувати запит для кожної команди.
- тривала довіра `allow-always` не пригнічує запити, коли ефективний режим ask — `always`
### Ask fallback (`askFallback`)
Якщо потрібне підтвердження, але жоден UI недосяжний, резервна поведінка вирішує:
Якщо потрібен запит, але UI недосяжний, резервна поведінка визначає результат:
- **deny**: блокувати.
- **allowlist**: дозволяти лише якщо є збіг зі списком дозволів.
- **allowlist**: дозволяти лише за збігу зі списком дозволених дій.
- **full**: дозволяти.
### Посилення для inline eval інтерпретатора (`tools.exec.strictInlineEval`)
### Посилення inline eval інтерпретаторів (`tools.exec.strictInlineEval`)
Коли `tools.exec.strictInlineEval=true`, OpenClaw розглядає inline-форми виконання коду лише як такі, що потребують підтвердження, навіть якщо сам бінарний файл інтерпретатора є в списку дозволів.
Коли `tools.exec.strictInlineEval=true`, OpenClaw розглядає форми inline eval коду як такі, що потребують лише підтвердження, навіть якщо сам двійковий файл інтерпретатора є у списку дозволених.
Приклади:
@ -209,18 +235,18 @@ EOF
- `lua -e`
- `osascript -e`
Це defense-in-depth для завантажувачів інтерпретаторів, які не можна чисто відобразити на один стабільний файловий операнд. У strict mode:
Це захист у глибину для завантажувачів інтерпретаторів, які не відображаються чисто на один стабільний файловий операнд. У суворому режимі:
- ці команди все одно потребують явного підтвердження;
- `allow-always` не зберігає для них нові записи списку дозволів автоматично.
- `allow-always` не зберігає для них нові записи списку дозволених автоматично.
## Список дозволів (для кожного агента)
## Список дозволених дій (для кожного агента)
Списки дозволів є **окремими для кожного агента**. Якщо існує кілька агентів, перемкніть, якого агента ви
редагуєте, у застосунку macOS. Шаблони — це **нечутливі до регістру glob-збіги**.
Шаблони мають вказувати на **шляхи до бінарних файлів** (записи лише з basename ігноруються).
Застарілі записи `agents.default` мігрують до `agents.main` під час завантаження.
Shell-ланцюжки на кшталт `echo ok && pwd` усе одно вимагають, щоб кожен верхньорівневий сегмент відповідав правилам списку дозволів.
Списки дозволених дій — **окремі для кожного агента**. Якщо існує кілька агентів, перемкніть агента,
якого редагуєте, у застосунку macOS. Шаблони — це **нечутливі до регістру glob-збіги**.
Шаблони мають вказувати на **шляхи до двійкових файлів** (записи лише з базовою назвою ігноруються).
Застарілі записи `agents.default` під час завантаження мігрують до `agents.main`.
Ланцюжки shell-команд на кшталт `echo ok && pwd` усе одно вимагають, щоб кожен сегмент верхнього рівня відповідав правилам списку дозволених дій.
Приклади:
@ -228,45 +254,45 @@ Shell-ланцюжки на кшталт `echo ok && pwd` усе одно вим
- `~/.local/bin/*`
- `/opt/homebrew/bin/rg`
Кожен запис списку дозволів відстежує:
Кожен запис списку дозволених дій відстежує:
- **id** стабільний UUID, який використовується для ідентичності в UI (необов’язково)
- **last used** мітка часу
- **id** стабільний UUID, що використовується для ідентичності в UI (необов’язково)
- **last used** часову мітку
- **last used command**
- **last resolved path**
## Автодозвіл для CLI Skills
Коли **Auto-allow skill CLIs** увімкнено, виконувані файли, на які посилаються відомі Skills,
вважаються такими, що входять до списку дозволів на вузлах (macOS node або headless node host). Для цього
використовується `skills.bins` через Gateway RPC, щоб отримати список бінарних файлів skill. Вимкніть це, якщо вам потрібні суворі ручні списки дозволів.
Коли ввімкнено **Автодозвіл для CLI Skills**, виконувані файли, на які посилаються відомі Skills,
вважаються такими, що є у списку дозволених дій на вузлах (вузол macOS або headless-хост вузла). Для цього використовується
`skills.bins` через Gateway RPC, щоб отримати список двійкових файлів Skills. Вимкніть це, якщо вам потрібні суворі ручні списки дозволених дій.
Важливі примітки щодо довіри:
- Це **неявний зручний список дозволів**, окремий від ручних записів списку дозволів для шляхів.
- Він призначений для середовищ із довіреними операторами, де Gateway і вузол перебувають в одній межі довіри.
- Якщо вам потрібна сувора явна довіра, залиште `autoAllowSkills: false` і використовуйте лише ручні записи списку дозволів для шляхів.
- Це **неявний зручний список дозволених дій**, окремий від ручних записів списку дозволених шляхів.
- Він призначений для довірених операторських середовищ, де Gateway і вузол перебувають у межах однієї моделі довіри.
- Якщо вам потрібна сувора явна довіра, залиште `autoAllowSkills: false` і використовуйте лише ручні записи списку дозволених шляхів.
## Safe bins (лише stdin)
`tools.exec.safeBins` визначає невеликий список **бінарних файлів лише для stdin** (наприклад, `cut`),
які можуть запускатися в режимі списку дозволів **без** явних записів у списку дозволів. Safe bins відхиляють
позиційні файлові аргументи та токени, схожі на шляхи, тому можуть працювати лише з вхідним потоком.
Розглядайте це як вузький fast-path для потокових фільтрів, а не як загальний список довіри.
**Не** додавайте до `safeBins` бінарні файли інтерпретаторів або середовищ виконання (наприклад, `python3`, `node`, `ruby`, `bash`, `sh`, `zsh`).
Якщо команда за задумом може обчислювати код, виконувати підкоманди або читати файли, краще використовувати явні записи списку дозволів і залишати ввімкненими запити на підтвердження.
`tools.exec.safeBins` визначає невеликий список **двійкових файлів лише для stdin** (наприклад, `cut`),
які можуть працювати в режимі allowlist **без** явних записів у списку дозволених дій. Safe bins відхиляють
позиційні файлові аргументи та токени, схожі на шляхи, тож вони можуть працювати лише з вхідним потоком.
Сприймайте це як вузький швидкий шлях для потокових фільтрів, а не як загальний список довіри.
**Не** додавайте двійкові файли інтерпретаторів або середовищ виконання (наприклад, `python3`, `node`, `ruby`, `bash`, `sh`, `zsh`) до `safeBins`.
Якщо команда за своєю природою може виконувати eval коду, запускати підкоманди або читати файли, надавайте перевагу явним записам у списку дозволених дій і залишайте запити на підтвердження ввімкненими.
Користувацькі safe bins мають визначати явний профіль у `tools.exec.safeBinProfiles.<bin>`.
Перевірка є детермінованою лише за формою argv (без перевірок існування у файловій системі хоста), що
запобігає поведінці оракула існування файлів через різницю між allow/deny.
Файлоорієнтовані параметри відхиляються для типових safe bins (наприклад, `sort -o`, `sort --output`,
запобігає поведінці 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 bins також примусово застосовують явну політику прапорців для кожного двійкового файла для опцій, які порушують
поведінку лише через stdin (наприклад, `sort -o/--output/--compress-program` і рекурсивні прапорці grep).
Довгі опції в режимі safe-bin перевіряються за fail-closed принципом: невідомі прапорці та неоднозначні
скорочення відхиляються.
Відхилені прапорці за профілем safe-bin:
Заборонені прапорці за профілем safe-bin:
[//]: # "SAFE_BIN_DENIED_FLAGS:START"
@ -278,31 +304,31 @@ Safe bins також застосовують явну політику для
[//]: # "SAFE_BIN_DENIED_FLAGS:END"
Safe bins також примусово обробляють токени argv як **буквальний текст** під час виконання (без globbing
і без розгортання `$VARS`) для сегментів лише зі stdin, тому шаблони на кшталт `*` або `$HOME/...` не можуть бути
використані для прихованого читання файлів.
Safe bins також мають визначатися з довірених каталогів бінарних файлів (системні типові плюс необов’язкові
`tools.exec.safeBinTrustedDirs`). Записи `PATH` ніколи не вважаються автоматично довіреними.
і без розгортання `$VARS`) для сегментів лише зі stdin, тож шаблони на кшталт `*` або `$HOME/...` не можуть
використовуватися для прихованого читання файлів.
Safe bins також мають визначатися з довірених каталогів двійкових файлів (системні типові каталоги плюс необов’язкові
`tools.exec.safeBinTrustedDirs`). Записи `PATH` ніколи не вважаються довіреними автоматично.
Типові довірені каталоги safe-bin навмисно мінімальні: `/bin`, `/usr/bin`.
Якщо ваш виконуваний файл safe-bin знаходиться в шляхах пакетного менеджера/користувача (наприклад
Якщо ваш виконуваний файл safe-bin розташований у шляхах package manager або користувача (наприклад,
`/opt/homebrew/bin`, `/usr/local/bin`, `/opt/local/bin`, `/snap/bin`), додайте їх явно
до `tools.exec.safeBinTrustedDirs`.
Shell-ланцюжки та перенаправлення не дозволяються автоматично в режимі списку дозволів.
Ланцюжки shell-команд і перенаправлення не дозволяються автоматично в режимі allowlist.
Shell-ланцюжки (`&&`, `||`, `;`) дозволяються, коли кожен верхньорівневий сегмент відповідає списку дозволів
(включно із safe bins або автодозволом для skill). Перенаправлення залишаються непідтримуваними в режимі списку дозволів.
Підстановка команд (`$()` / зворотні лапки) відхиляється під час розбору списку дозволів, зокрема всередині
Ланцюжки shell-команд (`&&`, `||`, `;`) дозволені, якщо кожен сегмент верхнього рівня відповідає списку дозволених дій
(включно з safe bins або автодозволом для Skills). Перенаправлення в режимі allowlist, як і раніше, не підтримуються.
Підстановка команд (`$()` / зворотні лапки) відхиляється під час розбору allowlist, зокрема всередині
подвійних лапок; використовуйте одинарні лапки, якщо вам потрібен буквальний текст `$()`.
У підтвердженнях застосунку-компаньйона macOS сирий shell-текст, що містить синтаксис керування shell або розгортання
(`&&`, `||`, `;`, `|`, `` ` ``, `$`, `<`, `>`, `(`, `)`), розглядається як промах списку дозволів, якщо
сам бінарний файл shell не входить до списку дозволів.
Для shell-обгорток (`bash|sh|zsh ... -c/-lc`) перевизначення env у межах запиту зводяться до
невеликого явного списку дозволів (`TERM`, `LANG`, `LC_*`, `COLORTERM`, `NO_COLOR`, `FORCE_COLOR`).
Для рішень allow-always у режимі списку дозволів відомі dispatch-обгортки
У підтвердженнях 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 усе одно вимагав явного підтвердження. У strict mode `allow-always` усе ще може зберігати нешкідливі виклики інтерпретатора/скрипта, але носії inline-eval автоматично не зберігаються.
тощо), тож зберігаються внутрішні виконувані файли, а не двійкові файли мультиплексора. Якщо обгортку або
мультиплексор не можна безпечно розгорнути, запис списку дозволених дій автоматично не зберігається.
Якщо ви додаєте інтерпретатори, як-от `python3` або `node`, до списку дозволених, надавайте перевагу `tools.exec.strictInlineEval=true`, щоб inline eval і далі вимагав явного підтвердження. У суворому режимі `allow-always` усе ще може зберігати нешкідливі виклики інтерпретатора/скрипта, але носії inline-eval автоматично не зберігаються.
Типові safe bins:
@ -312,64 +338,64 @@ Shell-ланцюжки (`&&`, `||`, `;`) дозволяються, коли ко
[//]: # "SAFE_BIN_DEFAULTS:END"
`grep` і `sort` не входять до типового списку. Якщо ви явно вмикаєте їх, зберігайте явні записи списку дозволів для
їхніх сценаріїв, не пов’язаних лише зі stdin.
`grep` і `sort` не входять до типового списку. Якщо ви явно їх увімкнете, зберігайте явні записи списку дозволених дій для
їхніх сценаріїв, що не обмежуються stdin.
Для `grep` у режимі safe-bin передавайте шаблон через `-e`/`--regexp`; позиційна форма шаблону
відхиляється, щоб файлові операнди не могли бути приховано передані як неоднозначні позиційні аргументи.
відхиляється, щоб файлові операнди не можна було приховати як неоднозначні позиційні аргументи.
### Safe bins проти списку дозволів
### Safe bins у порівнянні зі списком дозволених дій
| Тема | `tools.exec.safeBins` | Список дозволів (`exec-approvals.json`) |
| Тема | `tools.exec.safeBins` | Список дозволених дій (`exec-approvals.json`) |
| ---------------- | ------------------------------------------------------ | ------------------------------------------------------------ |
| Мета | Автоматично дозволяти вузькі stdin-фільтри | Явно довіряти конкретним виконуваним файлам |
| Мета | Автодозвіл для вузьких stdin-фільтрів | Явна довіра до конкретних виконуваних файлів |
| Тип збігу | Назва виконуваного файла + політика argv safe-bin | Glob-шаблон шляху до визначеного виконуваного файла |
| Обсяг аргументів | Обмежений профілем safe-bin і правилами буквальних токенів | Лише збіг шляху; за аргументи в іншому ви відповідаєте самі |
| Область аргументів | Обмежена профілем 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`). Ключі профілів окремого агента мають пріоритет над глобальними ключами.
- записи списку дозволів зберігаються в локальному для хоста `~/.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>` як `{}` (після цього перегляньте й посильте їх). Бінарні файли інтерпретаторів/середовищ виконання не створюються автоматично.
- `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>` як `{}` (після цього перегляньте й посильте їх). Для двійкових файлів інтерпретаторів/середовищ виконання заготовки автоматично не створюються.
Приклад користувацького профілю:
__OC_I18N_900004__
Якщо ви явно додаєте `jq` до `safeBins`, OpenClaw усе одно відхиляє builtin `env` у режимі safe-bin,
тому `jq -n env` не може вивести env процесу хоста без явного шляху у списку дозволів
__OC_I18N_900005__
Якщо ви явно додаєте `jq` до `safeBins`, OpenClaw усе одно відхиляє вбудовану команду `env` у режимі safe-bin,
щоб `jq -n env` не міг вивантажити середовище процесу хоста без явного шляху allowlist
або запиту на підтвердження.
## Редагування в Control UI
Використовуйте картку **Control UI → Nodes → Exec approvals**, щоб редагувати типові значення, перевизначення
для окремих агентів і списки дозволів. Виберіть область дії (Defaults або агент), налаштуйте політику,
додайте/видаліть шаблони списку дозволів, а потім натисніть **Save**. UI показує метадані **last used**
для кожного шаблону, щоб вам було легше підтримувати порядок у списку.
Використовуйте картку **Control UI → Nodes → Exec approvals**, щоб редагувати типові налаштування, перевизначення
для окремих агентів і списки дозволених дій. Виберіть область видимості (Defaults або агент), змініть політику,
додайте/видаліть шаблони списку дозволених дій, а потім натисніть **Save**. UI показує метадані **last used**
для кожного шаблону, щоб вам було легше підтримувати список у впорядкованому стані.
Селектор цілі вибирає **Gateway** (локальні підтвердження) або **Node**. Вузли
мають оголошувати `system.execApprovals.get/set` (застосунок macOS або headless node host).
Якщо вузол ще не оголошує exec approvals, відредагуйте його локальний
мають оголошувати `system.execApprovals.get/set` (застосунок macOS або headless-хост вузла).
Якщо вузол ще не оголошує підтвердження виконання, відредагуйте його локальний
`~/.openclaw/exec-approvals.json` безпосередньо.
CLI: `openclaw approvals` підтримує редагування gateway або node (див. [Approvals CLI](/cli/approvals)).
CLI: `openclaw approvals` підтримує редагування gateway або вузла (див. [CLI підтверджень](/cli/approvals)).
## Потік підтвердження
Коли потрібне підтвердження, gateway транслює `exec.approval.requested` клієнтам операторів.
Control UI та застосунок macOS обробляють це через `exec.approval.resolve`, після чого gateway пересилає
схвалений запит на хост вузла.
Коли потрібен запит на підтвердження, gateway транслює `exec.approval.requested` клієнтам операторів.
Control UI і застосунок macOS обробляють його через `exec.approval.resolve`, після чого gateway пересилає
підтверджений запит хосту вузла.
Для `host=node` запити на підтвердження містять канонічний payload `systemRunPlan`. Gateway використовує
цей план як авторитетний контекст команди/cwd/сесії під час пересилання схвалених запитів `system.run`.
Для `host=node` запити на підтвердження містять канонічне корисне навантаження `systemRunPlan`. Gateway використовує
цей план як авторитетний контекст команди/cwd/сеансу під час пересилання підтверджених запитів `system.run`.
Це важливо для затримки асинхронного підтвердження:
Це важливо для асинхронної затримки підтвердження:
- шлях exec вузла готує один канонічний план наперед
- шлях виконання вузла готує один канонічний план наперед
- запис підтвердження зберігає цей план і його метадані прив’язки
- після схвалення фінальний пересланий виклик `system.run` повторно використовує збережений план
- після підтвердження остаточний пересланий виклик `system.run` повторно використовує збережений план
замість довіри до пізніших змін викликача
- якщо викликач змінює `command`, `rawCommand`, `cwd`, `agentId` або
`sessionKey` після створення запиту на підтвердження, gateway відхиляє
@ -377,32 +403,32 @@ Control UI та застосунок macOS обробляють це через
## Команди інтерпретатора/середовища виконання
Запуски інтерпретатора/середовища виконання з підтвердженням навмисно є консервативними:
Запуски інтерпретатора/середовища виконання на основі підтвердження навмисно є консервативними:
- Точний контекст argv/cwd/env завжди прив’язується.
- Форми прямого shell-скрипта і прямого runtime-файла best-effort прив’язуються до одного конкретного snapshot локального
файла.
- Поширені форми обгорток пакетних менеджерів, які все ще зводяться до одного прямого локального файла (наприклад
- Форми прямого shell-скрипта і прямого файла середовища виконання прив’язуються в режимі best-effort до одного конкретного локального
знімка файла.
- Поширені форми обгорток package manager, які все ще визначаються в один прямий локальний файл (наприклад,
`pnpm exec`, `pnpm node`, `npm exec`, `npx`), розгортаються перед прив’язкою.
- Якщо OpenClaw не може визначити рівно один конкретний локальний файл для команди інтерпретатора/середовища виконання
(наприклад package scripts, eval-форми, ланцюжки завантажувачів, специфічні для runtime, або неоднозначні форми
з кількома файлами), виконання з підтвердженням відхиляється замість заяв про семантичне покриття, якого
(наприклад, package scripts, форми eval, специфічні для середовища виконання ланцюжки завантажувачів або неоднозначні форми
з кількома файлами), виконання на основі підтвердження забороняється замість того, щоб стверджувати семантичне покриття, якого
насправді немає.
- Для таких сценаріїв віддавайте перевагу sandboxing, окремій межі хоста або явному довіреному
workflow зі списком дозволів/full, де оператор приймає ширшу семантику runtime.
- Для таких робочих процесів надавайте перевагу пісочниці, окремій межі хоста або явному
довіреному процесу allowlist/full, де оператор приймає ширшу семантику середовища виконання.
Коли потрібні підтвердження, інструмент exec негайно повертає id підтвердження. Використовуйте цей id, щоб
співвідносити подальші системні події (`Exec finished` / `Exec denied`). Якщо жодне рішення не надходить до
закінчення часу очікування, запит вважається тайм-аутом підтвердження й відображається як причина відмови.
Коли потрібні підтвердження, інструмент exec одразу повертає id підтвердження. Використовуйте цей id, щоб
пов’язати подальші системні події (`Exec finished` / `Exec denied`). Якщо жодне рішення не надійде до завершення
часу очікування, запит вважається таким, що перевищив час очікування підтвердження, і показується як причина відмови.
### Поведінка доставки followup
### Поведінка доставлення followup
Після завершення схваленого асинхронного exec OpenClaw надсилає followup-turn `agent` у ту саму сесію.
Після завершення підтвердженого асинхронного exec OpenClaw надсилає followup-хід `agent` у той самий сеанс.
- Якщо існує дійсна зовнішня ціль доставки (канал, у який можна доставити, плюс ціль `to`), followup-доставка використовує цей канал.
- У потоках лише webchat або внутрішньосесійних потоках без зовнішньої цілі доставка followup залишається лише в межах сесії (`deliver: false`).
- Якщо викликач явно запитує сувору зовнішню доставку без зовнішнього каналу, який можна визначити, запит завершується помилкою `INVALID_REQUEST`.
- Якщо ввімкнено `bestEffortDeliver` і неможливо визначити зовнішній канал, доставку знижують до режиму лише в сесії замість помилки.
- Якщо існує дійсна зовнішня ціль доставлення (канал доставлення плюс ціль `to`), доставлення followup використовує цей канал.
- У потоках лише з webchat або внутрішнім сеансом без зовнішньої цілі доставлення followup залишається лише в межах сеансу (`deliver: false`).
- Якщо викликач явно запитує суворе зовнішнє доставлення без жодного зовнішнього каналу, що може бути визначений, запит завершується помилкою `INVALID_REQUEST`.
- Якщо ввімкнено `bestEffortDeliver` і не вдається визначити жоден зовнішній канал, доставлення знижується до режиму лише для сеансу замість помилки.
Діалог підтвердження містить:
@ -410,81 +436,82 @@ Control UI та застосунок macOS обробляють це через
- cwd
- id агента
- визначений шлях до виконуваного файла
- хост + метадані політики
- метадані хоста + політики
Дії:
- **Allow once**запустити зараз
- **Always allow** → додати до списку дозволів + запустити
- **Allow once**виконати зараз
- **Always allow** → додати до списку дозволених дій + виконати
- **Deny** → заблокувати
## Пересилання підтверджень до чат-каналів
Ви можете пересилати запити на підтвердження exec до будь-якого чат-каналу (включно з каналами plugin) і підтверджувати
їх через `/approve`. Для цього використовується звичайний конвеєр вихідної доставки.
Ви можете пересилати запити на підтвердження exec до будь-якого чат-каналу (включно з каналами плагінів) і підтверджувати
їх за допомогою `/approve`. Для цього використовується звичайний конвеєр вихідного доставлення.
Конфігурація:
__OC_I18N_900005__
Відповідь у чаті:
__OC_I18N_900006__
Команда `/approve` обробляє як підтвердження exec, так і підтвердження plugin. Якщо ID не збігається з очікуваним підтвердженням exec, вона автоматично перевіряє підтвердження plugin.
### Пересилання підтверджень plugin
Пересилання підтверджень plugin використовує той самий конвеєр доставки, що й підтвердження exec, але має власну
незалежну конфігурацію в `approvals.plugin`. Увімкнення або вимкнення одного не впливає на інше.
Відповідь у чаті:
__OC_I18N_900007__
Форма конфігурації ідентична `approvals.exec`: `enabled`, `mode`, `agentFilter`,
`sessionFilter` і `targets` працюють однаково.
Команда `/approve` обробляє як підтвердження exec, так і підтвердження плагінів. Якщо ID не збігається з жодним очікуваним підтвердженням exec, вона автоматично перевіряє підтвердження плагінів.
Канали, які підтримують спільні інтерактивні відповіді, відображають однакові кнопки підтвердження як для exec, так і для
підтверджень plugin. Канали без спільного інтерактивного UI повертаються до звичайного тексту з інструкціями `/approve`.
### Пересилання підтверджень плагінів
Пересилання підтверджень плагінів використовує той самий конвеєр доставлення, що й підтвердження exec, але має власну
незалежну конфігурацію в `approvals.plugin`. Увімкнення або вимкнення одного не впливає на інше.
__OC_I18N_900008__
Форма конфігурації ідентична `approvals.exec`: `enabled`, `mode`, `agentFilter`,
`sessionFilter` і `targets` працюють так само.
Канали, що підтримують спільні інтерактивні відповіді, показують однакові кнопки підтвердження як для exec, так і для
підтверджень плагінів. Канали без спільного інтерактивного UI використовують звичайний текст із
інструкціями `/approve`.
### Підтвердження в тому самому чаті на будь-якому каналі
Коли запит на підтвердження exec або plugin походить із чат-поверхні, у яку можна доставити повідомлення, цей самий чат
тепер може типово підтвердити його через `/approve`. Це застосовується до таких каналів, як Slack, Matrix і
Microsoft Teams, на додачу до наявних потоків Web UI і terminal UI.
Коли запит на підтвердження exec або плагіна надходить із чату, який підтримує доставлення, цей самий чат
тепер за замовчуванням може підтверджувати його через `/approve`. Це стосується таких каналів, як Slack, Matrix і
Microsoft Teams, а також наявних потоків Web UI і terminal UI.
Цей спільний шлях текстової команди використовує звичайну модель автентифікації каналу для цієї розмови. Якщо чат-
джерело вже може надсилати команди й отримувати відповіді, запитам на підтвердження більше не потрібен
окремий власний адаптер доставки лише для того, щоб залишатися в очікуванні.
Цей спільний шлях текстової команди використовує звичайну модель автентифікації каналу для цієї розмови. Якщо вихідний чат
вже може надсилати команди й отримувати відповіді, запитам на підтвердження більше не потрібен
окремий власний адаптер доставлення лише для того, щоб залишатися в очікуванні.
Discord і Telegram також підтримують `/approve` у тому самому чаті, але ці канали все одно використовують свій
визначений список схвалювачів для авторизації, навіть коли власну доставку підтверджень вимкнено.
Discord і Telegram також підтримують `/approve` у тому самому чаті, але ці канали все ще використовують свій
визначений список тих, хто може підтверджувати, для авторизації, навіть коли власне доставлення підтверджень вимкнено.
Для Telegram та інших власних клієнтів підтвердження, які напряму викликають Gateway,
цей fallback навмисно обмежений помилками типу "підтвердження не знайдено". Реальна
відмова/помилка підтвердження exec не повторюється мовчки як підтвердження plugin.
Для Telegram та інших власних клієнтів підтвердження, які викликають Gateway безпосередньо,
цей резервний механізм навмисно обмежено збоями типу "підтвердження не знайдено". Реальна
відмова/помилка підтвердження exec не повторюється мовчки як підтвердження плагіна.
### Власна доставка підтверджень
### Власне доставлення підтверджень
Деякі канали також можуть діяти як власні клієнти підтвердження. Власні клієнти додають DM для схвалювачів, fanout у чат-
джерело та специфічний для каналу інтерактивний UX підтвердження поверх спільного потоку `/approve` у тому самому чаті.
Деякі канали також можуть працювати як власні клієнти підтвердження. Власні клієнти додають приватні повідомлення тим, хто може підтверджувати, fanout у вихідний чат
і специфічний для каналу інтерактивний UX підтвердження поверх спільного потоку `/approve` у тому самому чаті.
Коли доступні власні картки/кнопки підтвердження, цей власний UI є основним
шляхом для агента. Агент не повинен також дублювати звичайну чат-команду
`/approve`, якщо тільки результат інструмента не каже, що чат-підтвердження недоступні або
шляхом взаємодії для агента. Агент також не повинен дублювати звичайну команду чату
`/approve`, якщо тільки результат інструмента не вказує, що підтвердження через чат недоступні або
ручне підтвердження — це єдиний шлях, що залишився.
Загальна модель:
- політика host exec, як і раніше, визначає, чи потрібне підтвердження exec
- `approvals.exec` керує пересиланням запитів на підтвердження до інших чат-призначень
- `channels.<channel>.execApprovals` керує тим, чи діє цей канал як власний клієнт підтвердження
- політика виконання на хості й далі визначає, чи потрібне підтвердження exec
- `approvals.exec` керує пересиланням запитів на підтвердження в інші чат-призначення
- `channels.<channel>.execApprovals` керує тим, чи цей канал виступає власним клієнтом підтвердження
Власні клієнти підтвердження автоматично вмикають доставку спочатку в DM, коли всі ці умови істинні:
Власні клієнти підтвердження автоматично вмикають доставлення спочатку в DM, якщо виконуються всі ці умови:
- канал підтримує власну доставку підтверджень
- схвалювачів можна визначити з явних `execApprovals.approvers` або з
документованих fallback-джерел цього каналу
- канал підтримує власне доставлення підтверджень
- тих, хто може підтверджувати, можна визначити з явних `execApprovals.approvers` або з
задокументованих резервних джерел цього каналу
- `channels.<channel>.execApprovals.enabled` не задано або має значення `"auto"`
Установіть `enabled: false`, щоб явно вимкнути власний клієнт підтвердження. Установіть `enabled: true`, щоб примусово
ввімкнути його, коли схвалювачів визначено. Публічна доставка в чат-джерело, як і раніше, вмикається явно через
ввімкнути його, коли тих, хто може підтверджувати, вдається визначити. Доставлення в публічний вихідний чат і далі явно керується через
`channels.<channel>.execApprovals.target`.
FAQ: [Чому існують дві конфігурації підтверджень exec для чат-підтверджень?](/help/faq#why-are-there-two-exec-approval-configs-for-chat-approvals)
FAQ: [Чому для підтверджень exec у чаті існує дві конфігурації?](/help/faq#why-are-there-two-exec-approval-configs-for-chat-approvals)
- Discord: `channels.discord.execApprovals.*`
- Slack: `channels.slack.execApprovals.*`
@ -495,29 +522,29 @@ FAQ: [Чому існують дві конфігурації підтвердж
Спільна поведінка:
- Slack, Matrix, Microsoft Teams та подібні чати з доставкою використовують звичайну модель автентифікації каналу
- Slack, Matrix, Microsoft Teams та подібні чати, що підтримують доставлення, використовують звичайну модель автентифікації каналу
для `/approve` у тому самому чаті
- коли власний клієнт підтвердження вмикається автоматично, типовою власною ціллю доставки є DM схвалювачів
- для Discord і Telegram лише визначені схвалювачі можуть схвалювати або відхиляти
- схвалювачі Discord можуть бути явними (`execApprovals.approvers`) або виводитися з `commands.ownerAllowFrom`
- схвалювачі Telegram можуть бути явними (`execApprovals.approvers`) або виводитися з наявної конфігурації owner (`allowFrom`, плюс `defaultTo` для direct-message, де це підтримується)
- схвалювачі Slack можуть бути явними (`execApprovals.approvers`) або виводитися з `commands.ownerAllowFrom`
- власні кнопки Slack зберігають тип id підтвердження, тому id `plugin:` можуть визначати підтвердження plugin
без другого локального fallback-рівня Slack
- власна маршрутизація Matrix у DM/канал і shortcut-реакції обробляють як підтвердження exec, так і plugin;
авторизація plugin, як і раніше, походить із `channels.matrix.dm.allowFrom`
- запитувач не обов’язково має бути схвалювачем
- чат-джерело може схвалити напряму через `/approve`, коли цей чат уже підтримує команди та відповіді
- власні кнопки підтвердження Discord маршрутизують за типом id підтвердження: id `plugin:` переходять
безпосередньо до підтверджень plugin, усе інше — до підтверджень exec
- власні кнопки підтвердження Telegram дотримуються того самого обмеженого fallback exec-to-plugin, що й `/approve`
- коли власний `target` вмикає доставку в чат-джерело, запити на підтвердження містять текст команди
- очікувані підтвердження exec типово спливають через 30 хвилин
- коли власний клієнт підтвердження автоматично вмикається, типовою ціллю власного доставлення стають 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`
Telegram типово використовує DM схвалювачів (`target: "dm"`). Ви можете перемкнути на `channel` або `both`, якщо
хочете, щоб запити на підтвердження також з’являлися в початковому чаті/темі Telegram. Для тем форуму Telegram
OpenClaw зберігає тему для запиту на підтвердження й follow-up після підтвердження.
Telegram типово використовує DM для тих, хто може підтверджувати (`target: "dm"`). Ви можете переключити це на `channel` або `both`, якщо
хочете, щоб запити на підтвердження також з’являлися у вихідному чаті/темі Telegram. Для тем форуму Telegram
OpenClaw зберігає тему для запиту на підтвердження і follow-up після підтвердження.
Дивіться:
@ -525,12 +552,12 @@ OpenClaw зберігає тему для запиту на підтвердже
- [Telegram](/channels/telegram)
### Потік IPC у macOS
__OC_I18N_900008__
__OC_I18N_900009__
Примітки щодо безпеки:
- Режим Unix-сокета `0600`, токен зберігається в `exec-approvals.json`.
- Перевірка peer з тим самим UID.
- Challenge/response (nonce + HMAC token + hash запиту) + короткий TTL.
- Режим Unix socket `0600`, токен зберігається в `exec-approvals.json`.
- Перевірка однотипного UID однорангового процесу.
- Challenge/response (nonce + HMAC token + хеш запиту) + короткий TTL.
## Системні події
@ -540,36 +567,36 @@ __OC_I18N_900008__
- `Exec finished`
- `Exec denied`
Вони публікуються в сесії агента після того, як вузол повідомляє про подію.
Підтвердження exec на gateway host надсилають ті самі події життєвого циклу, коли команда завершується (і, за потреби, коли виконується довше за поріг).
Вони публікуються в сеанс агента після того, як вузол повідомляє про подію.
Підтвердження exec на хості gateway надсилають ті самі події життєвого циклу, коли команда завершується (і, за потреби, коли вона виконується довше за поріг).
Exec із підтвердженням повторно використовують id підтвердження як `runId` у цих повідомленнях для зручної кореляції.
## Поведінка при відхиленому підтвердженні
## Поведінка у разі відхиленого підтвердження
Коли асинхронне підтвердження exec відхиляється, OpenClaw забороняє агенту повторно використовувати
вивід будь-якого попереднього запуску тієї самої команди в сесії. Причина відхилення
передається разом із явною вказівкою, що жодного виводу команди немає, що заважає
Коли асинхронне підтвердження exec відхилене, OpenClaw не дозволяє агенту повторно використовувати
вивід будь-якого попереднього запуску тієї самої команди в сеансі. Причина відхилення
передається з явною вказівкою, що жодного виводу команди немає, що не дозволяє
агенту стверджувати, що є новий вивід, або повторювати відхилену команду зі
застарілими результатами попереднього успішного запуску.
## Наслідки
- **full** — це потужний режим; за можливості віддавайте перевагу спискам дозволів.
- **ask** залишає вас у циклі, водночас даючи можливість швидко підтверджувати.
- Списки дозволів для окремих агентів не дають підтвердженням одного агента просочуватися до інших.
- **full** має широкі можливості; за можливості надавайте перевагу спискам дозволених дій.
- **ask** залишає вас у циклі, водночас дозволяючи швидко підтверджувати.
- Окремі для кожного агента списки дозволених дій не дають підтвердженням одного агента потрапляти до інших.
- Підтвердження застосовуються лише до запитів host exec від **авторизованих відправників**. Неавторизовані відправники не можуть виконувати `/exec`.
- `/exec security=full` — це зручність на рівні сесії для авторизованих операторів і за задумом пропускає підтвердження.
Щоб жорстко заборонити host exec, установіть безпеку підтверджень у `deny` або забороніть інструмент `exec` через політику інструментів.
- `/exec security=full` — це зручний параметр на рівні сеансу для авторизованих операторів, який навмисно пропускає підтвердження.
Щоб жорстко заборонити host exec, установіть для security підтверджень значення `deny` або забороніть інструмент `exec` через політику інструментів.
Пов’язане:
- [Exec tool](/uk/tools/exec)
- [Elevated mode](/uk/tools/elevated)
- [Інструмент Exec](/uk/tools/exec)
- [Режим Elevated](/uk/tools/elevated)
- [Skills](/uk/tools/skills)
## Пов’язане
- [Exec](/uk/tools/exec) — інструмент виконання shell-команд
- [Sandboxing](/uk/gateway/sandboxing) — режими sandbox і доступ до workspace
- [Security](/uk/gateway/security) — модель безпеки та посилення
- [Sandbox vs Tool Policy vs Elevated](/uk/gateway/sandbox-vs-tool-policy-vs-elevated) — коли використовувати кожен варіант
- [Пісочниця](/uk/gateway/sandboxing) — режими пісочниці та доступ до робочого простору
- [Безпека](/uk/gateway/security) — модель безпеки та посилення захисту
- [Пісочниця vs Політика інструментів vs Elevated](/uk/gateway/sandbox-vs-tool-policy-vs-elevated) — коли що використовувати