Policy as Code for Agents в 2026: когда правила должны жить в коде, а не только в prompt
Policy as code for agents в 2026: machine-enforced rules для tool calls, approvals, routing и output validation вместо одних текстовых инструкций.
Policy as code for agents в 2026 нужна потому, что текстовые инструкции полезны, но слабы там, где системе нужно обязательное, воспроизводимое и проверяемое ограничение. Как только речь заходит о tool permissions, approvals, output contracts, data access или unsafe side effects, policy должна перестать быть только prose и стать machine-enforced rule.
Иначе команда получает знакомую проблему: prompt говорит одно, а реальный runtime по факту всё ещё может сделать другое.
Policy as code означает, что важные правила формулируются не только словами для модели, но и как проверяемые условия в системе. Например, "нельзя отправлять внешнее письмо без approval" должно быть не рекомендацией в prompt, а правилом, которое код реально умеет заблокировать.
Самый опасный anti-pattern - считать system prompt единственным policy layer. Он может направлять поведение, но не даёт жёсткой гарантии для risky actions, tenant boundaries, approvals и output handling.
policy changes должны быть versioned и observable;
prompt policy и enforced policy должны быть согласованы, но не подменять друг друга.
Без техники
В system prompt написано: `не отправляй внешние письма без подтверждения`.
С техникой
Runtime policy проверяет `send_external_email` и блокирует вызов без approval token. Prompt помогает модели, но enforce делает код.
ПромптPolicy intuition
Где лучше задавать правило `refund > $100 требует approval`: в prompt или в code?
Ответ модели
В production правило должно быть и в prompt, и в code, но именно code должен быть authoritative enforcement layer. Иначе risky path остаётся на уровне надежды.
Если нарушение правила может привести к деньгам, внешнему side effect, data leak или policy incident, правило должно быть enforceable кодом, а не только сформулировано словами.
def enforce_policy(action, context):
if action.name == "issue_refund" and action.amount > 100 and not context.approval_token:
return "deny"
if action.name == "send_external_email" and context.tenant == "demo":
return "deny"
return "allow"
Практический совет: policy as code полезнее всего там, где она ограничивает не модель как таковую, а реальные последствия её решений. Именно этот слой превращает agent stack из "умного демо" в управляемую production-систему.
Проверьте себя
1. Почему policy as code нужна поверх prompt policy?
2. Что особенно хорошо подходит для policy as code?