Cuando le encargas a Claude Code un trabajo algo largo, a veces se detiene de golpe en mitad de la respuesta con este mensaje.

API Error: Connection lost mid-response. The response above may be incomplete.

Si buscas ese texto tal cual, aparece muy poca información. El motivo está claro: es un nombre relativamente nuevo. La referencia oficial de errores de Claude Code lo dice con estas mismas palabras: «antes de v2.1.227, Connection lost mid-response se mostraba como Connection closed mid-response». Es decir, el fenómeno existía desde antes y lo único que cambió fue la palabra que aparece en pantalla: closed pasó a ser lost. Como todo lo que ya se había escrito en la red usa el nombre antiguo, quien busca por el nombre nuevo se queda sin encontrar nada.

Este artículo parte de ese cambio de nombre y ordena, apoyándose solo en la documentación oficial y en las incidencias públicas, seis cosas: 1) el significado exacto del mensaje, 2) qué hacer ahora mismo delante de la pantalla, 3) por qué no se reintenta de forma automática, 4) cómo aislar la capa donde se corta, 5) los ajustes mediante variables de entorno y 6) la diferencia con otros mensajes muy parecidos. Allí donde entra algo de conjetura, lo etiqueto con su nivel de certeza.

EN RESUMEN
1. AHORA MISMO
La salida sigue ahí

Lo que ya salió por pantalla no se ha borrado. Si respondes continue, la documentación oficial indica que retoma desde el último bloque completado.

2. LA CUESTIÓN DEL NOMBRE
Es closed renombrado

Antes de v2.1.227 se mostraba como Connection closed mid-response. La información escrita con el nombre antiguo te sirve igual.

3. SI SE REPITE
Aísla la capa

La solución cambia según si el corte ocurre en tu equipo, en el camino o del lado del servidor. Hay informes en los que el HTTPS puro pasa y solo Claude Code se cae.

1. Lo primero que hay que hacer: la salida en pantalla no se ha perdido

Antes de ponerse a arreglar nada, conviene despejar el malentendido más frecuente. Aunque salga este mensaje, todo el contenido que ya había aparecido en pantalla se conserva. No se tira.

La referencia oficial de errores explica así el grupo de mensajes que terminan en «The response above may be incomplete.»: si el streaming falla después de que Claude haya completado un bloque de texto o una llamada de herramienta, reenviar la petición podría ejecutar dos veces esa misma llamada, así que Claude Code conserva lo ya completado y añade esta nota en lugar de descartar el turno.

Por lo tanto, solo hay tres cosas que hacer.

PASO 1
Lee la salida que ha quedado

Claude Code conserva todos los bloques completados, pero descarta el último bloque que estuviera a medias cuando termina el turno. Lo que falta suele ser una o dos frases finales, o la última llamada de herramienta.

PASO 2
Responde continue

Es el procedimiento de recuperación oficial. Hace que siga desde el último bloque completado. No repitas la instrucción desde cero: acabarías ejecutando otra vez operaciones que ya se hicieron.

PASO 3
Comprueba las operaciones con efectos

Si el corte llegó en mitad de una escritura de archivo o de un comando, lo que manda para saber hasta dónde se ejecutó es el registro en pantalla. Mira el estado real con git status antes de seguir.

Fuera de las sesiones interactivas continúa solo. Según la referencia oficial, en las sesiones no interactivas como la ejecución con -p, el Agent SDK o las sesiones en la nube, si la respuesta cortada es solo texto y no incluye llamadas de herramienta, Claude Code le pide a Claude que siga por su cuenta, hasta tres veces seguidas como máximo. Esta nota aparece únicamente cuando esas continuaciones ya se han agotado. Los subagentes continúan solos de la misma forma.

2. La definición oficial: los cuatro mensajes de corte a media respuesta

Lo primero que conviene entender es que este texto es una nota que añade el propio Claude Code, no el cuerpo de una respuesta de error devuelta por la API. Por eso, aunque la experiencia sea siempre «se cortó a la mitad», Claude Code cambia la última parte del texto según la causa. La referencia oficial enumera estos cuatro casos.

