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 на хосте. Отключение допустимо для доверенных сценариев; для недоверенных запросов — интерактивный режим с подтверждением.