Cómo evitar bucles infinitos en un agente de n8n
Un agente que se queda dando vueltas no solo no termina la tarea: consume ejecuciones, dispara costes de API y puede saturar servicios externos. La buena noticia es que casi todos los bucles infinitos vienen de tres o cuatro causas conocidas — y todas tienen freno.
01Por qué entra en bucle
Antes de poner parches, entiende la causa. Un agente de n8n se queda en bucle normalmente por:
- Sin condición de salida clara: el agente "decide" seguir porque nunca le dijiste cuándo parar.
- Se reprocesa a sí mismo: el workflow genera un evento (un email, un registro) que vuelve a disparar el mismo workflow.
- El objetivo nunca se cumple: la condición de éxito es inalcanzable, así que reintenta para siempre.
- Reintentos mal configurados: un error se reintenta sin límite.
02Pon un límite de iteraciones (el cinturón de seguridad)
Regla de oro: ningún bucle sin tope. Lleva un contador y corta cuando se pase, aunque la tarea no esté "perfecta". Más vale parar y avisar que girar sin fin.
// nodo Code / IF — control de vueltas
const max = 5;
const n = $json.iteracion ?? 0;
if (n >= max) {
throw new Error("Límite de iteraciones alcanzado");
}
return [{ json: { ...$json, iteracion: n + 1 } }];
Conecta este nodo dentro del bucle: incrementa el contador en cada vuelta y, al llegar al máximo, lanza un error controlado que detiene la ejecución.
03Define una condición de salida explícita
Un agente necesita saber qué es "terminado". Usa un nodo IF al inicio de cada vuelta que compruebe el objetivo real, no una suposición:
- ¿Existe ya el registro que íbamos a crear? → salir.
- ¿La respuesta del modelo contiene la palabra/estructura esperada? → salir.
- ¿La cola de pendientes está vacía? → salir.
Si la condición de éxito depende de un modelo de IA, pídele que devuelva un campo claro como {"completado": true} y ramifica sobre ese campo — no sobre texto libre.
04Evita que el workflow se dispare a sí mismo
Este es el bucle más traicionero: tu automatización crea un dato (un email enviado, una fila nueva) que vuelve a activar el mismo trigger. Para cortarlo:
- Marca lo procesado: añade un campo
procesado = truey filtra al entrar para ignorar lo ya hecho (deduplicación). - Separa entrada y salida: que el workflow no escriba en la misma fuente que escucha.
- Filtra por remitente o etiqueta si el trigger es un email, para no reaccionar a tus propios envíos.
05Controla errores y reintentos
En los ajustes de cada nodo, configura Retry On Fail con un número finito (p. ej. 3) y un Wait Between Tries. Añade un Error Trigger en el workflow para que, si algo falla, te llegue un aviso (Slack, email) en lugar de reintentar en silencio para siempre.
Siempre dejo dos redes: un límite de iteraciones que corta sí o sí, y un aviso automático cuando se alcanza. Así, si un agente se descontrola, se detiene solo y me entero al instante — no a final de mes en la factura de la API.
Resumen: tope de iteraciones + condición de salida clara + deduplicación + reintentos finitos. Con esas cuatro piezas, un agente de n8n hace su trabajo y se para cuando debe — que es exactamente lo que quieres.
¿Tu automatización se comporta de forma rara?
Reviso tu workflow contigo y le ponemos frenos donde hagan falta — en 30 minutos.
Reservar consulta gratis →