API Error: Server error mid-response. The response above may be incomplete.
API Error: Connection lost mid-response. The response above may be incomplete.
API Error: Your computer went to sleep mid-response. The response above may be incomplete.
API Error: The response stopped arriving. The response above may be incomplete.
EL TEMA DE ESTE ARTÍCULO
Connection lost mid-response

La explicación oficial cabe en una frase: la conexión se perdió. El flujo llegaba bien, pero la conexión que lo transportaba desapareció.

FALLO EN EL SERVIDOR
Server error mid-response

Un overloaded o un 5xx aparecido en mitad del flujo. Según la documentación oficial, este texto existe a partir de v2.1.199; antes se descartaba la salida parcial y se marcaba todo el turno como error.

COSA DE TU EQUIPO
Your computer went to sleep mid-response

Cuando Claude Code detecta que el ordenador se suspendió durante la respuesta. Al volver da la conexión por rota y deja de leer.

SILENCIO, NO CORTE
The response stopped arriving

Cuando la conexión sigue abierta pero dejan de llegar datos y el temporizador de vigilancia del flujo corta. No es una desconexión sino una parada, y tanto la causa como la solución son otras.

Lo primero es leer con precisión cuál de los cuatro te ha tocado. La experiencia de «se cortó a la mitad» parece idéntica en todos, pero Claude Code ya ha discriminado la causa antes de elegir el texto. Si pone lost, su veredicto es que la conexión se perdió, no que el servidor devolviera un 5xx ni que se agotara un tiempo de espera.

3. En v2.1.227 se renombró de «closed» a «lost»

Aquí está el centro de este artículo. La referencia oficial de errores coloca, justo después de esas cuatro explicaciones, esta advertencia.

«Antes de v2.1.227, Connection lost mid-response se mostraba como Connection closed mid-response, y The response stopped arriving se mostraba como Response stalled mid-stream».
Referencia oficial de errores de Claude Code, traducción propia

O sea que se cambiaron dos textos a la vez. Puesta en tabla, la correspondencia queda así.

Texto anterior a v2.1.227 Texto actual Significado oficial
Connection closed mid-response Connection lost mid-response La conexión se perdió
Response stalled mid-stream The response stopped arriving La conexión sigue abierta pero dejaron de llegar datos
Connection closed while thinking, before producing a response Connection lost before a response was produced Se cortó antes de que saliera ni un carácter, sin salida parcial
Response stalled while thinking, before producing a response The response stalled before a response was produced Se paró con la conexión abierta antes de salir ni un carácter

Ojo con la tercera fila: no es el mensaje de este artículo. mid-response significa «se cortó después de que hubiera salido parte de la respuesta» y before a response was produced significa «se cortó sin que saliera ni un carácter». Entran en el mismo cambio de nombre, pero tienen otro significado y otro comportamiento posterior. Lo veremos en detalle en el capítulo siguiente.

Qué cambia cuando conoces este renombrado

En la práctica tiene tres efectos.

La información antigua te sirve igual

Si buscas «Connection closed mid-response», aparecen de golpe muchas más incidencias de GitHub y muchos más artículos. Es el mismo fenómeno, no hay que reinterpretar nada.

Sirve para situar tu versión

Si en pantalla pone lost, sabes que ese Claude Code es v2.1.227 o posterior. Si pone closed, es anterior.

Ayuda a detectar incidencias duplicadas

Como el mismo fenómeno está reportado con dos nombres, si no buscas con los dos textos se te escapan informes que ya existían.

🟡 No consta en el CHANGELOG. Este renombrado está escrito solo en la documentación oficial: hasta donde he podido comprobar, la entrada de v2.1.227 del CHANGELOG oficial no menciona el cambio de texto. Visto desde fuera, un día la palabra cambió sin más. Que el texto sea distinto no significa que haya aparecido un error nuevo.

⚠️ Antes de v2.1.222 el aviso podía ser directamente falso. La referencia oficial de errores deja escrito que «las versiones de Claude Code anteriores a v2.1.222 emitían esta notificación también cuando la conexión se perdía o se estancaba después de completarse la respuesta, y reportaban como error un turno que estaba completo». Es decir, en las versiones antiguas puede aparecer el error aunque toda la salida haya llegado. Si claude --version te devuelve algo menor que 2.1.222, actualiza antes de empezar a diagnosticar: puede que el error que ves no exista.

