Lección 4 de 7 · intermedio · 12 min
Controla el loop: turnos, presupuesto, effort y permisos
Pon límites al agente con max_turns y max_budget_usd, ajusta el razonamiento con effort y decide qué herramientas puede usar.
Límites del loop
Por defecto el loop no tiene límite de turnos ni de costo. En producción siempre conviene fijarlos:
opts = ClaudeAgentOptions(
max_turns=20, # cuenta solo los turnos que usan herramientas
max_budget_usd=1.0, # incluye el gasto de subagentes
effort="medium", # "low" | "medium" | "high" | "xhigh" | "max" (según el modelo)
)
Si se alcanza un límite, el ResultMessage llega con error_max_turns o error_max_budget_usd.
Permisos: quién decide qué se ejecuta
La documentación de permisos define el orden de evaluación: hooks → reglas deny → reglas ask → modo de permiso → reglas allow → callback can_use_tool. Tres ideas prácticas:
allowed_toolsaprueba automáticamente lo listado, pero no prohíbe lo demás.disallowed_tools=["Bash"]quita la herramienta del contexto;"Bash(rm *)"solo bloquea las llamadas que coinciden.- Para un agente cerrado:
allowed_tools+permission_mode="dontAsk". Fija siempre el modo de forma explícita.
| Modo | Uso típico |
|---|---|
default |
Pregunta antes de acciones sensibles |
acceptEdits |
Acepta ediciones de archivos (generar un módulo) |
plan |
Planifica sin ejecutar cambios (revisiones) |
dontAsk |
Rechaza todo lo que no esté permitido |
Regla de oro para Odoo: el agente nunca debe tener credenciales de producción con permisos de escritura amplios. Usa un usuario técnico con permisos mínimos.
← Anterior
Tu primer agente en Python conectado a Odoo
Siguiente →
Hooks: audita y bloquea lo que hace el agente
Practica con 5 casos reales
Descarga la guía gratuita con agentes Python para Odoo, de Junior a Senior.
Quiero la guía →