Mi Agente de IA Ha Entrado en un Bucle Infinito: Cómo Pararlo y Prevenirlo
¿Tu agente de IA (Cline, Cursor, Claude Dev) no para de ejecutar comandos en bucle? Por qué ocurre, cómo detenerlo sin perder tu trabajo y cómo prevenirlo.
Tabla de contenidos
Son las 11 de la noche. Le pides a Cline que “arregle el error de TypeScript en el módulo de auth”. Aceptas la primera edición. El agente ejecuta el build. Falla con otro error. Edita otro archivo. Build de nuevo. Falla de nuevo. Edita. Build. Falla. Edita.
Miras la factura de la API: 47 llamadas en 3 minutos. $4.20 quemados.
El agente estaba en un bucle infinito — intentando arreglar un error que su propio fix anterior creó. Es el problema más caro y frustrante de los agentes de IA autónomos.
Por qué los agentes entran en bucle
El ciclo clásico: fix → nuevo error → fix → error original
Iteración 1: Error — "Type 'string' is not assignable to type 'number'"
→ Fix: cambia el tipo a string
Iteración 2: Error — "Argument of type 'string' is not assignable to parameter of type 'number'"
→ Fix: cambia el parámetro a string
Iteración 3: Error — "Type 'string' is not assignable to type 'number'" (en otro archivo)
→ Fix: cambia ese tipo también
Iteración 4: Error — el tipo original que cambió en iteración 1 ahora falla
→ Vuelve al inicio. Bucle infinito.
El agente no tiene memoria de su estrategia. Cada iteración la trata como un problema nuevo. No sabe que ya intentó la misma solución hace 3 pasos.
Las 5 situaciones que provocan bucles
| Situación | Por qué falla el agente |
|---|---|
| Errores de tipos en cadena | Arreglar un tipo rompe otro archivo que depende de él |
| Imports circulares | A importa B, B importa A — el agente no detecta el ciclo |
| Configuración de build | tsconfig, webpack, vite.config — el agente cambia opciones al azar |
| Tests que fallan por mocks | Actualiza el código pero no los mocks, o viceversa infinitamente |
| Errores de permisos/entorno | El agente no puede arreglar lo que no es código (PATH, permisos de archivo) |
Cómo parar un agente en bucle
1. Parada inmediata
| Herramienta | Cómo parar |
|---|---|
| Cline / Claude Dev | Botón “Cancel” en la barra del agente, o cierra la pestaña del chat |
| Cursor | Escape o botón “Stop” en la ventana del composer |
| Aider | Ctrl+C en la terminal |
| GitHub Copilot Agent | Botón “Stop” en el panel de chat |
2. Si no responde al cancel
# Mata la terminal integrada de VS Code
# Ctrl+Shift+P → "Terminal: Kill Active Terminal"
# O cierra VS Code directamente — no perderás archivos (auto-save)
3. Recuperar tu código tras un bucle
# Ver qué archivos cambió el agente
git diff --name-only
# Ver los cambios exactos
git diff
# Deshacer TODO lo que hizo el agente
git checkout .
# O, si hay cambios que sí querías, deshaz archivo por archivo
git checkout -- src/archivo-que-no-quieres.ts
Si usas Aider, cada iteración es un commit — puedes hacer
git revertdel último commit del agente sin perder nada.
Cómo prevenir los bucles
1. Configura un límite de iteraciones
Cline: En la configuración de la extensión:
{
"cline.maxIterations": 5,
"cline.autoApprove": false // NUNCA actives auto-approve sin límite
}
Cursor: En Settings → AI → Max iterations: pon 5-10 como máximo.
API directa: Si tienes tu propio loop de agente:
const MAX_ITERATIONS = 5;
let iterations = 0;
while (hasErrors && iterations < MAX_ITERATIONS) {
const fix = await agent.suggestFix(currentError);
await applyFix(fix);
const result = await runBuild();
hasErrors = !result.success;
iterations++;
if (iterations >= MAX_ITERATIONS) {
console.log('⚠️ Límite de iteraciones alcanzado. Revisión manual necesaria.');
break;
}
}
2. No le des autonomía total
// ❌ Prompt peligroso
"Arregla todos los errores de TypeScript del proyecto hasta que compile"
// ✅ Prompt controlado
"Arregla el error de tipo en src/auth/service.ts línea 45.
Solo modifica ese archivo. Si el fix requiere cambiar otros archivos,
dime cuáles ANTES de hacerlo."
3. Divide los errores en tareas pequeñas
En vez de “arregla los 15 errores de TypeScript”, haz:
Tarea 1: "Arregla el error en src/auth/service.ts:45"
→ Verifica que compila
Tarea 2: "Arregla el error en src/users/controller.ts:12"
→ Verifica que compila
...
Un error a la vez. Si un fix introduce un error nuevo, lo detectas inmediatamente.
4. Usa el modo “Dry Run” o “Plan”
Antes de que el agente ejecute cambios, pídele un plan:
ANTES de hacer cambios, analiza el error y dame:
1. Qué archivos necesitas modificar
2. Qué cambio harás en cada uno
3. Qué otros archivos podrían verse afectados
NO hagas cambios todavía. Solo el plan.
Revisa el plan. Si ves que va a tocar 10 archivos para un “error simple”, probablemente el agente no entiende el problema y va a entrar en bucle.
5. Guarda un checkpoint antes de cada tarea del agente
# Antes de darle una tarea al agente
git add -A && git commit -m "checkpoint: antes de refactor auth"
# Si el agente la lía, vuelves al checkpoint
git reset --hard HEAD
Coste real de un bucle: Caso con números
Un bucle típico de 20 iteraciones con Cline + Claude Sonnet 4:
| Concepto | Tokens | Coste |
|---|---|---|
| Input por iteración (código + instrucciones) | ~8.000 | $0.024 |
| Output por iteración (fix + explicación) | ~2.000 | $0.030 |
| 20 iteraciones | 200.000 | $1.08 |
Con Claude Opus 4 el mismo bucle cuesta ~$6.40. Con GPT-4.1 cuesta ~$1.60.
Si el agente está en modo autónomo y nadie lo para, puede hacer 100+ iteraciones antes de que llegues al límite de la API. Eso son $5-30 quemados por un error que podrías haber arreglado manualmente en 5 minutos.
Para controlar estos costes, revisa cómo programar con IA sin arruinarte y caveman prompting para ahorrar tokens.
Checklist anti-bucle
- Límite de iteraciones configurado (5-10 max)
- Auto-approve desactivado
- Commit/checkpoint antes de cada tarea del agente
- Tareas pequeñas y específicas (un error a la vez)
- Plan antes de ejecución en tareas complejas
-
git diffdespués de cada tarea para revisar los cambios - Rate limit o presupuesto diario configurado en la API
Artículos relacionados
- Errores comunes al configurar Copilot, Cline y Cursor en VS Code — problemas de configuración
- Aider: programar con IA desde la terminal — el agente que hace commits automáticos (fácil de revertir)
- Error 429 Too Many Requests — qué hacer cuando el bucle agota tus rate limits