4. Por qué no se reintenta de forma automática

No es que Claude Code no haga nada. Según el apartado «Automatic retries» de la referencia oficial, los fallos transitorios se reintentan solos hasta diez veces con retroceso exponencial. Que aun así aparezca este mensaje significa que Claude Code ha decidido que aquí no debe reintentar.

Lo único que decide la bifurcación es si Claude ya había completado algo.

SE REINTENTA
Corte antes de completar nada

Si la conexión cae sin que Claude haya completado ninguna parte de la respuesta, ni siquiera el razonamiento, Claude Code reenvía la petición con el mismo retroceso y el turno continúa. Da igual que el texto ya hubiera empezado a fluir.

Si el razonamiento ya terminó pero no ha empezado ni el texto ni ninguna llamada de herramienta, reenvía hasta dos veces con intervalos cortos y, si sigue cayendo, cierra el turno con Connection lost before a response was produced.

NO SE REINTENTA, EL CASO DE ESTE ARTÍCULO
Corte tras completar un bloque

Si el corte llega después de haber completado un bloque de texto o una llamada de herramienta, o de haberla iniciado tras el razonamiento, Claude Code no reenvía la petición. El motivo es que podría ejecutar dos veces la misma llamada de herramienta.

En su lugar conserva lo completado, ejecuta las llamadas de herramienta ya completas y sigue el turno a partir de ese resultado. Y entonces añade esta nota.

El diseño parece incómodo, pero en realidad se inclina al lado seguro. Si reenviara solo, las operaciones con efectos secundarios como reescribir un archivo o ejecutar un comando correrían dos veces con cada corte. Por eso la documentación oficial recomienda responder continue en lugar de reenviar: es la única vía que no obliga a repetir el trabajo ya hecho.

Qué se ve en pantalla durante los reintentos

Mientras corre un reintento, junto al indicador de progreso aparece la cuenta atrás Retrying in Ns · attempt x/y. La etiqueta empieza siendo API error, pero a partir de v2.1.198 cambia al motivo concreto desde el tercer intento; si CLAUDE_CODE_MAX_RETRIES es menor que tres, cambia en el último intento.

Además, si la petición sigue viva pero pasan veinte segundos sin datos, aparece el aviso Waiting for API response · will retry in … · check your network en una fase en la que todavía no ha fallado nada. Es un indicador de que aún no ha fallado, y la cuenta atrás marca el momento en que Claude Code cortará la conexión estancada. Según la documentación oficial, ese umbral eran diez segundos antes de v2.1.185, con otro texto.

5. ¿Dónde se está cortando? Las tres capas

Que te digan solo «la conexión se perdió» no basta para decidir qué hacer. Los sitios donde puede cortarse son básicamente tres, y cada uno se comprueba de una forma distinta.

CAPA 1
Tu equipo y tu línea

Cambios de red wifi, microcortes de la línea móvil, suspensión del equipo, reconexiones del cliente VPN.

Cómo comprobarlo: mira si se reproduce por cable o en otra línea. Si la causa es la suspensión, aparece un texto específico para ello y ahí ya lo tienes aislado.

CAPA 2
El camino: proxy y pasarelas

Proxy corporativo, inspección TLS, pasarelas de LLM, VPN. No es raro que un equipo intermedio considere inactivo un flujo que lleva mucho rato abierto y lo corte.

Cómo comprobarlo: mira si se reproduce quitando HTTPS_PROXY. Revisa la línea de proxy con /status.

CAPA 3
El servidor y la reutilización de conexiones

Una incidencia del servicio, o una conexión reutilizada que en realidad estaba muerta. Se reconoce porque la línea local está sana y aun así sigue cayendo.

Cómo comprobarlo: consulta status.claude.com. Si se reproduce igual en varias líneas, el problema no es solo tuyo.

