Patrón Guarded-Policy Agent: Acciones seguras por reglas

Implementa un policy-gate que permite, bloquea, reescribe o escala acciones riesgosas del agente para una ejecucion segura y auditable.
En esta página
  1. Esencia Del Patron
  2. Problema
  3. Solucion
  4. Como Funciona
  5. En Codigo Se Ve Asi
  6. Como Se Ve En Ejecucion
  7. Cuando Encaja - Y Cuando No
  8. Encaja
  9. No Encaja
  10. Diferencia Frente A Supervisor Agent
  11. Cuando Usar Guarded-Policy (vs Otros Patrones)
  12. Como Combinar Con Otros Patrones
  13. Resumen
  14. Ventajas Y Desventajas
  15. FAQ
  16. Que Sigue

Esencia Del Patron

Guarded-Policy Agent es un patron donde antes de cada accion se aplica un policy-gate: allow, deny, rewrite o escalate segun reglas formalizadas.

Cuando usarlo: cuando las acciones del agente deben pasar verificaciones formales de reglas antes de ejecutarse.


La idea es simple: el agente puede proponer cualquier cosa, pero solo se ejecutan los pasos que pasan la verificacion de politicas.

Guardrails de policy normalmente revisan:

  • tools y parametros permitidos
  • limites de acceso a datos
  • limites de budget/time
  • nivel de riesgo de la accion

Patron Guarded-Policy Agent: acciones seguras por reglas

Problema

Imagina un escenario bancario: se debe transferir 100$, pero por error se ingresan 10,000$.

Si un sistema sin verificaciones solo dice "ejecutar", la accion pasa a prod.

Incluso cuando:

  • el cliente no tiene ese saldo
  • el monto supera el limite del rol
  • la cuenta destino es externa y requiere validaciones adicionales

Sin un policy gate tecnico, el agente puede ejecutar una accion peligrosa incluso cuando es obvio que no deberia pasar.

Ese es el problema: sin restricciones, cualquier accion puede ejecutarse, aunque sea:

  • peligrosa
  • demasiado costosa
  • violando reglas de acceso

Solucion

Guarded-Policy Agent introduce verificaciones obligatorias antes de cada accion.

Analogia: es como un torniquete con control de acceso. Aunque una persona quiera pasar, primero se validan permisos y reglas. Sin aprobacion, el sistema no deja continuar la accion.

Principio clave: el modelo puede proponer cualquier paso, pero solo se ejecutan pasos que pasan el policy gate.

Cada accion pasa por:

  1. verificacion de permisos
  2. verificacion de presupuesto/limites
  3. verificacion de acceso a datos
  4. evaluacion de riesgo

Despues de eso, policy-engine devuelve una decision:

  • permitir (allow) - ejecutar
  • reescribir (rewrite) - reemplazar por variante segura
  • bloquear (deny) - bloquear
  • escalar (escalate) - pasar a una persona

Esto protege de escenarios donde el agente puede:

  • escribir en vez de leer
  • extraer datos sensibles
  • lanzar una consulta costosa
  • hacer una operacion destructiva

Funciona bien si:

  • el agente no tiene acceso directo a tools
  • la ejecucion ocurre solo por policy-engine
  • cada accion pasa obligatoriamente por allow/deny/rewrite/escalate

La confiabilidad del agente no es solo "buena intencion", sino acciones que tecnicamente no puede ejecutar fuera de reglas.

Como Funciona

Diagram

Policy-gate no ejecuta la accion por si mismo. Decide si puede ejecutarse y en que forma.

Flujo completo: Propose → Check Policy → Enforce → Execute/Block

Proponer accion
El agente forma el intent: que tool, con que argumentos y por que ese paso.

Revisar policy
Policy revisa intent: allowlist/blocklist, scope de acceso, limites de presupuesto, runtime state (quota, spend), sensibilidad de datos.

Aplicar decision
Policy-engine devuelve decision de enforcement: allow, deny, rewrite o escalate.

Ejecutar/Bloquear
El sistema ejecuta la accion o detiene el flow con stop reason transparente.

En Codigo Se Ve Asi

PYTHON
action = agent.next_action(context)

decision = policy_engine.evaluate(
    action=action,
    user_role=user_role,
    budget_state=budget_state,
)

if decision.type == "allow":
    result = execute(action)
