Запускайте shell-команди в робочій області.Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
exec — це змінювана shell-поверхня: команди можуть створювати, редагувати або видаляти файли всюди, де це дозволяє вибраний хост або файлова система пісочниці. Вимкнення файлових інструментів OpenClaw, як-от write, edit або apply_patch, не робить exec доступним лише для читання.
Підтримує виконання на передньому плані та у фоні через process. Якщо process заборонено, exec виконується синхронно й ігнорує yieldMs/background.
Фонові сесії обмежені окремим агентом; process бачить лише сесії того самого агента.
Параметри
Shell-команда для запуску.
Робочий каталог для команди.
Перевизначення середовища у форматі ключ/значення, об’єднані поверх успадкованого середовища.
Автоматично перевести команду у фон після цієї затримки (мс).
Негайно перевести команду у фон замість очікування
yieldMs.Перевизначити налаштований таймаут exec для цього виклику. Установлюйте
timeout: 0 лише тоді, коли команда має виконуватися без таймауту процесу exec.Запустити в псевдотерміналі, коли доступно. Використовуйте для CLI лише з TTY, агентів кодування та термінальних інтерфейсів.
Де виконувати.
auto визначається як sandbox, коли активне середовище виконання пісочниці, і як gateway в інших випадках.Ігнорується для звичайних викликів інструментів. Безпека
gateway / node керується
tools.exec.security і ~/.openclaw/exec-approvals.json; розширений режим може
примусово встановити security=full лише тоді, коли оператор явно надає розширений доступ.Поведінка запиту схвалення для виконання
gateway / node.Ідентифікатор/ім’я Node, коли
host=node.Запросити розширений режим — вийти з пісочниці на налаштований шлях хоста.
security=full примусово встановлюється лише тоді, коли elevated визначається як full.hostза замовчуванням має значенняauto: пісочниця, коли середовище виконання пісочниці активне для сесії, інакше gateway.hostприймає лишеauto,sandbox,gatewayабоnode. Це не селектор імені хоста; значення, схожі на імена хостів, відхиляються до запуску команди.auto— це стандартна стратегія маршрутизації, а не шаблон будь-якого значення. Окремий викликhost=nodeдозволено зauto; окремий викликhost=gatewayдозволено лише коли середовище виконання пісочниці не активне.- Без додаткової конфігурації
host=autoусе одно «просто працює»: якщо пісочниці немає, він визначається якgateway; якщо пісочниця активна, він залишається в пісочниці. elevatedвиходить із пісочниці на налаштований шлях хоста: типовоgatewayабоnode, колиtools.exec.host=node(або стандарт сесії —host=node). Він доступний лише коли розширений доступ увімкнено для поточної сесії/провайдера.- Схвалення
gateway/nodeкеруються через~/.openclaw/exec-approvals.json. nodeпотребує спареного Node (супровідної програми або headless-хоста Node).- Якщо доступно кілька Node, установіть
exec.nodeабоtools.exec.node, щоб вибрати один. exec host=node— єдиний шлях shell-виконання для Node; застарілу обгорткуnodes.runвидалено.timeoutзастосовується до виконання на передньому плані, у фоні,yieldMs, gateway, пісочниці таsystem.runNode. Якщо його пропущено, OpenClaw використовуєtools.exec.timeoutSec; явнеtimeout: 0вимикає таймаут процесу exec для цього виклику.- На хостах не-Windows exec використовує
SHELL, коли встановлено; якщоSHELL—fish, він надає перевагуbash(абоsh) зPATH, щоб уникнути скриптів, несумісних із fish, а потім повертається доSHELL, якщо жодного немає. - На хостах Windows exec надає перевагу виявленню PowerShell 7 (
pwsh) (Program Files, ProgramW6432, потім PATH), а потім повертається до Windows PowerShell 5.1. - Виконання на хості (
gateway/node) відхиляєenv.PATHі перевизначення завантажувача (LD_*/DYLD_*), щоб запобігти підміні бінарних файлів або впровадженню коду. - OpenClaw встановлює
OPENCLAW_SHELL=execу середовищі породженої команди (включно з виконанням у PTY і пісочниці), щоб правила shell/профілю могли виявляти контекст інструмента exec. openclaw channels loginзаблоковано зexec, оскільки це інтерактивний потік авторизації каналу; запустіть його в терміналі на хості gateway або скористайтеся нативним для каналу інструментом входу з чату, якщо він існує.- Важливо: пісочниця типово вимкнена. Якщо пісочницю вимкнено, неявний
host=autoвизначається якgateway. Явнийhost=sandboxусе одно завершується закрито, замість тихого запуску на хості gateway. Увімкніть пісочницю або використовуйтеhost=gatewayзі схваленнями. - Попередні перевірки скриптів (для поширених помилок shell-синтаксису Python/Node) перевіряють лише файли всередині
ефективної межі
workdir. Якщо шлях скрипта визначається позаworkdir, попередня перевірка для цього файлу пропускається. - Для тривалої роботи, яка починається зараз, запустіть її один раз і покладайтеся на автоматичне
пробудження після завершення, коли його ввімкнено і команда виводить дані або завершується помилкою.
Використовуйте
processдля журналів, стану, вводу або втручання; не імітуйте планування через цикли sleep, цикли таймаутів або повторне опитування. - Для роботи, яка має відбутися пізніше або за розкладом, використовуйте cron замість
шаблонів sleep/затримки в
exec.
Конфігурація
tools.exec.notifyOnExit(типово: true): коли true, фонові сесії exec ставлять у чергу системну подію й запитують Heartbeat після завершення.tools.exec.approvalRunningNoticeMs(типово: 10000): надсилати одне сповіщення “running”, коли exec із вимогою схвалення виконується довше за це значення (0 вимикає).tools.exec.timeoutSec(типово: 1800): стандартний таймаут exec для кожної команди в секундах. Окремийtimeoutперевизначає його; окремийtimeout: 0вимикає таймаут процесу exec.tools.exec.host(типово:auto; визначається якsandbox, коли середовище виконання пісочниці активне, інакшеgateway)tools.exec.security(типово:denyдля пісочниці,fullдля gateway + node, коли не встановлено)tools.exec.ask(типово:off)- Exec на хості без схвалення є стандартним для gateway + node. Якщо вам потрібні схвалення/поведінка allowlist, посильте і
tools.exec.*, і хостовий~/.openclaw/exec-approvals.json; див. схвалення Exec. - YOLO походить зі стандартів політики хоста (
security=full,ask=off), а не зhost=auto. Якщо потрібно примусово маршрутизувати на gateway або node, установітьtools.exec.hostабо використайте/exec host=.... - У режимі
security=fullплюсask=offexec на хості напряму дотримується налаштованої політики; немає додаткового евристичного префільтра приховування команд або шару відхилення попередньої перевірки скриптів. tools.exec.node(типово: не встановлено)tools.exec.strictInlineEval(типово: false): коли true, форми вбудованого eval інтерпретатора, як-отpython -c,node -e,ruby -e,perl -e,php -r,lua -eіosascript -e, завжди потребують явного схвалення.allow-alwaysусе ще може зберігати доброякісні виклики інтерпретатора/скриптів, але форми inline-eval усе одно запитують щоразу.tools.exec.commandHighlighting(типово: false): коли true, запити схвалення можуть підсвічувати отримані парсером ділянки команд у тексті команди. Установітьtrueглобально або для окремого агента, щоб увімкнути підсвічування тексту команд без зміни політики схвалення exec.tools.exec.pathPrepend: список каталогів, які потрібно додати на початокPATHдля запусків exec (лише gateway + пісочниця).tools.exec.safeBins: безпечні бінарні файли лише для stdin, які можуть виконуватися без явних записів allowlist. Подробиці поведінки див. у безпечних бінарних файлах.tools.exec.safeBinTrustedDirs: додаткові явні каталоги, довірені для перевірок шляхуsafeBins. ЗаписиPATHніколи автоматично не вважаються довіреними. Вбудовані стандарти —/binі/usr/bin.tools.exec.safeBinProfiles: необов’язкова власна політика argv для кожного безпечного бінарного файла (minPositional,maxPositional,allowedValueFlags,deniedFlags).
Обробка PATH
host=gateway: об’єднуєPATHвашого login-shell у середовище exec. Перевизначенняenv.PATHвідхиляються для виконання на хості. Сам демон усе ще працює з мінімальнимPATH:- macOS:
/opt/homebrew/bin,/usr/local/bin,/usr/bin,/bin - Linux:
/usr/local/bin,/usr/bin,/bin
- macOS:
host=sandbox: запускаєsh -lc(login shell) усередині контейнера, тому/etc/profileможе скинутиPATH. OpenClaw додаєenv.PATHна початок після завантаження профілю через внутрішню змінну середовища (без shell-інтерполяції);tools.exec.pathPrependтакож застосовується тут.host=node: до Node надсилаються лише незаблоковані перевизначення середовища, які ви передаєте. Перевизначенняenv.PATHвідхиляються для виконання на хості та ігноруються хостами Node. Якщо вам потрібні додаткові записи PATH на Node, налаштуйте середовище служби хоста Node (systemd/launchd) або встановіть інструменти у стандартні розташування.
Перевизначення сесії (/exec)
Використовуйте /exec, щоб установити стандартні значення для окремої сесії для host, security, ask і node.
Надішліть /exec без аргументів, щоб показати поточні значення.
Приклад:
Модель авторизації
/exec враховується лише для авторизованих відправників (allowlist/спарювання каналів плюс commands.useAccessGroups).
Вона оновлює лише стан сесії і не записує конфігурацію. Щоб жорстко вимкнути exec, забороніть його через політику
інструментів (tools.deny: ["exec"] або для окремого агента). Схвалення хоста все одно застосовуються, якщо ви явно не встановите
security=full і ask=off.
Схвалення Exec (супровідна програма / хост Node)
Агенти в пісочниці можуть вимагати схвалення для кожного запиту перед запускомexec на хості gateway або Node.
Див. схвалення Exec для політики, allowlist і потоку UI.
Коли потрібні схвалення, інструмент exec негайно повертає
status: "approval-pending" та ідентифікатор схвалення. Після схвалення (або відхилення / таймауту)
Gateway надсилає системні події (Exec finished / Exec denied). Якщо команда все ще
виконується після tools.exec.approvalRunningNoticeMs, надсилається одне сповіщення Exec running.
У каналах із нативними картками/кнопками схвалення агент має спершу покладатися на цей
нативний UI й включати ручну команду /approve лише тоді, коли результат інструмента
явно каже, що схвалення в чаті недоступні або ручне схвалення є
єдиним шляхом.
Allowlist + безпечні бінарні файли
Ручне застосування allowlist зіставляє globs визначених шляхів бінарних файлів і globs простих імен команд. Прості імена зіставляються лише з командами, викликаними через PATH, томуrg може відповідати
/opt/homebrew/bin/rg, коли команда — rg, але не ./rg або /tmp/rg.
Коли security=allowlist, shell-команди автоматично дозволяються лише якщо кожен сегмент pipeline
є в allowlist або є безпечним бінарним файлом. Ланцюжки (;, &&, ||) і перенаправлення
відхиляються в режимі allowlist, якщо кожен сегмент верхнього рівня не задовольняє
allowlist (включно з безпечними бінарними файлами). Перенаправлення залишаються непідтримуваними.
Стійка довіра allow-always не обходить це правило: ланцюжкова команда все одно потребує, щоб кожен
сегмент верхнього рівня збігався.
autoAllowSkills — це окремий зручний шлях у схваленнях exec. Це не те саме, що
ручні записи allowlist шляхів. Для строгого явного довіряння залиште autoAllowSkills вимкненим.
Використовуйте ці два елементи керування для різних завдань:
tools.exec.safeBins: малі фільтри потоків лише зі stdin.tools.exec.safeBinTrustedDirs: явні додаткові довірені каталоги для шляхів виконуваних файлів safe-bin.tools.exec.safeBinProfiles: явна політика argv для користувацьких safe bins.- список дозволених: явна довіра до шляхів виконуваних файлів.
safeBins як загальний список дозволених і не додавайте бінарні файли інтерпретаторів/середовищ виконання (наприклад, python3, node, ruby, bash). Якщо вони вам потрібні, використовуйте явні записи списку дозволених і залишайте запити на схвалення ввімкненими.
openclaw security audit попереджає, коли записи інтерпретаторів/середовищ виконання в safeBins не мають явних профілів, а openclaw doctor --fix може згенерувати каркас відсутніх користувацьких записів safeBinProfiles.
openclaw security audit і openclaw doctor також попереджають, коли ви явно додаєте bins із широкою поведінкою, як-от jq, назад у safeBins.
Якщо ви явно додаєте інтерпретатори до списку дозволених, увімкніть tools.exec.strictInlineEval, щоб форми inline code-eval і надалі вимагали нового схвалення.
Повні відомості про політику та приклади див. у схваленнях Exec і Safe bins проти списку дозволених.
Приклади
Передній план:apply_patch
apply_patch — це підінструмент exec для структурованих багатофайлових редагувань.
Він увімкнений за замовчуванням для моделей OpenAI і OpenAI Codex. Використовуйте конфігурацію лише тоді,
коли хочете вимкнути його або обмежити певними моделями:
- Доступно лише для моделей OpenAI/OpenAI Codex.
- Політика інструментів усе ще застосовується;
allow: ["write"]неявно дозволяєapply_patch. deny: ["write"]не забороняєapply_patch; явно заборонітьapply_patchабо використовуйтеdeny: ["group:fs"], коли записи патчів також мають бути заблоковані.- Конфігурація розташована в
tools.exec.applyPatch. tools.exec.applyPatch.enabledза замовчуванням має значенняtrue; задайтеfalse, щоб вимкнути інструмент для моделей OpenAI.tools.exec.applyPatch.workspaceOnlyза замовчуванням має значенняtrue(обмежено робочою областю). Задавайтеfalseлише якщо ви навмисно хочете, щобapply_patchзаписував/видаляв поза каталогом робочої області.
Пов’язане
- Схвалення Exec — шлюзи схвалення для команд оболонки
- Пісочниця — запуск команд у ізольованих середовищах
- Фоновий процес — довготривалий exec та інструмент process
- Безпека — політика інструментів і підвищений доступ