Una cuarta posibilidad que se pasa por alto: la rotación de certificados mTLS. En entornos corporativos que usan certificado de cliente, sustituir el certificado y la clave provoca errores de nivel de conexión, como reinicios de conexión o fallos de handshake TLS. Según la documentación oficial de configuración de red, Claude Code vuelve a leer ambos archivos ante esos errores de conexión y reintenta con el par nuevo. Pero esa relectura es un comportamiento de v2.1.232 en adelante; antes se quedaba con el par antiguo hasta reiniciar o volver a aplicar la configuración. Se comprueba viendo si en el registro de claude --debug aparece Stale connection — reloaded rotated mTLS client material.

6. Qué probar ahora: lista de comprobación

Está ordenada de arriba abajo por mayor efecto y menor esfuerzo. Comprueba si se reproduce después de cada intento.

# Qué hacer Para qué
1Responder continueLo primero es no dar por perdido el trabajo. Es más rápido que repetir y no arriesga una doble ejecución
2Actualizar Claude Code a la última versiónEl comportamiento de la conexión cambia entre versiones. En v2.1.198 se corrigió que un corte de red breve a media respuesta interrumpiera el turno
3Partir el turno en trozos más cortosSepara «leer muchos archivos y escribir un informe» en lectura y redacción. Reduce el tiempo que el flujo pasa abierto
4Reproducirlo sin VPN ni proxyAísla la capa 2. Si al quitarlos se arregla, sospecha de un corte por inactividad en el camino
5Reproducirlo en otra líneaAísla las capas 1 y 3. Si pasa igual en varias líneas, el problema no es solo tuyo
6Revisar los ajustes de suspensiónSi la pantalla se apaga en mitad de respuestas largas, puede que la conexión se rompa antes de que salga el texto específico de suspensión
7Consultar status.claude.comComprobación de la capa 3. Ante un 529, el propio Claude Code muestra ese nombre de host en pantalla
8Registrar la sesión con claude --debugEl registro sale en ~/.claude/debug/<session-id>.txt. Adjúntalo cuando reportes el problema
9Comprobar si estás usando un proxy SOCKSLa documentación oficial deja escrito que los proxy SOCKS no están soportados. Si lo usas, cambia de camino
«Pero en el Claude del navegador va bien» no sirve como criterio. El chat de claude.ai y la CLI de Claude Code ni establecen la conexión igual ni la mantienen abierta el mismo tiempo. Es perfectamente posible que uno funcione y el otro se caiga; de hecho, la incidencia #85979 que veremos luego describe justo esa situación. Conviene no dar por hecho que «la cuenta está bien, luego es un problema de configuración».

7. Ajustar temporizadores y reintentos con variables de entorno

Claude Code tiene cuatro temporizadores independientes para cortar un flujo que se ha quedado en silencio. La lista que recoge la documentación oficial de configuración de red es esta.

Temporizador Cuándo corta Tiempo de espera por defecto
First-byte deadline Tras enviar, no llega ninguna cabecera de respuesta 180 s con la API directa y 300 s en el resto, más 1 s por cada 32 KB de cuerpo de la petición
Event-level watchdog No se puede parsear ningún evento de la respuesta 300 s, activo con todos los proveedores
Byte-level watchdog No llega ni un byte, ni siquiera los ping de keep-alive de SSE 180 s con la API directa y 300 s en el resto
Body idle timeout Pasan cinco minutos sin recibir bytes 5 minutos, pensado para proveedores distintos de la API directa

Ahora bien, lo que estos temporizadores producen al cortar es, en principio, el texto del lado «silencio», que no es el mensaje de este artículo. Los incluyo porque hace falta conocer los valores por defecto para distinguir los dos casos, no porque «salga lost, así que alarguemos el temporizador». Si trabajas tras un proxy y sufres silencios largos, tocar estos valores sí cambia los síntomas del lado de la parada.

Del lado de los reintentos, se ajustan con estas variables.