elif decision.type == "rewrite":
    context.append(decision.reason)
    return agent.next_action(context)  # proponer de nuevo por el mismo gate
elif decision.type == "escalate":
    result = human_approval(action)
else:
    result = stop_with_reason(decision.reason)

return result

Principio clave: agent intent y ejecucion son capas distintas. Policy se ubica entre intent y ejecucion (execution).

El modelo no tiene acceso directo a ejecucion, solo a traves de una capa de ejecucion policy-gated (execution layer).

Como Se Ve En Ejecucion

TEXT
Goal: "Exporta todos los clientes a CSV y envialos por correo externo"

Agent action:
- tool: export_customers
- params: include_pii=true
- destination: external_email

Policy check:
- rule: PII export to external channels = deny
- decision: bloquear (block)
- reason: policy.pii_exfiltration_guard

Result:
- la accion no se ejecuto
- se devolvio una negativa controlada

Ejemplo completo de agente Guarded-Policy

PYPython
TSTypeScript · pronto

Cuando Encaja - Y Cuando No

Encaja

SituacionPor Que Guarded-Policy Encaja
✅Hay tools/datos riesgosos y acceso a operaciones sensiblesEl policy gate bloquea acciones peligrosas antes de ejecutarlas.
✅Necesitas limites de compliance/securityLas reglas se enforcean tecnicamente, no solo por instrucciones de prompt.
✅Importa la explicabilidad de decisionesSe puede mostrar claramente allow/deny y el motivo.
✅El costo del error es alto: dinero, seguridad, riesgo legalEl control preventivo reduce probabilidad de errores costosos.

No Encaja

SituacionPor Que Guarded-Policy No Encaja
❌Read-only sandbox sin acciones riesgosasUna capa separada de policy aporta poco valor extra.
❌Reglas no formalizadasSi las reglas no pueden validarse formalmente, el enforcement no sera confiable.
❌No hay recursos para mantener el set de politicasSin versionado y tests, la capa de policy se degrada rapido.

Porque la capa de policy agrega complejidad de ingenieria: reglas, tests de reglas y actualizacion continua para procesos de negocio.

Diferencia Frente A Supervisor Agent

Guarded-PolicySupervisor Agent
Rol principalAplica automaticamente reglas de policy estrictas a cada accionSupervisa decisiones del agente de forma mas amplia: riesgos, calidad y necesidad de escalacion
Cuando intervieneEn cada paso antes de ejecutarEn pasos clave o dudosos del proceso
Tipo de decisionesallow / deny / rewrite / escalateapprove / revise / block / escalate
Cuando elegirloCuando necesitas una "barrera" tecnica que no se pueda saltarCuando necesitas supervision de proceso y control de decisiones complejas

Guarded-Policy es una barrera tecnica "por reglas".

Supervisor Agent es control de supervision "segun la situacion".

Cuando Usar Guarded-Policy (vs Otros Patrones)

Usa Guarded-Policy cuando necesitas detener acciones riesgosas antes de ejecutarlas segun reglas de policy claras.

Prueba rapida:

  • si necesitas "check allow/deny antes de la accion" -> Guarded-Policy
  • si necesitas "recuperarte despues de un error ya ocurrido" -> Fallback-Recovery Agent
Comparacion con otros patrones y ejemplos

Chuleta rapida:

Si la tarea se ve asi...Usa
Necesitas una verificacion corta antes de la respuesta finalReflection Agent
Necesitas critica profunda por criterios y reescritura de respuestaSelf-Critique Agent
Necesitas recuperarte tras timeout, exception o caida de herramientaFallback-Recovery Agent
Necesitas checks estrictos de policy antes de accion riesgosaGuarded-Policy Agent

Ejemplos:

Reflection: "Antes de la respuesta final, revisa rapido logica, completitud y errores obvios".

Self-Critique: "Evalua la respuesta por checklist (precision, completitud, riesgos), luego reescribe".

Fallback-Recovery: "Si API no responde, haz retry -> fuente fallback -> escalacion".

Guarded-Policy: "Antes de enviar datos al exterior, revisa policy: si esto esta permitido".

No sabes si tu caso ya necesita control policy estricto? Diseñar tu agente →

