Agent Governance: контроль і управління AI-агентами в production

Практичний production-фреймворк контролю AI-агентів: доступи, ліміти, approval, audit logs, kill switch і rollback.
На цій сторінці
  1. Ідея за 30 секунд
  2. Проблема
  3. Рішення
  4. Governance ≠ Safety
  5. Приклад
  6. Рівні контролю (governance layers)
  7. Як це виглядає в архітектурі
  8. Мінімальний stack governance
  9. Приклад
  10. Типові помилки
  11. Самоперевірка
  12. FAQ
  13. Пов'язані сторінки

Ідея за 30 секунд

Agent governance — це шар контролю поверх runtime, який перевіряє кожен крок агента: доступ до інструментів, ліміти, бюджети і policy-рішення перед виконанням дій.

Коли це потрібно: коли агент має доступ до інструментів, API або виконує реальні дії в production.

Проблема

Без governance агент у production часто виглядає "майже нормальним", поки не стається збій. Він може багато разів викликати інструменти, витрачати бюджет без прогресу і виконувати дії, які ніхто явно не дозволяв.

Найгірше, що це видно не одразу: зовні run "йде", а всередині вже ростуть ризики, витрати і шум у логах. Без governance агент — це неконтрольований цикл з доступом до інструментів.

Аналогія: це як автопілот у машині без обмеження швидкості, гальм і журналу подій. Поки дорога пряма, все ніби добре. Коли щось іде не так, зупинити і розібратися набагато складніше.

Саме для цього потрібен governance: щоб система мала межі до інциденту, а не після нього.

Рішення

Рішення — додати в runtime окремий policy layer, який перед кожною дією приймає технічне рішення. Policy layer приймає одне з рішень: allow, deny або approval_required. Це окремий рівень системи, а не частина промпта чи логіки моделі. Як і RBAC, ці перевірки виконуються перед кожною дією агента.

Governance — це те, що стоїть між агентом і реальними діями. Іншими словами, це control plane для AI-агентів.

👉 Governance не змушує агента поводитись правильно — він обмежує, що агент взагалі може зробити.

Реалізується як middleware / policy layer (наприклад, у LangGraph або кастомному tool gateway). У цій статті policy layer (tool gateway) — це компонент, який перевіряє і контролює всі виклики інструментів.

Governance ≠ Safety

Це два різні рівні контролю:

  • Safety: чи правильне рішення пропонує агент.
  • Governance: чи дозволено агенту цю дію виконати в runtime.

Якщо safety помилилась, governance все одно обмежує збиток на рівні runtime.

Приклад

Агент підтримки без governance може через галюцинацію викликати refund API десятки разів.

З governance:

  • max_tool_calls = 3
  • max_usd = 100 → агент зупиниться після досягнення ліміту, а не після втрати грошей.

Governance зупиняє інцидент на рівні виконання, а не покладається на те, що модель поводитиметься правильно.

Рівні контролю (governance layers)

Ці рівні працюють разом на кожному кроці агента.

РівеньЩо контролюєКлючові механікиНавіщо
Access controlДоступ до дій та інструментівRBAC
allowlist / denylist
Перевіряється перед кожним tool call і блокує недозволені дії
Execution controlХід виконання runmax_steps
rate limiting
ліміти на tool calls
Зупиняє зациклення і спам інструментами
Cost controlВитратиmax_tokens
max_tool_calls
max_usd
Обмежує бюджет і runaway-витрати
Human controlВтручання людиниhuman approval
kill switch
Дозволяє підтвердити або аварійно зупинити дію
ObservabilityВидимість подійaudit logs
traces
метрики
alerts (Slack / PagerDuty)
Дозволяє швидко виявляти і розбирати інциденти
Lifecycle controlОновлення агентаversioning
rollback
Дозволяє безпечно релізити зміни і відкотити версію

Приклад alert:

Slack alert: 🛑 Agent Support-Bot hit max_usd limit ($100). Run stopped at step 12.

У production це зазвичай виглядає як dashboard з метриками: runs, tool calls, cost, errors.

Як це виглядає в архітектурі

Agent governance вбудовується між runtime агента і зовнішнім світом:

Жоден tool call не виконується без проходження через policy layer.

Policy layer (tool gateway) виступає як gateway / middleware між runtime і tools.

Кожен виклик інструмента проходить:

  • Policy layer → перевірка доступу і лімітів
  • Execution → виконання тільки якщо allow
  • Logs → запис у audit / trace

Мінімальний stack governance

  • allowlist (default deny) — обмежує доступ до інструментів
  • max_steps — зупиняє зациклення
  • бюджети — обмежують витрати
  • retry policy — запобігає retry-хаосу
  • audit logs — дозволяють розібрати інциденти
  • stop reasons — пояснюють, чому агент зупинився
  • kill switch — дозволяє аварійно зупинити агента під час інциденту