Variable de entorno Por defecto Efecto
CLAUDE_CODE_MAX_RETRIES 10 Número de reintentos. Desde v2.1.186 el máximo es 15. En los scripts se recomienda bajarlo para fallar antes
CLAUDE_CODE_RETRY_WATCHDOG Sin definir Para sesiones desatendidas como CI. Con 1 reintenta los 429 y 529 de forma indefinida y, desde v2.1.199, sube a 300 el número por defecto para los errores transitorios, cortes incluidos
API_TIMEOUT_MS 600000 Tiempo de espera por petición, en milisegundos, o sea diez minutos. Súbelo en líneas lentas o tras un proxy
CLAUDE_BYTE_STREAM_IDLE_TIMEOUT_MS Sin definir Tiempo de espera solo para la vigilancia de bytes. Se acota entre 10 segundos y 30 minutos
CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS Sin definir Fija directamente el plazo hasta el primer byte. Disponible desde v2.1.242
⚠️ Subir el número de reintentos no reduce este mensaje. Como vimos en el capítulo 4, es una nota que aparece justo donde Claude Code evita reintentar a propósito. Subir CLAUDE_CODE_MAX_RETRIES sirve para el otro tipo de fallo, el que cae antes de que salga la respuesta, y no hace nada por lo que se cortó a la mitad. Lo que sí sirve es acortar cada turno.

8. Cómo distinguirlo de los mensajes parecidos

Puede que esta sea la parte más útil para quien lee. Aunque la experiencia de «se paró a la mitad» sea común, el texto que muestra Claude Code cambia, y con él la causa y la solución. Lo ordeno incluyendo la correspondencia con los artículos que ya hay en este sitio.

Texto que aparece en pantalla Qué está pasando Dónde leer
Connection lost mid-response Se perdió la conexión tras salir parte de la respuesta Este artículo
Connection closed mid-response Nombre antiguo del mismo fenómeno, anterior a v2.1.227 El artículo sobre closed, que recoge los informes de la época del nombre antiguo
The response stopped arriving
Antes: Response stalled mid-stream
La conexión sigue viva pero se queda en silencio y el temporizador corta El artículo sobre stalled, atento al encadenamiento con el bucle de repeticiones
Server error mid-response Un 5xx u overloaded del servidor a mitad del flujo El artículo sobre el 529 y el 500
Your computer went to sleep mid-response Claude Code detectó que el equipo se suspendió durante la respuesta Revisa los ajustes de energía y suspensión, en el capítulo 6 de este artículo
Connection lost before a response was produced Se cortó sin que saliera ni un carácter, sin salida parcial Entra en los reintentos. Ver el capítulo 4 de este artículo
Unable to connect o errores de certificado SSL Directamente no se llega a conectar El artículo sobre red y proxy
Aparecen etiquetas court o invoke en el cuerpo No es la comunicación: la llamada de herramienta no se ejecuta El artículo sobre la etiqueta court

La bifurcación más importante es si llegó a aparecer respuesta en pantalla. Si no salió ni un carácter, toca sospechar de la conexión y de la configuración: proxy, certificados, cortafuegos. Si salió parte, eso demuestra que la conexión funcionaba, así que es más correcto pasar al diagnóstico de este artículo que ponerse a tocar ajustes.

La segunda bifurcación: ¿corte o silencio?

Que la conexión se haya perdido o que siga abierta callada lleva a movimientos opuestos.

Si es corte (lost)

Sospecha del camino y de la reutilización de conexiones. Alargar los tiempos de espera no sirve de nada: no se agotó el tiempo, es que la conexión ha desaparecido.

Si es silencio (stopped arriving)

Aquí sí entran los temporizadores. Ajustar CLAUDE_BYTE_STREAM_IDLE_TIMEOUT_MS y compañía tiene margen de efecto, y también cabe sospechar que el modelo esté callado mucho rato.

9. Informes reales: el caso del ECONNRESET que no para

Lo más molesto es el patrón en el que la línea local está perfectamente sana y solo Claude Code sigue cayéndose. Hay dos informes públicos con un trabajo de verificación bastante amplio. Ambos están reportados con el nombre nuevo de este artículo o incluyen el texto de la versión inmediatamente anterior.

Incidencia #86473, v2.1.229 y Windows 11
El HTTPS puro pasa y solo la CLI se corta

Quien reporta escribe que, tras Connection dropped (ECONNRESET) · Retrying in 17s · attempt 6/10, aparece API Error: Connection lost mid-response.. Y añade que tanto un POST de 60 KB con curl como un POST del mismo tamaño con https.request de Node.js puro terminan correctamente, y que un SSE largo desde otro host tampoco se interrumpió.