Como Combinar Con Otros Patrones

  • Guarded-Policy + ReAct: cada accion en el ciclo pasa primero por policy-check y luego se ejecuta.
  • Guarded-Policy + Supervisor: Supervisor decide cuando escalar, y policy-engine aplica automaticamente reglas duras.
  • Guarded-Policy + Fallback-Recovery: si una accion se bloquea o un paso falla, el agente cambia a un fallback permitido y seguro.

Resumen

En resumen

Guarded-Policy Agent:

  • Revisa cada accion antes de ejecutar
  • Aplica reglas de policy de forma obligatoria
  • Bloquea o escala pasos inseguros
  • Reduce riesgo de fallas y violaciones de compliance

Ventajas Y Desventajas

Ventajas

bloquea acciones inseguras antes de ejecutar

protege mejor datos y accesos

las reglas son faciles de testear y auditar

facilita cumplir requisitos de seguridad

Desventajas

las politicas requieren mantenimiento continuo

reglas demasiado estrictas frenan el flujo

errores en reglas pueden bloquear de mas

FAQ

Q: Se puede reemplazar verificacion de policy solo con instrucciones de prompt?
A: No. Prompt opera en nivel de intent, pero no controla ejecucion. Policy debe aplicarse en la capa runtime.

Q: Que es mejor: allowlist o blocklist?
A: Para sistemas de alto riesgo, es mas seguro empezar con allowlist: solo se permiten acciones definidas de forma explicita.

Q: Que hacer si una regla es demasiado estricta y bloquea una accion util?
A: Agregar excepciones controladas: scope, condiciones por rol o ruta con aprobacion humana en lugar de deny total.

Que Sigue

El enfoque Guarded-Policy protege al agente de acciones inseguras antes de ejecutar.

Pero que hacer cuando el agente necesita ejecucion de codigo segura en un entorno aislado?

⏱️ 11 min de lectura • Actualizado 6 de marzo de 2026Dificultad: ★★★
Continuación práctica

Ejemplos de implementación del patrón

Continúa con la implementación usando proyectos de ejemplo.

Implementar en OnceOnly
Pattern-specific prompts stay in your codebase. OnceOnly handles policy enforcement, dedupe, and audit.
Usar en OnceOnly
from onceonly import OnceOnly

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

client.gov.policy_from_template(
    agent_id="billing-agent",
    template="moderate",
    overrides={
        "allowed_tools": ["stripe.charge", "send_email"],
        "max_spend_usd_per_day": 75.0,
    },
)

result = client.ai.run_tool(
    agent_id="billing-agent",
    tool="stripe.charge",
    args={"amount": 9999, "currency": "usd", "order_id": "ord_123"},
    run_id="run_billing_ord_123",
    spend_usd=0.25,
)
if not result.allowed:
    raise RuntimeError(result.policy_reason)
Integrated: pattern runtime boundaryOnceOnly
Ship agent patterns without rebuilding control-plane primitives
Keep pattern logic in your app, and use OnceOnly for policy, dedupe, and incident controls:
  • Execute side-effect tools through `client.ai.run_tool(...)`.
  • Attach budgets and allowlists with `client.gov.upsert_policy(...)`.
  • Propagate `run_id` across steps for end-to-end traceability.
  • Branch on `allowed / decision / policy_reason` safely.
  • Avoid duplicate writes when retries happen across workers.
Practical shortcut: you can keep your current pattern architecture and add this boundary instead of building governance infra from scratch.
Pattern Integration (Python SDK)
from onceonly import OnceOnly

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

client.gov.upsert_policy({
    "agent_id": "support-agent",
    "max_actions_per_hour": 400,
    "allowed_tools": ["kb.search", "ticket.reply"],
    "blocked_tools": ["user.delete"],
})

step = client.ai.run_tool(
    agent_id="support-agent",
    tool="kb.search",
    args={"query": "refund policy"},
    run_id="run_support_042",
    spend_usd=0.02,
)
if not step.allowed:
    raise RuntimeError(step.policy_reason)

Autor

Nick — ingeniero que construye infraestructura para agentes de IA en producción.

Enfoque: patrones de agentes, modos de fallo, control del runtime y fiabilidad del sistema.

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


Nota editorial

Esta documentación está asistida por IA, con responsabilidad editorial humana sobre la exactitud, la claridad y la relevancia en producción.

Los ejemplos son educativos y pueden utilizar herramientas y datos simulados. Antes de usarlos en producción, verifica la fiabilidad, la seguridad y la recuperación en tu propio entorno.