gateway или node). Это
предохранитель: команды разрешены только тогда, когда policy + allowlist +
(необязательное) подтверждение пользователя согласованы. Подтверждения exec накладываются поверх
политики инструментов и elevated gating (если только elevated не установлен в full, что
пропускает подтверждения).
Обзор режимов deny, allowlist, ask, auto, full, сопоставления
Codex Guardian и разрешений ACPX harness см. в разделе
Режимы разрешений.
Итоговая policy — более строгая из
tools.exec.* и значений по умолчанию
для подтверждений; если поле подтверждений опущено, используется значение
tools.exec. Host exec также использует локальное состояние подтверждений на этой машине:
локальное для хоста ask: "always" в файле подтверждений хоста исполнения продолжает
запрашивать подтверждение, даже если значения по умолчанию сеанса или конфигурации требуют ask: "on-miss".Проверка итоговой policy
| Команда | Что показывает |
|---|---|
openclaw approvals get / --gateway / --node <id|name|ip> | Запрошенную policy, источники policy хоста и итоговый результат. |
openclaw exec-policy show | Объединенное представление локальной машины. |
openclaw exec-policy set / preset | Синхронизирует локальную запрошенную policy с локальным файлом подтверждений хоста за один шаг. |
host=node, exec-policy show сообщает, что
эта область управляется node во время выполнения, вместо того чтобы делать вид, что локальный
файл подтверждений является источником истины.
Если UI companion app недоступен, любой запрос, который обычно
требовал бы подтверждения, разрешается через ask fallback (по умолчанию: deny).
Где это применяется
Подтверждения exec применяются локально на хосте исполнения:- Хост Gateway → процесс
openclawна машине gateway. - Хост Node → runner node (macOS companion app или headless-хост node).
Модель доверия
- Вызывающие стороны, аутентифицированные через Gateway, считаются доверенными операторами для этого Gateway.
- Спаренные nodes расширяют эту возможность доверенного оператора на хост node.
- Подтверждения exec снижают риск случайного выполнения, но не являются границей аутентификации на пользователя или политикой файловой системы только для чтения.
- После подтверждения команда может изменять файлы в соответствии с выбранными разрешениями файловой системы хоста или sandbox.
- Подтвержденные запуски на хосте node привязывают канонический контекст исполнения: канонический cwd, точный argv, привязку env при наличии и закрепленный путь к исполняемому файлу, когда применимо.
- Для shell-скриптов и прямых вызовов файлов интерпретатора/среды выполнения OpenClaw также пытается привязать один конкретный локальный файловый операнд. Если этот привязанный файл изменится после подтверждения, но до выполнения, запуск будет отклонен вместо выполнения изменившегося содержимого.
- Привязка файлов намеренно выполняется по принципу best-effort и не является полной семантической моделью каждого пути загрузчика интерпретатора/среды выполнения. Если режим подтверждения не может определить ровно один конкретный локальный файл для привязки, он отказывается создавать запуск, основанный на подтверждении, вместо того чтобы притворяться, что покрытие полное.
Разделение macOS
- Сервис хоста node пересылает
system.runв приложение macOS через локальный IPC. - Приложение macOS применяет подтверждения и выполняет команду в контексте UI.
Настройки и хранение
Подтверждения хранятся в локальном JSON-файле на хосте исполнения. КогдаOPENCLAW_STATE_DIR задан, файл следует этому каталогу состояния;
иначе используется стандартный каталог состояния OpenClaw:
$OPENCLAW_STATE_DIR/exec-approvals.sock или
~/.openclaw/exec-approvals.sock, когда переменная не задана.
Пример схемы:
Ручки policy
tools.exec.mode
tools.exec.mode — предпочтительная нормализованная поверхность policy для host exec.
Значения:
deny- блокировать host exec.allowlist- запускать только команды из allowlist без запроса.ask- использовать policy allowlist и спрашивать при промахах.auto- использовать policy allowlist, запускать детерминированные совпадения напрямую и отправлять промахи подтверждения через нативного auto reviewer OpenClaw перед откатом к маршруту подтверждения человеком.full- запускать host exec без запросов подтверждения.
tools.exec.security / tools.exec.ask остаются поддерживаемыми и по-прежнему имеют приоритет,
когда заданы в более узкой области сеанса или агента.
exec.security
deny- блокировать все запросы host exec.allowlist- разрешать только команды из allowlist.full- разрешать все (эквивалентно elevated).
exec.ask
Настроенная policy запросов для host exec. Управляет базовым поведением
запроса подтверждения из
tools.exec.ask и значений по умолчанию подтверждений хоста. Параметр инструмента
ask для отдельного вызова (см. Инструмент Exec)
может только ужесточить эту базу, а вызовы модели из каналов игнорируют его,
когда итоговое значение host ask равно off.off- никогда не запрашивать.on-miss- запрашивать только когда allowlist не совпадает.always- запрашивать для каждой команды. Долговременное довериеallow-alwaysне подавляет запросы, когда итоговый режим ask равенalways.
askFallback
Решение, когда требуется запрос, но UI недоступен. Если это
поле опущено, OpenClaw по умолчанию использует
deny.deny- блокировать.allowlist- разрешать только если allowlist совпадает.full- разрешать.
tools.exec.strictInlineEval
Когда
true, OpenClaw рассматривает формы встроенного code-eval как требующие только подтверждения,
даже если сам бинарный файл интерпретатора находится в allowlist. Defense-in-depth
для загрузчиков интерпретаторов, которые не отображаются чисто на один стабильный файловый
операнд.python -cnode -e,node --eval,node -pruby -eperl -e,perl -Ephp -rlua -eosascript -e
allow-always не сохраняет для них новые записи allowlist
автоматически.
tools.exec.commandHighlighting
Управляет только представлением в запросах подтверждения exec. Когда включено,
OpenClaw может прикреплять полученные парсером диапазоны команд, чтобы Web-запросы
подтверждения могли подсвечивать токены команды. Установите
true, чтобы включить
подсветку текста команды.security, ask, сопоставление allowlist,
строгое поведение inline-eval, пересылку подтверждений или выполнение команд.
Ее можно задать глобально в tools.exec.commandHighlighting или для
агента в agents.list[].tools.exec.commandHighlighting.
Режим YOLO (без подтверждений)
Если вы хотите, чтобы host exec запускался без запросов подтверждения, нужно открыть оба слоя policy: запрошенную exec policy в конфигурации OpenClaw (tools.exec.*) и локальную для хоста policy подтверждений в
файле подтверждений хоста исполнения.
OpenClaw по умолчанию задает пропущенный askFallback как deny. Явно задайте
хостовый askFallback как full, когда запрос подтверждения без UI должен
откатываться к разрешению.
| Слой | Настройка YOLO |
|---|---|
tools.exec.security | full на gateway/node |
tools.exec.ask | off |
Хостовый askFallback | full |
--permission-mode bypassPermissions, когда итоговая exec
policy OpenClaw является YOLO. Для управляемых OpenClaw живых сеансов Claude итоговая
exec policy OpenClaw имеет приоритет над нативным режимом разрешений Claude:
YOLO нормализует live-запуски к --permission-mode bypassPermissions, а
ограничительная итоговая exec policy нормализует live-запуски к
--permission-mode default, даже если raw-аргументы backend Claude указывают другой
режим.
Если нужна более консервативная настройка, ужесточите exec policy OpenClaw обратно до
allowlist / on-miss или deny.
Постоянная настройка “никогда не запрашивать” для хоста gateway
Локальный ярлык
- Локальные
tools.exec.host/security/ask. - Локальные значения по умолчанию файла подтверждений, включая
askFallback: "full".
openclaw approvals set --gateway или
openclaw approvals set --node <id|name|ip>.
Хост Node
Для хоста node примените тот же файл подтверждений на этом node:Ограничения только локального режима:
openclaw exec-policyне синхронизирует подтверждения node.openclaw exec-policy set --host nodeотклоняется.- Подтверждения exec для node извлекаются из node во время выполнения, поэтому обновления, нацеленные на node, должны использовать
openclaw approvals --node ....
Ярлык только для сеанса
/exec security=full ask=offизменяет только текущий сеанс./elevated full— это аварийный shortcut, который пропускает утверждения exec только когда и запрошенная политика, и файл утверждений хоста разрешаются вsecurity: "full"иask: "off". Более строгий файл хоста, напримерask: "always", по-прежнему запрашивает подтверждение.
Список разрешений (для каждого агента)
Списки разрешений задаются для каждого агента. Если существует несколько агентов, переключите агента, которого вы редактируете, в приложении macOS. Шаблоны сопоставляются как glob. Шаблоны могут быть glob-шаблонами разрешенных путей к бинарным файлам или glob-шаблонами простых имен команд. Простые имена совпадают только с командами, вызванными черезPATH, поэтому rg может совпасть с
/opt/homebrew/bin/rg, когда команда — rg, но не с ./rg или
/tmp/rg. Используйте glob пути, когда хотите доверять одному конкретному
расположению бинарного файла.
Устаревшие записи agents.default при загрузке мигрируются в agents.main.
Цепочки shell вроде echo ok && pwd по-прежнему требуют, чтобы каждый сегмент верхнего уровня
удовлетворял правилам списка разрешений.
Примеры:
rg~/Projects/**/bin/peekaboo~/.local/bin/*/opt/homebrew/bin/rg
Ограничение аргументов с помощью argPattern
ДобавьтеargPattern, когда запись списка разрешений должна совпадать с бинарным файлом и
конкретной формой аргументов. OpenClaw вычисляет регулярное выражение
по разобранным аргументам команды, исключая токен исполняемого файла
(argv[0]). Для записей, созданных вручную, аргументы соединяются
одним пробелом, поэтому закрепляйте шаблон, когда нужно точное совпадение.
python3 safe.py; python3 other.py не попадает в список разрешений.
Если для того же бинарного файла также присутствует запись только по пути, несовпавшие
аргументы все еще могут откатиться к этой записи только по пути. Не добавляйте запись только по пути,
если цель — ограничить бинарный файл объявленными аргументами.
Записи, сохраненные потоками утверждения, могут использовать внутренний формат с разделителем для
точного сопоставления argv. Предпочитайте UI или поток утверждения для повторного создания таких
записей вместо ручного редактирования закодированного значения. Если OpenClaw не может
разобрать argv для сегмента команды, записи с argPattern не совпадают.
Каждая запись списка разрешений поддерживает:
| Поле | Значение |
|---|---|
pattern | Glob разрешенного пути к бинарному файлу или glob простого имени команды |
argPattern | Необязательное regex для argv; пропущенные записи работают только по пути |
id | Стабильный UUID, используемый для идентичности в UI |
source | Источник записи, например allow-always |
commandText | Текст команды, захваченный при создании записи потоком утверждения |
lastUsedAt | Метка времени последнего использования |
lastUsedCommand | Последняя совпавшая команда |
lastResolvedPath | Последний разрешенный путь к бинарному файлу |
Автоматическое разрешение CLI Skills
Когда включено Автоматическое разрешение CLI Skills, исполняемые файлы, на которые ссылаются известные Skills, считаются разрешенными на узлах (узел macOS или headless хост узла). Для получения списка bin-файлов skills используетсяskills.bins через Gateway RPC.
Отключите это, если нужны строгие ручные списки разрешений.
Безопасные bin-файлы и пересылка утверждений
О безопасных bin-файлах (быстрый путь только через stdin), деталях привязки интерпретатора и о том, как пересылать запросы утверждения в Slack/Discord/Telegram (или запускать их как нативные клиенты утверждений), см. Утверждения exec — расширенные настройки.Редактирование в Control UI
Используйте карточку Control UI → Узлы → Утверждения exec, чтобы редактировать defaults, переопределения для отдельных агентов и списки разрешений. Выберите область (Defaults или агент), настройте политику, добавьте/удалите шаблоны списка разрешений, затем нажмите Save. UI показывает метаданные последнего использования для каждого шаблона, чтобы список было проще поддерживать в порядке. Селектор цели выбирает Gateway (локальные утверждения) или узел. Узлы должны объявлятьsystem.execApprovals.get/set (приложение macOS или
headless хост узла). Если узел еще не объявляет утверждения exec,
редактируйте его локальный файл утверждений напрямую.
CLI: openclaw approvals поддерживает редактирование Gateway или узла — см.
CLI утверждений.
Поток утверждения
Когда требуется запрос, Gateway рассылаетexec.approval.requested клиентам операторов. Control UI и приложение macOS
разрешают его через exec.approval.resolve, затем Gateway пересылает
утвержденный запрос хосту узла.
Для host=node запросы утверждения включают каноническую полезную нагрузку systemRunPlan.
Gateway использует этот план как авторитетный
контекст command/cwd/session при пересылке утвержденных запросов system.run.
Это важно при задержке асинхронного утверждения:
- Путь exec узла заранее подготавливает один канонический план.
- Запись утверждения сохраняет этот план и его метаданные привязки.
- После утверждения финальный пересланный вызов
system.runповторно использует сохраненный план вместо доверия более поздним правкам вызывающей стороны. - Если вызывающая сторона изменяет
command,rawCommand,cwd,agentIdилиsessionKeyпосле создания запроса утверждения, Gateway отклоняет пересланный запуск как несоответствие утверждению.
Системные события
Жизненный цикл exec отображается как системные сообщения:Exec running(только если команда превышает порог уведомления о выполнении).Exec finished.
runId в этих
сообщениях для простой корреляции.
Поведение при отклоненном утверждении
Когда асинхронное утверждение exec отклонено, OpenClaw считает команду хоста терминальной и закрытой с отказом. Для сеансов основного агента отказ доставляется как внутреннее последующее сообщение сеанса, которое сообщает агенту, что асинхронная команда не запускалась. Это сохраняет непрерывность transcript, не раскрывая устаревший вывод команды. Если доставка в сеанс недоступна, OpenClaw откатывается к краткому отказу для оператора или прямого чата, когда существует безопасный маршрут.Следствия
fullдает большие полномочия; по возможности предпочитайте списки разрешений.askоставляет вас в цикле контроля, при этом сохраняя быстрые утверждения.- Списки разрешений для каждого агента предотвращают утечку утверждений одного агента к другим.
- Утверждения применяются только к запросам exec хоста от авторизованных отправителей. Неавторизованные отправители не могут выполнять
/exec. /exec security=full— это удобство уровня сеанса для авторизованных операторов, которое намеренно пропускает утверждения. Чтобы жестко заблокировать exec хоста, установите security утверждений вdenyили запретите инструментexecчерез политику инструментов.
Связанные материалы
Exec approvals - advanced
Безопасные bin-файлы, привязка интерпретатора и пересылка утверждений в чат.
Exec tool
Инструмент выполнения shell-команд.
Elevated mode
Аварийный путь, который также пропускает утверждения.
Sandboxing
Режимы sandbox и доступ к workspace.
Security
Модель безопасности и усиление защиты.
Sandbox vs tool policy vs elevated
Когда использовать каждый механизм управления.
Skills
Поведение автоматического разрешения на основе Skills.