ZeptoClaw: approval-гейт и остановка на сложных запросах

Дата: 2026-10-28 Версия: zeptoclaw 0.9.2, контейнер zeptoclaw-agent-a Связанные файлы: zeptoclaw-runbook.md, 251006_zeptoclaw+yGPT.md

Симптом

  • zeptoclaw agent -m "Привет!" — отвечает.

  • zeptoclaw agent -m "сообщи свои технические характеристики" — печатает вопрос об одобрении и завершается. В логе: Tool requires approval, blocking execution tool=shell.

Причина

Агент решил вызвать инструмент shell. Approval-гейт включён по умолчанию, а shell входит в список опасных инструментов. В non-interactive режиме (-m) подтвердить некому, поэтому процесс завершается после вопроса. Запрос без вызова инструментов работает.

Значения ApprovalConfig по умолчанию (0.9.2):

enabled: true policy: RequireForDangerous dangerous_tools: ["shell", "write_file", "edit_file", "google"] require_for: [] auto_approve_timeout_secs: 0

Флаг --mode autonomous approval-гейт не отключает (проверено).

Решения

1. Интерактивный режим

Подтверждать запросы по ходу диалога:

docker exec -it -e HOME=/data zeptoclaw-agent-a zeptoclaw agent

На вопрос об одобрении ответить yes.

2. Отключить гейт для одноразовых запусков (проверено)

jq '. + {approval: {enabled: false}}' ~/zeptoclaw-data/config.json \ | docker exec -i -u 0 zeptoclaw-agent-a sh -c 'cat > /data/.zeptoclaw/config.json'

Затем:

docker exec -e HOME=/data zeptoclaw-agent-a zeptoclaw agent --no-stream -m "сообщи свои технические характеристики"
  • agent -m читает конфиг при каждом запуске; gateway — docker restart zeptoclaw-agent-a.

  • Проверено: после enabled: false команда echo ZTEST123 выполняется без запроса.

  • Правка через docker exec -u 0 нужна потому, что контейнер возвращает владельца /home/a/zeptoclaw-data на свои UID.

3. Сузить гейт

Оставить проверку включённой, но настроить политику:

"approval": { "enabled": true, "policy": "RequireForTools", "require_for": ["shell"] }

Доступные по документации варианты политики: AlwaysAllow, AlwaysRequire, RequireForTools, RequireForDangerous. Точное написание значений в JSON не проверено — валидатор zeptoclaw config check неизвестные значения игнорирует. Дополнительно: dangerous_tools, auto_approve_timeout_secs (автоодобрение через N секунд).

Безопасность

При approval.enabled: false любой запрос сможет выполнять shell в контейнере. Контейнер изолирован, но в него смонтирован ~/zeptoclaw-data и есть доступ к прокси y2o на хосте. Отключение допустимо для доверенных сценариев; для недоверенных запросов — интерактивный режим с подтверждением.

Источники