Approval Workflow
Human-in-the-loop для высокорисковых операций
🔧 Team и выше
Как работает
- Агент отправляет команду через MCP (flowlink_exec)
- Shield анализирует команду: 7-уровневый pipeline
- Risk score ≥ threshold → команда ставится в очередь на одобрение
- Уведомление отправляется через Telegram / Webhook / SSE
- Approver просматривает команду и принимает решение
- Approve → команда выполняется / Reject → логируется как заблокированная
Настройка через политики
bash
# Требовать одобрение для rm команд
curl -X POST https://relay.example.com/api/v1/policies \
-H "Authorization: Bearer $TOKEN" \
-d '{
"name": "rm-approval",
"action": "block",
"pattern": "rm -rf*",
"approval_required": true,
"description": "rm -rf commands require human approval"
}'
# Требовать одобрение для всех destructive команд
curl -X POST https://relay.example.com/api/v1/policies \
-H "Authorization: Bearer $TOKEN" \
-d '{
"name": "destructive-approval",
"action": "block",
"pattern": "chmod 777|mkfs|dd if=|:(){",
"approval_required": true
}'Управление заявками
Список ожидающих
bash
curl https://relay.example.com/api/approvals \ -H "Authorization: Bearer $TOKEN"
Одобрить
bash
curl -X POST https://relay.example.com/api/approvals/${REQUEST_ID}/approve \
-H "Authorization: Bearer $TOKEN" \
-d '{"approver": "admin", "reason": "Verified safe — only /tmp cleanup"}'Отклонить
bash
curl -X POST https://relay.example.com/api/approvals/${REQUEST_ID}/reject \
-H "Authorization: Bearer $TOKEN" \
-d '{"approver": "admin", "reason": "Potential data loss risk"}'Уведомления
Telegram
Кнопки Approve/Reject прямо в чате. Настройте Telegram Bot в /docs/telegram.
Webhook
HTTP POST с событием approval_requested. Ваша система может одобрить автоматически.
SSE (Server-Sent Events)
Real-time stream через GET /api/events для dashboard интеграции.
Auto-Approve для доверенных агентов
Для CI/CD агентов можно настроить auto-approve на определённые паттерны, чтобы не блокировать pipeline. Используйте параметр always_approve при создании политики.
bash
curl -X POST https://relay.example.com/api/approvals/${REQUEST_ID}/approve \
-H "Authorization: Bearer $TOKEN" \
-d '{"approver": "ci-bot", "always_approve": "git:*"}'