Це мінімум, без якого агент не є production-системою.

Приклад

Агент викликає tool:

  • перевіряється allowlist
  • перевіряється RBAC
  • перевіряється budget
  • перевіряється approval

→ тільки після цього виконується дія.

Мінімальний policy flow:

PYTHON
if not policy.allow(tool, args):
    return deny("tool_not_allowed")
if not limits.steps_ok():
    return stop("max_steps_exceeded")
if not budget.ok():
    return stop("budget_exceeded")
result = tool.execute(args)
audit.log(tool, args, result)
return result

Типові помилки

  • покладатися тільки на prompt замість runtime-контролю
  • відсутність централізованого policy layer
  • відсутність default-deny allowlist
  • відсутність бюджетів і лімітів
  • retry-логіка розмазана по різних шарах
  • відсутні audit logs
  • немає способу зупинити агента

У результаті система виглядає контрольованою, але насправді такою не є.

Самоперевірка

Швидка перевірка перед запуском у production:

Прогрес: 0/8

⚠ Бракує базового governance-контролю

Перед production потрібні мінімум: контроль доступу, ліміти, audit logs і аварійна зупинка.

FAQ

Q: Чому governance не можна замінити одним системним prompt?
A: Prompt описує бажану поведінку. Governance примусово обмежує реальні дії агента в runtime.

Q: Який мінімум governance потрібен перед production?
A: Мінімум: default-deny allowlist, ліміти (max_steps, бюджети), stop reason, audit logs і kill switch. Без цього агент лишається неконтрольованим під навантаженням.

Q: Що впроваджувати першим: approval чи budgets?
A: Спочатку став runtime-ліміти й бюджети, щоб одразу обмежити базовий ризик на кожному run. Потім додавай approval для ризикових і незворотних дій (write-операції, фінансові зміни, видалення даних).

Q: Чи достатньо kill switch для безпеки?
A: Ні. Kill switch потрібен як аварійне гальмо, але він не заміняє постійний контроль доступу, бюджети, rate limits і аудит дій.

Q: Як технічно реалізується kill switch?
A: Зазвичай це простий глобальний прапорець (наприклад, у Redis), який policy layer перевіряє перед кожним кроком і зупиняє виконання.

Пов'язані сторінки

Далі за темою:

⏱️ 6 хв читання • Оновлено 24 березня 2026 р.Складність: ★★★
Реалізувати в OnceOnly
Keep governance policy in one place and enforce it on every tool call without duplicating custom middleware.
Використати в OnceOnly
from onceonly import OnceOnly

client = OnceOnly(api_key="once_live_...")
agent_id = "billing-agent"

client.gov.upsert_policy({
    "agent_id": agent_id,
    "allowed_tools": ["stripe.charge", "send_email"],
    "blocked_tools": ["user.delete"],
    "max_spend_usd_per_day": 50.0,
})

# Incident response
client.gov.disable_agent(agent_id, reason="incident:abnormal_charge_pattern")
# After triage
client.gov.enable_agent(agent_id, reason="incident_resolved")
Integrated: policy as codeOnceOnly
Centralize agent governance in one control plane
Move limits and permissions out of scattered app conditionals into enforceable governance APIs:
  • Set policy with `gov.upsert_policy(...)` or templates.
  • Apply per-tool limits with `max_calls_per_tool`.
  • Use kill switch (`disable_agent`) during incidents.
  • Review policy outcomes with `agent_logs(...)`.
  • Track spend and blocked actions via `agent_metrics(...)`.
Інтегрована згадка: OnceOnly — контрольний шар для продакшен агент-систем.
Governance Operations (Python SDK)
from onceonly import OnceOnly

client = OnceOnly(api_key="once_live_...")

client.gov.upsert_policy({
    "agent_id": "billing-agent",
    "max_actions_per_hour": 120,
    "max_spend_usd_per_day": 40.0,
    "allowed_tools": ["stripe.charge", "send_email"],
    "max_calls_per_tool": {"stripe.charge": 25},
})

logs = client.gov.agent_logs("billing-agent", limit=20)
metrics = client.gov.agent_metrics("billing-agent", period="day")

Автор

Микола — інженер, який будує інфраструктуру для продакшн AI-агентів.

Фокус: патерни агентів, режими відмов, контроль рантайму та надійність систем.

🔗 GitHub: https://github.com/mykolademyanov


Редакційна примітка

Ця документація підготовлена з допомогою AI, із людською редакторською відповідальністю за точність, ясність і продакшн-релевантність.

Приклади є навчальними й можуть використовувати імітовані інструменти та дані. Перед використанням у production перевірте надійність, безпеку й відновлення у власному середовищі.