Policy Boundaries en arquitectura: Qué acciones permiten los agentes

Capa gobernada que define y aplica reglas: que puede hacer el agente, que esta prohibido y que requiere aprobacion.
En esta página
  1. Idea en 30 segundos
  2. Problema
  3. Solucion
  4. Como funcionan Policy Boundaries
  5. En codigo se ve asi
  6. Como se ve en ejecucion
  7. Cuando encaja - y cuando no
  8. Encaja
  9. No encaja
  10. Problemas y fallos tipicos
  11. Como se combina con otros patrones
  12. En que se diferencia de Guarded-Policy Agent
  13. Resumen
  14. FAQ
  15. Que Sigue

Idea en 30 segundos

La capa Policy Boundaries es el limite del sistema que define que puede hacer un agente y que no.

El agente puede proponer acciones, pero la decision final siempre la toma el sistema: allow, deny o require_approval.

Cuando se necesita: cuando el agente tiene acceso a herramientas, datos u operaciones que pueden cambiar estado, gastar presupuesto o crear riesgo.

El LLM no debe controlar por si solo side effects (cambios de estado). La capa Policy Boundaries lo fuerza a nivel de arquitectura.


Problema

Sin Policy Boundaries claras, el agente empieza a actuar "demasiado libre".

Esto crea riesgos tipicos:

  • el agente ejecuta una accion sin permisos necesarios;
  • lee o envia datos sensibles;
  • el agente supera presupuesto, cuotas o numero de pasos permitidos;
  • lanza operaciones irreversibles sin aprobacion;
  • distintos servicios aplican reglas distintas y el comportamiento se vuelve impredecible.

Como resultado, aumentan los riesgos de incidentes, las auditorias son mas dificiles y los errores cuestan mas.

Solucion

Agregar Policy Boundaries como una capa gobernada separada del sistema: valida cada accion riesgosa antes de ejecutarla.

Esta capa sigue "denegar por defecto" (deny by default): solo se permite lo que esta explicitamente en la allowlist y coincide con el contexto.

Analogia: como un sistema de acceso en un centro de oficinas.

Una persona puede querer entrar a la sala de servidores, pero la puerta se abre solo con el nivel correcto de acceso.

La capa Policy Boundaries verifica del mismo modo el acceso a acciones y recursos antes de ejecutar.

Como funcionan Policy Boundaries

Policy Boundaries es una capa gobernada entre Agent Runtime y las capas de ejecucion/datos que decide: permitir accion, bloquear o enviar a aprobacion.

Diagram
Descripcion del flujo completo: Classify → Check → Decide → Enforce → Log

Classify
El sistema clasifica el tipo de accion: lectura, escritura, eliminacion, exportacion, ejecucion de codigo, gasto de presupuesto.

Check
El policy engine verifica rol, tenant, allowlist, scopes, limites de presupuesto/pasos y nivel de riesgo.

Decide
La decision debe ser explicita: allow, deny o require_approval.

Enforce
La accion se bloquea o se ejecuta con permisos restringidos via Tool Execution Layer.

Log
El log guarda la decision, reason_code, request context y el resultado de ejecucion o el bloqueo.

Este ciclo aplica a cada accion riesgosa y da comportamiento predecible incluso con errores del modelo.

En codigo se ve asi

PYTHON
class PolicyBoundaryLayer:
    def __init__(self, policy_engine, approval_queue):
        self.policy_engine = policy_engine
        self.approval_queue = approval_queue

    def authorize(self, action, context):
        request = {
            "actor_role": context["role"],
            "tenant_id": context["tenant_id"],
            "action": action["name"],
            "resource": action.get("resource"),
            "risk_level": action.get("risk_level", "medium"),
        }

        decision = self.policy_engine.evaluate(request)
        mode = decision.get("mode")

        if mode == "allow":
            return {"ok": True, "mode": "allow", "scopes": decision.get("scopes", [])}

        if mode == "require_approval":
            ticket_id = self.approval_queue.create(request=request, reason=decision["reason_code"])
            return {"ok": False, "mode": "pending_approval", "ticket_id": ticket_id}

        # Fail-closed for deny and for unexpected/unavailable policy modes.
        return {
            "ok": False,
            "mode": "deny",
            "reason_code": decision.get("reason_code", "policy_unavailable_or_invalid"),
        }

Como se ve en ejecucion

TEXT
Solicitud: "Elimina la factura INV-991 y envia datos del cliente a un CRM externo"

Step 1
Agent Runtime: forma action -> delete_invoice + export_customer_data
Runtime: envia acciones a Policy Boundaries

Step 2
Policy Boundaries: Check -> rol support_agent, riesgo high
Policy Engine: delete_invoice -> require_approval
Policy Engine: export_customer_data -> deny (reason_code: cross_system_export_blocked)

Step 3
Runtime: crea approval ticket para eliminacion
Runtime: bloquea exportacion y devuelve respuesta segura con motivo

Policy Boundaries no solo "aconseja", realmente detiene acciones peligrosas.

Cuando encaja - y cuando no

La capa Policy Boundaries se necesita donde hay riesgos reales de acceso, cambios de estado o costos. Para un prototipo local read-only puede ser complejidad innecesaria.

Encaja

SituacionPor que encaja Policy Boundaries
Hay herramientas que cambian el estado del sistemaLa capa Policy Boundaries bloquea operaciones peligrosas o exige aprobacion.
Se requiere modelo de acceso por rol y aislamiento multi-tenantPolicy rules unificadas evitan fugas entre tenants y roles.
El agente puede gastar dinero o recursos limitadosLa capa Policy Boundaries controla budget caps, quotas y require_approval para acciones costosas.
Se requiere auditoria de decisiones para complianceLa capa Policy Boundaries registra decision, reason_code y contexto para cada accion critica.