Comprobó la MTU, revisó los LSP de Winsock, lo reprodujo con una configuración mínima y lo reprodujo en dos redes sin relación entre sí, y aun así sigue sin resolverse. La incidencia #86473 está marcada como duplicada pero continúa abierta.

Incidencia #85979, v2.1.228 y Windows 11
En el mismo equipo la versión web va bien

Aquí es Connection dropped (ECONNRESET) · Retrying in 0s · attempt 4/10. Quien reporta desinstaló por completo el antivirus y descartó los filtros de VPN, el proxy, IPv6 y Winsock reiniciándolo, y escribe que lo reprodujo igual en tres redes: wifi de la oficina, wifi de casa y datos compartidos del móvil.

Muestra el contraste de que, con el mismo equipo y la misma cuenta, el chat de claude.ai funciona sin problemas. La incidencia #85979 también sigue abierta, marcada como inactiva.

🟡 Sobre el nivel de certeza de este capítulo. Los dos casos anteriores son informes de particulares, no explicaciones oficiales de Anthropic sobre la causa. En el #85979 quien reporta escribe que el soporte le dijo que «el fallo relacionado con la reutilización de conexiones antiguas debería estar corregido a partir de v2.1.227», pero que tras actualizar volvió a reproducirse: eso es una cita que hace el autor del informe de su conversación con el soporte, no una postura oficial publicada. Lo mismo ocurre con las dos franjas horarias de incidencia mencionadas en el #86473, que quien reporta dice haber recibido del soporte. No conviene leerlos como un fenómeno con condiciones de reproducción confirmadas.

Aun así, de estos dos casos se saca algo práctico: que el ping pase o que curl funcione no demuestra que este error no vaya a ocurrir. Una comunicación que mantiene una sola conexión abierta durante minutos con streaming tiene condiciones distintas a las de una petición corta. En lugar de invertir tiempo en inspeccionar tu red, resulta más fácil bajar la tasa de reproducción partiendo los turnos.

10. Lo que está confirmado y lo que no

Para evitar malentendidos, separo lo que se puede verificar oficialmente de lo que no.

✅ Verificable oficialmente
  • Este texto figura formalmente en la referencia oficial de errores y significa que la conexión se perdió
  • Antes de v2.1.227 se mostraba como Connection closed mid-response, es el mismo caso renombrado
  • La salida que ya había fluido se conserva a propósito, porque reenviar podría duplicar una ejecución
  • El procedimiento de recuperación es responder continue
  • Los cortes anteriores a que salga la respuesta se reintentan solos, hasta diez veces con retroceso exponencial
  • Las sesiones no interactivas y los subagentes continúan por su cuenta, desde v2.1.246 y v2.1.257 respectivamente
🟡 Reportado pero sin confirmar
  • Que el HTTPS puro esté sano y solo la CLI caiga con ECONNRESET, según los informes #86473 y #85979
  • El contraste de que en el mismo equipo y con la misma cuenta la versión web va bien, según el informe #85979
  • La posible implicación de un fallo en la reutilización de conexiones, según la explicación del soporte que cita quien reporta
  • La mención a una incidencia del servidor en unas fechas concretas, también a través de quien reporta
🔴 Sin publicar a fecha de este artículo
  • Una explicación oficial de la causa por parte de Anthropic, no hay respuesta pública en ninguna de las dos incidencias
  • El motivo del renombrado. No consta el cambio de texto en el CHANGELOG
  • La #86473 y la #85979 siguen ambas abiertas

En resumen: el síntoma, el significado y el procedimiento de recuperación están documentados oficialmente, pero todavía no hay explicación oficial de por qué se corta. En esta situación, lo que funciona con seguridad no es identificar la causa sino trabajar de forma que un corte cueste lo mínimo: partir los turnos, avanzar comprobando el estado en las operaciones con efectos secundarios y mantener la versión al día. Estas tres cosas sirven sea cual sea la causa.

Preguntas frecuentes

1. ¿«Connection lost mid-response» y «Connection closed mid-response» son errores distintos?

Son el mismo. Tal como deja escrito la referencia oficial de errores, antes de v2.1.227 el mismo fenómeno se mostraba como Connection closed mid-response. Que haya cambiado el texto no significa que haya aparecido un tipo nuevo de fallo. La información escrita con el nombre antiguo se puede seguir consultando tal cual.

2. ¿Se pierde la salida anterior?

No se pierde. Todos los bloques que Claude completó se conservan. Lo único que se descarta es el último bloque que estuviera a medias cuando terminó el turno. Si Claude Code añade esta nota en lugar de reenviar es porque reenviar podría ejecutar dos veces la misma llamada de herramienta.

3. ¿Qué hay que responder para retomar desde donde se quedó?

Responde continue. Es el procedimiento de recuperación que indica la referencia oficial de errores, y hace que siga desde el último bloque completado. Si repites la instrucción desde cero, corres el riesgo de duplicar operaciones ya ejecutadas.

4. ¿Se arregla subiendo el número de reintentos?

No se arregla. Como vimos en el capítulo 4, esta es la nota de un momento en el que Claude Code evita reintentar a propósito. CLAUDE_CODE_MAX_RETRIES, cuyo valor por defecto es 10 y cuyo máximo es 15 desde v2.1.186, sirve para el fallo del otro tipo, el que cae antes de que salga la respuesta. Lo que sirve aquí es acortar cada turno.

5. ¿Pasa lo mismo con -p y en CI, es decir, en ejecución no interactiva?

El comportamiento es distinto. Según la referencia oficial, en las sesiones no interactivas, si la respuesta cortada es solo texto y no incluye llamadas de herramienta, Claude Code se pide a sí mismo continuar, hasta tres veces seguidas. Esta nota aparece cuando esas continuaciones se agotan. Antes de v2.1.246 el turno terminaba con el primer corte. Si usas --output-format json, este mensaje va dentro del campo result.

6. También aparece en los subagentes, con la herramienta Task.

Los subagentes continúan solos igualmente. Si la respuesta cortada es solo texto, Claude Code le pide al subagente que siga y esta nota solo pasa a ser el último mensaje cuando se agotan las continuaciones. Antes de v2.1.257 la nota salía con el primer corte.

7. ¿Es culpa de mi red?

Es posible, pero no tiene por qué ser lo único. Quien reporta la incidencia #86473 demuestra que un POST del mismo tamaño termina bien tanto con curl como con Node.js puro, y aun así solo la CLI se cae. Prueba primero a reproducirlo sin VPN ni proxy y después en otra línea. Si en ninguno de los dos casos cambia nada, puedes concluir que el problema no es solo tuyo.

8. ¿Se reduce si alargo el tiempo de espera?

Con este mensaje no cabe esperarlo, porque el veredicto es que la conexión se perdió, no que se agotara el tiempo. Alargar los temporizadores, como CLAUDE_BYTE_STREAM_IDLE_TIMEOUT_MS, sirve para The response stopped arriving, es decir, para el síntoma en el que la conexión sigue viva pero se queda en silencio.

9. ¿Cómo compruebo qué versión estoy usando?

Con claude --version. Si en pantalla pone lost, es v2.1.227 o posterior; si pone closed, es anterior. El comportamiento de la conexión ha cambiado según la versión: en el CHANGELOG oficial, v2.1.198 corrige «que un corte de red breve a media respuesta interrumpiera el turno». Actualizar es la primera jugada que más compensa, pero no garantiza la cura: las dos incidencias citadas arriba están reportadas sobre versiones posteriores a esa.

10. Me pasa muy a menudo en la red corporativa. ¿Qué ajustes debo mirar?

La documentación oficial de configuración de red cubre lo esencial en tres puntos. Primero, los proxy SOCKS no están soportados, así que no los uses. Segundo, las variables de proxy no van en un export del shell sino en el bloque env de ~/.claude/settings.json, porque los agentes en segundo plano no reciben el entorno del shell. Y tercero, si usas mTLS, vigila la rotación de certificados. Para saber si la configuración se ha leído, mira el registro de claude --debug o lo que muestre /status.

Artículos relacionados

Fuentes primarias consultadas