No encaja

SituacionPor que Policy Boundaries no encaja
Demo one-shot con una herramienta read-only y sin side effectsUna capa separada de Policy Boundaries puede aportar mas complejidad que valor.
El agente no decide por si mismo - todo el flow esta codificado de forma determinista en la logica de negocioNormalmente bastan verificaciones simples en la logica de negocio del servicio.

En estos casos, a veces basta una verificacion basica en codigo:

PYTHON
if role != "admin":
    raise PermissionError("denied")

Problemas y fallos tipicos

ProblemaQue pasaComo prevenir
Bypass de policy boundaryLas acciones se ejecutan directo, saltando policy checksPunto unico de entrada para herramientas, acceso directo prohibido
Fail-open cuando falla el policy engineDurante el fallo, el sistema permite por error acciones riesgosasFail-closed para operaciones write/high-risk, deny by default de emergencia
Reglas demasiado estrictasSe bloquean acciones utiles y el agente no puede terminar la tareaReglas por risk-tier, excepciones con auditoria y revision regular de politicas
Policy drift (reglas fuera de sincronizacion)La documentacion dice una cosa y el codigo valida otraPolicy-as-code, versionado y pruebas de reglas
No hay explicacion del motivo del bloqueoEl equipo no entiende por que se rechazo la accionreason_code estandarizado y logs de auditoria
Contexto incompleto para policy checkEl policy engine decide sin atributos importantes de la solicitudEnviar request context completo: actor, tenant, resource, action type, risk, budget

La mayoria de estos problemas se resuelve con un unico punto de control de policy, enfoque fail-closed y auditoria de calidad.

Como se combina con otros patrones

Policy Boundaries no reemplaza Agent Runtime ni Tool Execution Layer. Es control de acceso a nivel sistema por encima de ellos.

  • Agent Runtime - Runtime controla los pasos y Policy Boundaries verifica que acciones estan permitidas en esos pasos.
  • Tool Execution Layer - execution layer ejecuta la accion y Policy Boundaries decide si puede ejecutarse.
  • Human-in-the-Loop Architecture - las acciones riesgosas pueden pasar a require_approval.
  • Multi-Tenant - Policy Boundaries fuerza aislamiento de accesos entre tenants.

En otras palabras:

  • Agent Runtime define cuando el agente da un paso
  • La capa Policy Boundaries define que acciones en ese paso estan permitidas

En que se diferencia de Guarded-Policy Agent

Guarded-Policy AgentPolicy Boundaries en arquitectura
NivelPatron de comportamiento dentro de la logica del agenteCapa de control forzado a nivel de arquitectura
Que controlaComo el agente formula y elige accionesSi esa accion esta realmente permitida para ejecutar
Como reacciona ante error del modeloReduce riesgo, pero no garantiza bloqueoBloquea forzosamente o envia a aprobacion
Resultado claveComportamiento del agente mas seguroLimites de acceso tecnicamente garantizados + auditoria

Guarded-Policy Agent hace mas prudente el comportamiento del agente.

La capa Policy Boundaries mantiene controlada la ejecucion de acciones incluso si el agente se equivoca.

Resumen

En resumen

Policy Boundaries:

  • define que esta permitido, prohibido o requiere aprobacion
  • fuerza verificacion de rol, tenant, allowlist y riesgo de accion
  • bloquea acciones peligrosas antes de ejecutar
  • registra decisiones y reason_code para auditoria

FAQ

Q: Si ya hay Guarded-Policy Agent, aun se necesita Policy Boundaries?
A: Si. Guarded-Policy Agent mejora comportamiento, pero la capa Policy Boundaries es la que fuerza cumplimiento de reglas a nivel sistema.

Q: Donde conviene guardar policy rules?
A: Normalmente en un policy engine separado o capa policy-as-code con versiones y pruebas.

Q: Que hacer si policy engine no esta disponible?
A: Para operaciones write riesgosas, aplicar fail-closed: denegar ejecucion mientras no haya verificacion.

Q: Puede depender Policy Boundaries del entorno (dev, staging, prod)?
A: Si. Las mismas acciones suelen tener policy rules distintas segun entorno, nivel de riesgo y tipo de datos.

Que Sigue

Policy Boundaries define las reglas del juego. El siguiente paso es ver donde se aplican esas reglas dentro del sistema:

⏱️ 9 min de lecturaActualizado 7 de marzo de 2026Dificultad: ★★★
Integrado: control en producciónOnceOnly
Guardrails para agentes con tool-calling
Lleva este patrón a producción con gobernanza:
  • Presupuestos (pasos / topes de gasto)
  • Permisos de herramientas (allowlist / blocklist)
  • Kill switch y parada por incidente
  • Idempotencia y dedupe
  • Audit logs y trazabilidad
Mención integrada: OnceOnly es una capa de control para sistemas de agentes en producción.
Autor

Esta documentación está curada y mantenida por ingenieros que despliegan agentes de IA en producción.

El contenido es asistido por IA, con responsabilidad editorial humana sobre la exactitud, la claridad y la relevancia en producción.

Los patrones y las recomendaciones se basan en post-mortems, modos de fallo e incidentes operativos en sistemas desplegados, incluido durante el desarrollo y la operación de infraestructura de gobernanza para agentes en OnceOnly.