Skip to main content
Esta página enumera los errores en tiempo de ejecución que Claude Code muestra y cómo recuperarte de cada uno, además de qué verificar cuando las respuestas parecen estar mal sin un error. Para errores de instalación como command not found o fallos de TLS durante la configuración, consulta Solucionar problemas de instalación e inicio de sesión. Excepto por errores de Wrapper e IDE, que el programa de lanzamiento imprime en lugar de Claude Code mismo, estos errores y comandos de recuperación se aplican en toda la CLI, la aplicación de escritorio y sesiones en la nube, ya que las tres envuelven la misma CLI de Claude Code. Para otros problemas específicos de la superficie, consulta la sección de solución de problemas en la página de esa superficie.
Claude Code llama a la API de Claude para respuestas del modelo, por lo que la mayoría de los errores en tiempo de ejecución se asignan a un código de error de API subyacente. Esta página cubre lo que cada error significa dentro de Claude Code y cómo recuperarte. Para las definiciones de código de estado HTTP sin procesar, consulta la referencia de errores de la plataforma Claude.

Encuentra tu error

Busca el mensaje que ves en la tabla y ve a la sección correspondiente.

Reintentos automáticos

Claude Code reintenta fallos transitorios hasta 10 veces con retroceso exponencial antes de mostrarte un error. No siempre reintenta un fallo que llega a mitad de la respuesta de Claude. Cuando ves uno de los errores de esta página, Claude Code ya ha realizado los reintentos que corresponden a ese fallo. Claude Code reintenta estos fallos:
  • Errores del servidor, respuestas de sobrecarga y tiempos de espera de solicitud agotados que llegan antes de que cualquier parte de la respuesta de Claude se haya enviado en streaming.
  • Un error del servidor o una respuesta de sobrecarga que llega después de que Claude ha terminado de pensar pero antes de que haya comenzado cualquier texto o llamada a herramienta. Claude Code reintenta un error del servidor en ese punto hasta dos veces. Antes de v2.1.284, Claude Code terminaba el turno con el error en ese punto.
  • Conexiones perdidas. Cuando una conexión se cae a mitad de una solicitud antes de que Claude haya completado cualquier parte de su respuesta, incluido su pensamiento, Claude Code reenvía la solicitud con el mismo retroceso y el turno continúa, incluso si algo de texto ya había comenzado a enviarse en streaming. Cuando se cae después de que Claude ha terminado de pensar pero antes de que haya comenzado cualquier texto o llamada a herramienta, Claude Code en su lugar reenvía la solicitud hasta dos veces en rápida sucesión, y termina el turno con Connection lost before a response was produced si la conexión sigue cayéndose en ese punto.
  • Una conexión que Claude Code detecta que se rompió porque tu computadora entró en suspensión a mitad de una solicitud. Claude Code la cuenta como una conexión perdida según las reglas anteriores; una vez que la etiqueta de reintento nombra la razón específica, dice Connection lost while your computer was asleep, y si el turno termina después de que Claude ha terminado de pensar pero antes de cualquier texto o llamada a herramienta, el mensaje dice Your computer went to sleep before a response was produced.
  • Un stream de respuesta estancado, cuando los encabezados de respuesta han llegado pero ninguna parte de la respuesta de Claude ha llegado, o cuando Claude ha terminado de pensar pero no ha comenzado ningún texto ni llamada a herramienta: Claude Code aborta la conexión estancada y vuelve a enviar la solicitud en streaming como máximo una vez. Si la respuesta se estanca una segunda vez después de que Claude ha terminado de pensar pero antes de cualquier texto o llamada a herramienta, Claude Code termina el turno con The response stalled before a response was produced.
  • Una solicitud en streaming a la que la API nunca responde con encabezados de respuesta, en una conexión donde se aplica el plazo del primer byte: Claude Code la aborta al cumplirse el plazo y la reenvía como máximo una vez por solicitud al modelo, dentro del presupuesto de reintentos, y luego termina el turno con No response from API si ese intento también queda sin respuesta. En otras conexiones, la solicitud espera hasta API_TIMEOUT_MS. Cuando estableces CLAUDE_CODE_RETRY_WATCHDOG, el límite de un reintento no se aplica.
  • Una respuesta en streaming que el filtro de contenido de salida de la API detiene antes de que Claude haya terminado de pensar o haya comenzado cualquier texto o llamada a herramienta. Claude Code reenvía la solicitud una vez, dentro del presupuesto de reintentos, y muestra Output blocked by content filtering policy si el filtro también detiene la segunda respuesta.
  • Limitaciones temporales 429, pero no el 429 de límite de gasto de un gateway, que no es una limitación; consulta Spend limit reached.
    • Cuando has iniciado sesión con una suscripción de claude.ai, esto incluye limitaciones 429 que no llevan los encabezados de cuota de tu plan. Antes de v2.1.199, Claude Code reintentaba esas limitaciones solo para inicios de sesión con clave de API y Enterprise.
  • Una solicitud rechazada porque la entrada más max_tokens excede el límite de contexto. Reenviarla sin cambios fallaría de la misma manera, por lo que Claude Code reintenta con un max_tokens reducido, y deja de reintentar y compacta en su lugar en dos casos:
    • Cuando ninguna reducción puede caber, por ejemplo cuando la conversación misma casi llena la ventana de contexto.
    • Cuando un reintento no puede reducir max_tokens más. Antes de v2.1.218, Claude Code podía reenviar una solicitud reducida que aún no cabía, como cuando el presupuesto de pensamiento extendido excedía el contexto restante, hasta que se agotaba el presupuesto de reintentos.
  • Una credencial de Google Cloud expirada o faltante en Google Cloud’s Agent Platform, o credenciales de AWS que no se pueden cargar en tu máquina. Claude Code descarta sus credenciales en caché y reintenta hasta dos veces, luego reporta el error para que puedas volver a autenticarte de inmediato, como se describe en Could not load AWS or Google Cloud credentials. Antes de v2.1.228, Claude Code reintentaba una credencial de Google Cloud fallida durante todo el presupuesto de reintentos antes de mostrar el error.
  • Un 401 o 403 de la API de Anthropic, directamente o a través de un gateway de LLM, mientras un script apiKeyHelper suministra la credencial. Claude Code vuelve a ejecutar el script y reintenta con su salida nueva, dentro de todo el presupuesto de reintentos. Cuando el script mismo falla en la nueva ejecución, Claude Code muestra Your apiKeyHelper script is failing en su lugar.
Antes de v2.1.227, Connection lost before a response was produced decía Connection closed while thinking, before producing a response y The response stalled before a response was produced decía Response stalled while thinking, before producing a response. Claude Code no reintenta estos fallos:
  • Un fallo de validación de certificado TLS, como un proxy que inspecciona TLS, un paquete NODE_EXTRA_CA_CERTS faltante o un certificado expirado. Claude Code reporta el error en el primer intento, para que puedas corregir la configuración del certificado de inmediato; consulta SSL certificate errors. Claude Code sigue reintentando condiciones TLS transitorias, como un tiempo de espera agotado en el handshake. Antes de v2.1.199, Claude Code reintentaba los fallos de certificado durante todo el presupuesto de reintentos antes de mostrar el error.
  • Un error del servidor, una conexión perdida o un stream estancado que llega después de que Claude ha completado un bloque de texto o una llamada a herramienta, o ha comenzado uno después de terminar su pensamiento, pero antes de que termine la respuesta. Claude Code no vuelve a ejecutar la solicitud, porque eso podría ejecutar las mismas llamadas a herramientas dos veces. Conserva lo que Claude completó, ejecuta las llamadas a herramientas que Claude terminó y continúa el turno a partir de sus resultados. Para saber lo que ves en una sesión interactiva y en una no interactiva, lee The response above may be incomplete. Antes de v2.1.199, Claude Code descartaba la salida parcial y reportaba todo el turno como un error cuando un error del servidor llegaba a mitad del streaming.
  • Un fallo que llega después de que Claude ha terminado la respuesta: no hay nada que reintentar, por lo que Claude Code conserva la respuesta completa y termina el turno normalmente.
  • Una respuesta en streaming de Amazon Bedrock con un content-type inesperado, porque el gateway o proxy que reescribe la respuesta reescribiría el reintento de la misma manera. Requiere Claude Code v2.1.208 o posterior.
  • Un reintento sin streaming de una solicitud en streaming fallida que obtiene un estado de éxito pero ningún mensaje de la API de Claude en el cuerpo. Claude Code termina el turno con ese error.
  • Una solicitud que la verificación de políticas de tu organización rechazó, que aparece como una línea API Error: con el mensaje de denegación. Los administradores de tu organización configuran la verificación con Inference hooks, una función de Claude Enterprise, y el mensaje termina con las instrucciones que configuraron o, de forma predeterminada, te indica que te comuniques con ellos. Claude Code no reenvía la solicitud denegada al mismo modelo ni a un modelo de respaldo, porque la denegación se refiere al contenido de la solicitud y no al modelo. Antes de v2.1.239, Claude Code podía reenviar una solicitud denegada, sin streaming o en un modelo de respaldo configurado, antes de mostrarte la denegación.

Lo que ves mientras Claude Code reintenta o espera

Mientras reintenta, el spinner muestra una cuenta regresiva Retrying in Ns · attempt x/y después de una etiqueta de error. La etiqueta nombra la razón específica desde el primer intento para fallos sobre los que puedes actuar de inmediato: la red está caída, falló un handshake TLS o alcanzaste un rate limit. Para otros errores, al principio dice API error. A partir de v2.1.198, cambia a la razón específica desde el tercer intento, o en el intento final cuando CLAUDE_CODE_MAX_RETRIES permite menos de tres; las versiones anteriores cambian solo en el intento final. A partir de v2.1.198, la sugerencia habitual del spinner se suprime durante los reintentos. Una vez que se revela la razón del error, si el fallo es una sobrecarga 529, la línea debajo de la cuenta regresiva también indica dónde verificar el estado del servicio: status.claude.com en la API de Anthropic, o el host del proveedor o gateway nombrado en el mensaje en otras configuraciones. Si no llegan datos en el stream de respuesta durante 20 segundos mientras una solicitud sigue pendiente, el spinner muestra Waiting for API response · will retry in … · check your network antes de que haya comenzado ningún reintento. La solicitud aún no ha fallado: la cuenta regresiva corre hasta el punto en que Claude Code aborta la conexión estancada. Después de abortarla, lo que ves depende de cuánto había avanzado la respuesta:
  • Antes de que Claude haya completado un bloque de texto o una llamada a herramienta, o haya comenzado uno después de terminar su pensamiento, Claude Code reintenta la solicitud o termina el turno con un error. Reintentos automáticos indica qué estancamientos reintenta y cuántas veces.
  • Después de que Claude ha completado un bloque de texto o una llamada a herramienta, o ha comenzado uno después de terminar su pensamiento, pero antes de que Claude haya terminado la respuesta, Claude Code conserva lo que Claude completó, continúa el turno a partir de las llamadas a herramientas que Claude terminó y muestra The response above may be incomplete. En una sesión no interactiva, y para la respuesta de un subagente en cualquier sesión, Claude Code puede primero pedirle a Claude que continúe la respuesta; esa entrada indica cuándo lo hace y cuándo sigues viendo el aviso allí.
  • Después de que Claude terminó la respuesta, Claude Code termina el turno normalmente.
El banner desaparece por sí solo una vez que los datos se reanudan o un reintento tiene éxito. Si reaparece en cada intento, trátalo como un problema de red. Antes de v2.1.185, el banner aparecía después de 10 segundos con una redacción diferente. Mientras Claude consulta al asesor, el banner aparece después de 90 segundos sin datos en lugar de 20, porque una revisión larga del asesor puede no enviar nada durante bastante más de 20 segundos. Antes de v2.1.214, el umbral de 20 segundos también se aplicaba durante las llamadas al asesor, por lo que el banner aparecía durante las revisiones del asesor incluso cuando no pasaba nada malo.

Ajustar el comportamiento de reintentos

Puedes ajustar el comportamiento de reintentos con estas variables de entorno:

Errores del servidor

La mayoría de estos errores provienen del proveedor de inferencia: el servicio de Anthropic en la API de Anthropic, y el servicio detrás del endpoint de ese proveedor en Amazon Bedrock, Google Cloud’s Agent Platform, Microsoft Foundry o un gateway personalizado. Auto mode cannot determine the safety of an action y Agent terminated early due to an API error también cubren causas de tu lado, como una cuenta de Amazon Bedrock que no puede invocar el modelo clasificador o un subagente que alcanzó un límite de uso.

API Error: 500 Internal server error

Claude Code muestra el código de estado y el mensaje de error de la API para cualquier respuesta 5xx. El ejemplo a continuación muestra una respuesta 500 en la API de Anthropic:
La oración final indica dónde verificar el estado del servicio y varía según el proveedor. Las configuraciones de Amazon Bedrock, Google Cloud’s Agent Platform y Microsoft Foundry nombran el estado del servicio de ese proveedor. Un ANTHROPIC_BASE_URL personalizado nombra el host del gateway. Un 5xx de la propia API indica un fallo inesperado dentro de la API. No lo causa tu prompt, tu configuración ni tu cuenta. Cuando un proxy, balanceador de carga o gateway responde con una página de error HTML, el mensaje muestra el código de estado y el título de la página, como API Error: 502 Bad Gateway. Para una página sin título, el mensaje muestra en su lugar el código de estado y su nombre estándar. Antes de v2.1.281, el código de estado se omitía cuando la página tenía un título, y el marcado sin procesar de la página se imprimía cuando no tenía ninguno. Qué hacer:
  • Consulta status.claude.com, o la página de estado del proveedor nombrada en el mensaje, para ver si hay incidentes activos
  • Espera un minuto y luego envía tu mensaje de nuevo. Tu mensaje original sigue en la conversación, así que para un prompt largo puedes escribir try again en lugar de pegarlo completo.
  • Si el error persiste sin ningún incidente publicado, ejecuta /feedback para que Anthropic pueda investigar con los detalles de tu solicitud. Consulta Informar un error si /feedback no está disponible en tu entorno.

API Error: Repeated 529 Overloaded errors

La API está temporalmente al límite de su capacidad para todos los usuarios. Claude Code ya reintentó varias veces antes de mostrar este mensaje:
La oración final varía según el proveedor de la misma manera que en el error 500 anterior. Un 529 no es tu límite de uso y no cuenta contra tu cuota. Qué hacer:
  • Consulta status.claude.com, o la página de estado del proveedor nombrada en el mensaje, para ver si hay avisos de capacidad
  • Vuelve a intentarlo en unos minutos
  • Ejecuta /model y cambia a un modelo diferente para seguir trabajando, ya que la capacidad se controla por modelo. Claude Code te pide que hagas esto cuando un modelo está bajo una carga particularmente alta, por ejemplo Opus is experiencing high load, please use /model to switch to Sonnet. En los modelos Fable, el mensaje nombra Fable. En una sesión que ejecuta la aplicación Claude Desktop, como la pestaña Code o Cowork, el mensaje dice Opus is experiencing high load. Switch to Sonnet. y cambias de modelo con el selector de modelos de la aplicación.

Request timed out

La API no respondió antes del plazo de conexión.
Esto puede ocurrir durante períodos de alta carga o cuando el modelo está generando una respuesta muy grande. El tiempo de espera predeterminado de la solicitud es de 10 minutos. Qué hacer:
  • Reintenta la solicitud
  • Si la causa es una red lenta o un proxy, aumenta API_TIMEOUT_MS como se describe en Reintentos automáticos
  • Si se agota el tiempo de espera con frecuencia y tu red por lo demás funciona bien, consulta Errores de red y de conexión más abajo

No response from API

Claude Code envió una solicitud en streaming y la API no devolvió encabezados de respuesta dentro del plazo para el primer byte, así que Claude Code abortó la solicitud en lugar de esperar el tiempo de espera completo de la solicitud, API_TIMEOUT_MS, de 10 minutos por defecto. Claude Code envía la solicitud de nuevo como máximo una vez, si el presupuesto de reintentos lo permite. Cuando el reintento tampoco recibe respuesta, el turno termina con este mensaje, que muestra cuánto tiempo esperó cada intento. Cuando estableces CLAUDE_CODE_RETRY_WATCHDOG, el límite de un solo reintento no se aplica y Claude Code reintenta según el presupuesto descrito en Ajustar el comportamiento de los reintentos.
Claude Code establece por separado la espera de los encabezados de respuesta del primer intento y la del reintento:
  • Primer intento: CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS cuando lo estableces en 1 o más, limitado a un valor entre 10 segundos y 30 minutos. De lo contrario, Claude Code usa el tiempo de espera del watchdog a nivel de bytes indicado en Watchdogs de inactividad del streaming, así que las variables que cambian ese tiempo de espera también cambian esta espera. En cualquier caso, Claude Code agrega un segundo por cada 32KB del cuerpo de la solicitud.
  • Reintento: un segundo menos que API_TIMEOUT_MS, poco menos de 10 minutos por defecto, para que el reintento pueda durar más que un proxy o gateway que retiene la respuesta hasta que termina la generación. En Amazon Bedrock, el reintento usa el mismo plazo que el primer intento, y el mensaje muestra una duración en lugar de dos.
Ninguna de las dos esperas supera un segundo menos que un API_TIMEOUT_MS positivo, y un API_TIMEOUT_MS positivo inferior a 11 segundos desactiva el plazo. El watchdog a nivel de bytes se inicia solo cuando llegan los encabezados de respuesta, así que una respuesta que deja de enviar bytes después de eso sigue las reglas de streaming detenido en lugar de este plazo. Qué hacer:
  • Envía tu mensaje de nuevo. Tu mensaje original sigue en la conversación, así que para un prompt largo puedes escribir try again en lugar de pegarlo completo.
  • Si se repite, trátalo como un problema de red o de proxy.
  • Si un proxy o gateway de tu red retiene las respuestas hasta que se completan, aumenta API_TIMEOUT_MS para que el reintento espere más. En Amazon Bedrock, aumenta también CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS.
  • Si al primer intento se le sigue agotando el tiempo de espera y luego el reintento tiene éxito, aumenta CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS para que el primer intento también espere lo suficiente.
Antes de v2.1.242, Claude Code esperaba el tiempo de espera completo de la solicitud, API_TIMEOUT_MS, de 10 minutos por defecto, antes de dar por fallida una solicitud en streaming sin respuesta. Antes de v2.1.261, el reintento esperaba el mismo plazo que el primer intento y el mensaje no mostraba duraciones.

The response above may be incomplete

Una solicitud en streaming falló mientras la respuesta aún estaba en curso, después de que Claude completó un bloque de texto o una llamada a herramienta, o de que empezó uno tras terminar su pensamiento. Reenviar la solicitud podría ejecutar las mismas llamadas a herramientas dos veces, así que Claude Code conserva la salida que Claude completó y agrega este aviso en lugar de descartar el turno. La variante que ves indica la causa:
  • Server error mid-response: un error de sobrecarga o un error de servidor 5xx a mitad del streaming. Esta variante requiere Claude Code v2.1.199 o posterior; antes, en ese caso se descartaba la salida parcial y se informaba todo el turno como un error.
  • Connection lost mid-response: la conexión se perdió. También ves esta variante cuando un proxy o gateway cierra limpiamente el cuerpo de la respuesta antes de que la respuesta haya terminado.
  • Your computer went to sleep mid-response: Claude Code detectó que tu computadora entró en suspensión mientras la respuesta se transmitía en streaming. Cuando tu computadora se reactiva, Claude Code trata la conexión como rota y deja de leer de ella.
  • Part of the response never arrived: un evento del streaming se perdió entre la API y Claude Code, así que un evento posterior hizo referencia a contenido que nunca llegó. Antes de v2.1.281, en este caso el turno terminaba con API Error: Content block not found.
  • The response stream was malformed: llegó un evento para un bloque de contenido que ya había terminado, o llegó un evento dañado. Un evento dañado es aquel cuyos datos no son JSON válido, cuyo contenido falta o cuyo contenido no coincide con el tipo del evento. Antes de v2.1.284, en su lugar aparecía el error sin procesar del analizador, como uno que empieza con API Error: JSON Parse error, cuando un evento con JSON no válido llegaba después de que Claude había completado su pensamiento, un bloque de texto o una llamada a herramienta.
  • The response stopped arriving: la conexión siguió abierta pero dejó de entregar datos, así que el watchdog de inactividad del streaming la abortó. Antes de v2.1.222, Claude Code también podía informar este fallo en conexiones a un gateway a través de ANTHROPIC_BASE_URL o ANTHROPIC_AWS_BASE_URL mientras aún llegaban los pings de keep-alive del servidor, porque allí solo contaba los eventos de respuesta analizados; actualizar elimina esos tiempos de espera agotados falsos en esas rutas. Los gateways a los que se accede mediante una URL base de proveedor como ANTHROPIC_BEDROCK_BASE_URL no están cubiertos por el watchdog de bytes; consulta Watchdogs de inactividad del streaming.
Antes de v2.1.227, Connection lost mid-response decía Connection closed mid-response y The response stopped arriving decía Response stalled mid-stream. Cuando un evento del streaming perdido, duplicado o dañado llega antes de que Claude haya empezado cualquier texto o llamada a herramienta, no ves este aviso:
  • Si Claude solo había completado su pensamiento, Claude Code vuelve a emitir la solicitud. Cuando los streamings reemitidos fallan de la misma manera, el turno termina con Part of the response never arrived and no response was produced. Try again. o The response stream was malformed and no response was produced. Try again.
  • Si no se había completado nada, Claude Code reenvía en su lugar la solicitud sin streaming. Si desactivaste ese respaldo con CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK, el turno termina con API Error: Content block not found para un evento perdido o API Error: Content block already closed para uno duplicado. Para un evento dañado con el respaldo desactivado, el turno termina con API Error: Stream event unreadable o con el error sin procesar del analizador.
En cuatro casos, Claude Code maneja el fallo sin mostrar este aviso de inmediato:
  • Si ocurre antes en la respuesta, Claude Code reintenta el fallo o termina el turno con un error diferente. Consulta Reintentos automáticos.
  • Cuando uno de estos fallos llega después de que Claude terminó la respuesta, Claude Code conserva la respuesta completa y termina el turno normalmente, sin este aviso. Antes de v2.1.222, Claude Code mostraba este aviso cuando la conexión se perdía o se detenía después de que la respuesta terminaba, e informaba el turno como un error aunque la respuesta estuviera completa.
  • En una sesión no interactiva, como una ejecución con -p, una ejecución del Agent SDK o una sesión en la nube, no tienes que enviar continue tú mismo cuando la respuesta cortada está en la conversación principal y contiene texto pero ninguna llamada a herramienta: Claude Code conserva la salida parcial y le pide a Claude que continúe desde donde se detuvo, hasta tres veces seguidas. Solo ves este aviso para una respuesta así cuando Claude Code agotó esas continuaciones. Antes de v2.1.246, Claude Code terminaba un turno no interactivo con este aviso en el primer corte.
  • En un subagente, sea la sesión interactiva o no: cuando su respuesta cortada contiene texto pero ninguna llamada a herramienta, Claude Code le pide al subagente que continúe. El aviso se convierte en el último mensaje del subagente solo cuando esas continuaciones se agotan. Antes de v2.1.257, un subagente mostraba este aviso en el primer corte.
Qué hacer:
  • En una sesión interactiva, lee la respuesta que queda en pantalla: Claude Code conserva cada bloque que Claude completó antes del error, pero descarta un bloque final interrumpido cuando termina el turno, así que es posible que falten las últimas oraciones o llamadas a herramientas. Responde con continue para que Claude retome desde su último bloque completado.
  • En modo no interactivo (-p):
    • Con la salida de texto predeterminada, Claude Code imprime el último bloque de texto completado que aún conserva de antes en el turno, seguido de este mensaje. Cuando no conserva ninguno, Claude Code imprime solo este mensaje, por ejemplo porque Claude Code compactó la conversación a mitad del turno y borró ese texto. Antes de v2.1.219, Claude Code imprimía solo este mensaje en la salida de texto de -p y descartaba la respuesta que ya había producido.
    • Con --output-format json o stream-json, Claude Code informa este mensaje en el campo result.
    • Para continuar el turno cuando la conexión sea estable, reanuda la sesión y envía continue como se describe en Continuar conversaciones.

Auto mode cannot determine the safety of an action

El modelo que usa el modo automático para clasificar acciones no pudo producir una decisión, así que el modo automático no aprobó la acción automáticamente. El mensaje que ves depende de cómo falló el clasificador. Las lecturas, búsquedas y ediciones dentro de tu directorio de trabajo omiten el clasificador, así que siguen funcionando en todos estos casos. Cuando el modelo clasificador no está disponible:
En una sesión interactiva, aparece una fila atenuada Not run · auto mode's check had no usable answer debajo de la llamada a herramienta en lugar de este mensaje. Presiona Ctrl+O para leer el mensaje en el visor de transcripciones. Las denegaciones descritas en The server returned no safety verdict muestran la misma fila. Antes de v2.1.296, el mensaje aparecía debajo de la llamada como un error en rojo. Cuando Claude Code puede determinar la categoría del fallo, la nombra entre paréntesis después de temporarily unavailable, por ejemplo <model> is temporarily unavailable (rate-limited), so auto mode cannot determine the safety of <tool> right now. Las categorías son (rate-limited), (overloaded), (server error), (timed out) y (connection failed). Si (timed out) o (connection failed) se repite, revisa tu conexión; consulta Unable to connect to API. Antes de v2.1.229, el mensaje nunca nombraba una categoría y decía Wait briefly and then try this action again. Cuando ninguna categoría encaja, el mensaje aparece sin categoría entre paréntesis; más de un fallo produce esa forma. En Amazon Bedrock, incluido el endpoint de Mantle, también aparece cuando tu cuenta de AWS no puede invocar el modelo nombrado en el mensaje, y ese fallo se repite en cada reintento hasta que tu cuenta obtenga acceso al modelo. Qué hacer:
  • Reintenta después de unos segundos; Claude ve el mismo mensaje y normalmente reintenta por su cuenta. Un fallo transitorio no tiene relación con los requisitos del modo automático; no necesitas cambiar la configuración
  • Si los reintentos siguen fallando, continúa con tareas de solo lectura y vuelve más tarde a la acción bloqueada
  • En Amazon Bedrock, si el mensaje reaparece en cada reintento, comprueba que tu cuenta pueda invocar el modelo que nombra: para los modelos estándar de Amazon Bedrock, confirma que tu política de IAM permite invocarlo; para los IDs de modelo de Mantle, contacta al equipo de tu cuenta de AWS
Cuando una solicitud al clasificador falla porque tu token de OAuth expiró o fue rotado por otra sesión, Claude Code actualiza el token y reintenta la solicitud una vez, así que una expiración habitual del token no aparece como este mensaje. Antes de v2.1.216, un token expirado o rotado hacía fallar cada solicitud al clasificador, y el modo automático denegaba cada acción verificada con este mensaje hasta que se actualizaba el token. Cuando el clasificador devolvió una respuesta que no se pudo analizar:
Qué hacer:
  • Reintenta la acción; normalmente funciona en el siguiente intento
  • Ejecuta claude --debug y repite la acción para ver los detalles en el registro de depuración
Cuando una verificación de seguridad de la API independiente bloqueó la solicitud al clasificador debido a contenido anterior de la conversación:
Claude Code deniega la acción, pero le indica a Claude que esto no es un juicio de que la acción sea insegura y que continúe con otras tareas en lugar de reintentar. Estas denegaciones no cuentan para los umbrales de pausa del modo automático. En una ejecución no interactiva con -p, Claude Code no detiene la ejecución. Lo que recibe Claude depende de dónde solicitó la acción:
  • A un subagente en segundo plano en una ejecución con -p sin --input-format stream-json, Claude Code le devuelve un resultado de error que contiene Agent aborted: auto mode classifier request refused by the safety safeguard in headless mode
  • En todos los demás casos, incluidas las sesiones interactivas y la conversación principal de una ejecución con -p, Claude Code le devuelve esa denegación a Claude
Antes de v2.1.225, Claude Code contaba estos rechazos para los umbrales de pausa y devolvía el mismo mensaje de rechazo que un bloqueo real del clasificador. Qué hacer:
  • Esto no es una decisión sobre tu acción. Contenido que ya estaba en tu conversación activó un filtro de seguridad en la API cuando el modo automático envió la conversación al clasificador
  • Reintentar no servirá; el mismo contenido de la conversación volverá a activar el filtro
  • En una sesión interactiva, cambia a otro modo de permisos para poder aprobar la acción cuando se te solicite
  • Inicia una conversación nueva sin el contenido que activa el filtro
Cuando la conversación superó el tamaño de la ventana de contexto del clasificador:
Lo que sucede con la acción depende de dónde la solicitó Claude:
  • En una sesión interactiva, el modo automático recurre a una solicitud de permiso normal para esa acción, para que puedas aprobarla o denegarla manualmente
  • A un subagente en segundo plano en una ejecución no interactiva con -p sin --input-format stream-json, Claude Code le devuelve un resultado de error que contiene Agent aborted: auto mode classifier transcript exceeded context window in headless mode, y la ejecución continúa
  • En cualquier otro punto de una ejecución con -p sin --permission-prompt-tool, no hay ninguna solicitud a la que recurrir, así que la acción no se ejecuta y la ejecución continúa
Qué hacer:
  • En una sesión interactiva, aprueba o deniega la acción en la solicitud que aparece
  • En una sesión interactiva, ejecuta /compact para reducir el tamaño de la conversación y que las acciones siguientes vuelvan a caber en la ventana del clasificador

The server returned no safety verdict

Con la revisión del clasificador en el servidor, el modo automático deniega una acción cuando el servidor no da ningún veredicto sobre ella. La denegación nombra una categoría entre paréntesis cuando Claude Code puede determinarla, como (timed out):
El resto del mensaje le indica a Claude si un reintento puede ayudar. Antes de algunas de estas denegaciones, Claude Code espera para que el siguiente intento de Claude no llegue de inmediato. Durante la espera en una sesión interactiva, el spinner muestra Auto mode check unavailable con una cuenta regresiva, y al presionar Esc se interrumpe el turno. Después de diez respuestas seguidas sin veredicto, el modo automático detiene el turno:
El mensaje de detención aparece en un lugar distinto en cada tipo de sesión:
  • En una sesión interactiva, el mensaje aparece como advertencia en la transcripción y el turno termina
  • En una ejecución no interactiva con -p, la ejecución termina e informa un error de ejecución. Con la salida de texto predeterminada, el mensaje se imprime en stderr.
  • Cuando un subagente alcanzó el límite, el subagente se detiene antes de terminar, y Claude recibe lo que haya producido junto con una nota de que el modo automático lo detuvo
Qué hacer:
  • Envía otro mensaje para que Claude lo intente de nuevo. El recuento de respuestas se reinicia.
  • Si la detención se repite y tus solicitudes pasan por un gateway de LLM o proxy, comprueba si corta las respuestas en streaming o las reescribe. Revisión del clasificador en el servidor indica qué comportamiento del gateway causa denegaciones, y la guía de compatibilidad de gateways enumera lo que debe pasar sin cambios.
  • Establece CLAUDE_CODE_AUTO_MODE_SERVER=0 antes de iniciar Claude Code para que use en su lugar sus propias solicitudes al clasificador. Antes de v2.1.281, Claude Code no leía la variable en una conexión directa a la API de Anthropic.
  • Para aprobar tú mismo las acciones, sal del modo automático
Antes de v2.1.280, Claude Code denegaba de inmediato cada acción de una respuesta sin veredicto y nunca detenía el turno.

Agent terminated early due to an API error

La solicitud a la API de un subagente falló de forma definitiva, por ejemplo porque se alcanzó un límite de uso o se agotaron los reintentos de un error de servidor, así que el subagente se detuvo antes de terminar su tarea. Este mensaje requiere Claude Code v2.1.199 o posterior; antes, el texto del error de la API se devolvía a Claude como si fuera el resultado del subagente.
Qué hacer:
  • Busca el detalle del error que aparece después de los dos puntos en su propia sección de esta página, como Límites de uso o Errores del servidor, y sigue los pasos de esa sección
  • Cuando se resuelva el error subyacente, pídele a Claude que reintente la tarea o reanuda el subagente
Cuando un rate limit, una sobrecarga o un error de servidor interrumpe un subagente en primer plano que ya produjo salida de texto, Claude recibe esa salida parcial marcada como incompleta en lugar de este error. Un subagente cuya única salida fueron llamadas a herramientas también recibe este error; en v2.1.199, ese caso devolvía en su lugar un resultado parcial vacío. Consulta Errores de API en subagentes.

Límites de uso

La mayoría de los errores en esta sección significan que se alcanzó una cuota vinculada a tu cuenta o plan. Tres funcionan de manera diferente: Server is temporarily limiting requests es una limitación del lado del servidor no relacionada con la cuota de tu plan, Usage credits required for 1M context es una verificación de derechos en lugar de una cuota agotada, y The prompt to confirm went unanswered significa que una solicitud de consentimiento de créditos de uso se cerró sin respuesta, independientemente de si se alcanzó una cuota.

You’ve hit your session limit

Los planes de suscripción incluyen una asignación de uso móvil. Cuando se agota, verás uno de estos mensajes:
Claude Code bloquea las solicitudes adicionales hasta la hora de reinicio que se muestra en el mensaje. Los límites de sesión y semanales se comparten entre todos los modelos, por lo que cambiar de modelo no restaura el acceso. Los límites de Opus y Sonnet se aplican solo a las solicitudes a esa familia de modelos, por lo que cambiar a un modelo fuera de la familia con /model te permite seguir trabajando. En una sesión interactiva iniciada con una suscripción de claude.ai, Claude Code también puede esperar en la sesión abierta y continuar la tarea interrumpida poco después del reinicio. Consulta Esperar a que se reinicie un límite de uso para ver qué se muestra, cómo iniciar o cancelar una espera y cómo desactivar la continuación automática. Antes de v2.1.234, Claude Code no ofrecía esta espera. El uso se cuenta contra las asignaciones de sesión y semanales al mismo tiempo. Una única ráfaga de actividad intensa, como un gran fanout de flujo de trabajo, puede agotar la asignación semanal antes de que se reinicie la ventana de sesión. Qué hacer:
  • Espera la hora de reinicio que se muestra en el error
  • En la pestaña Code de la aplicación de escritorio, la tarjeta de límite de sesión ofrece una casilla de verificación Auto-continue when limits reset. La tarjeta de límite semanal no. Cuando está marcada, la aplicación de escritorio reintenta el turno interrumpido después del reinicio y muestra la hora del reintento en la tarjeta. La casilla de verificación de escritorio y el ajuste Continue automatically at usage limit de la CLI en /config son independientes, así que desactiva cada uno por separado.
  • Para el límite de Opus o Sonnet, ejecuta /model y cambia a un modelo fuera de esa familia para seguir trabajando. Cada modelo tiene su propia caché de prompts, por lo que la siguiente solicitud relee toda la conversación sin aciertos de caché; consulta Cambiar de modelo
  • Ejecuta /usage para ver los límites de tu plan y cuándo se reinician
  • Ejecuta /usage-credits para comprar uso adicional en Pro y Max, o para solicitarlo a tu administrador en Team y Enterprise. Consulta créditos de uso para planes de pago para ver cómo se factura esto.
  • Para actualizar tu plan y obtener límites base más altos, consulta claude.com/pricing
Antes de que se agote una ventana, Claude Code puede advertirte que usaste la mayor parte de ella, con un mensaje como You've used 85% of your session limit · resets 3:45pm. Para ver tu asignación restante de forma continua, agrega los campos rate_limits a una línea de estado personalizada, o en la aplicación de escritorio haz clic en el anillo de uso junto al selector de modelo.

Usage credits required for 1M context

El modelo seleccionado utiliza la ventana de contexto extendida de 1M tokens, y tu plan solo la incluye a través de créditos de uso.
En una sesión que ejecuta la aplicación Claude Desktop, la sugerencia no nombra comandos: apunta a la página de configuración de uso de claude.ai, o en los planes Team y Enterprise indica que actives los créditos de uso en claude.ai/admin-settings/usage o que se lo pidas a tu administrador. Esta es una verificación de derechos, no un agotamiento de cuota. Se activa incluso cuando tus asignaciones de sesión y semanales tienen capacidad restante. Consulta Contexto extendido para ver qué planes incluyen el contexto de 1M directamente y cuáles requieren créditos de uso. Cuando este error aparece a mitad de la conversación porque el contexto creció más allá de 200K tokens, Claude Code compacta automáticamente la conversación para volver a quedar bajo el límite de contexto estándar y mantiene la sesión en ese límite después, por lo que no se requiere ninguna acción. En versiones anteriores a v2.1.172, el error se repetía en cada solicitud posterior, incluida /compact; ejecuta /clear en esas versiones para recuperarte. Los pasos a continuación se aplican cuando seleccionaste explícitamente un modelo [1m]. Qué hacer:
  • Ejecuta /model y selecciona la variante sin el sufijo [1m] para volver a la ventana de contexto estándar
  • Donde el mensaje menciona /usage-credits, ejecútalo para activar la facturación medida de la variante de 1M en Pro y Max, o para solicitar créditos de uso a tu administrador en Team y Enterprise. Una vez que los créditos de uso estén activados, reinicia Claude Code o inicia una nueva sesión, según lo que indique el mensaje. Hasta entonces, la sesión permanece en el límite de contexto estándar.
  • Si el error persiste después de /model, es posible que un ID de modelo de 1M esté configurado en otro lugar. Consulta Configurar tu modelo para ver las ubicaciones de configuración que debes verificar en orden de prioridad.
  • Para eliminar por completo las variantes de 1M del selector de modelo, establece CLAUDE_CODE_DISABLE_1M_CONTEXT=1
Antes de v2.1.268, el mensaje terminaba con run /usage-credits to turn them on, or /model to switch to standard context y no mencionaba reiniciar.

The prompt to confirm went unanswered

Si tu cuenta requiere el consentimiento de créditos de uso de Fable, Claude Code te pide que confirmes antes de que una solicitud de Fable facture créditos de uso. Cuando la solicitud de consentimiento se cierra sin que nadie la responda, Claude Code termina el turno con uno de estos mensajes:
Los mensajes nombran el modelo Fable de la sesión, por lo que en Fable 5 dicen continuing on Fable 5 y Fable 5 now uses usage credits. Antes de v2.1.257, el primer mensaje comenzaba con Fable 5 limit reached. Esto sucede en sesiones de Remote Control, sesiones en segundo plano, sesiones de compañeros de un equipo de agentes y sesiones que otra aplicación aloja a través del Agent SDK. Para saber cuándo Claude Code cierra la solicitud, consulta Fable y créditos de uso. Qué hacer:
  • Donde se ejecuta la sesión, en la terminal o en la aplicación que la aloja, envía otro prompt y responde la solicitud de consentimiento cuando vuelva a aparecer. Para una sesión en segundo plano, primero conéctate a ella desde la vista de agentes. Reenviar desde un cliente de Remote Control vuelve a mostrar este mensaje, porque el cliente no puede mostrar la solicitud.
  • Ejecuta /model para cambiar a un modelo que no facture créditos de uso
  • Para darte más tiempo, establece dialogExpiry en un valor más largo o en "never"
Antes de v2.1.236, este mensaje no aparecía: mientras un cliente de Remote Control estaba conectado, Claude Code esperaba 60 segundos una respuesta y luego continuaba el turno con tu modelo predeterminado.

Server is temporarily limiting requests

La API aplicó una limitación de corta duración que no está relacionada con la cuota de tu plan.
Claude Code distingue esto del límite de tu plan por la ausencia de los encabezados de cuota unificada que incluye una respuesta de límite real. A partir de v2.1.199, esto se reintenta automáticamente con retroceso antes de mostrarse, sin importar cómo te autentiques. En versiones anteriores, una sesión iniciada con una suscripción de claude.ai hacía fallar el turno en la primera ocurrencia; solo los inicios de sesión con clave de API y de Enterprise lo reintentaban. Qué hacer:

Request rejected (429)

Alcanzaste el rate limit configurado para tu clave de API, tu proyecto de Amazon Bedrock o tu proyecto de Google Cloud.
La oración final indica dónde verificar el estado del servicio y varía según el proveedor. Las configuraciones de Amazon Bedrock, Agent Platform de Google Cloud y Microsoft Foundry nombran el estado del servicio de ese proveedor en lugar de la página de estado de Anthropic. Un ANTHROPIC_BASE_URL personalizado nombra el host del gateway. Cuando un proxy, un balanceador de carga o un gateway entre Claude Code y la API responde con su propia página HTML 429, el texto después del · es el título de esa página cuando lo tiene, como Too Many Requests. Antes de v2.1.281, se imprimía todo el marcado de la página después del ·. Qué hacer:
  • Ejecuta /status y confirma que la credencial activa es la que esperas. Un ANTHROPIC_API_KEY olvidado en tu entorno puede enrutar las solicitudes a través de una clave de nivel bajo en lugar de tu suscripción.
  • Consulta la consola de tu proveedor para ver los límites activos y solicita un nivel más alto si es necesario
  • Para claves de API de Anthropic, consulta la referencia de rate limits para ver cómo funcionan los niveles y cómo establecer límites por espacio de trabajo
  • Reduce la concurrencia: baja CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY, evita ejecutar muchos subagentes en paralelo o cambia a un modelo más pequeño con /model para ejecuciones con scripts de alto volumen

You’ve hit your monthly spend limit

El uso incluido en tu plan no puede cubrir esta solicitud, y los créditos de uso que de otro modo la pagarían alcanzaron un límite de gasto. Eso sucede cuando se agotó una de las ventanas de uso de tu plan, o cuando la solicitud es de las que solo pagan los créditos de uso, como una solicitud a un modelo que se factura con créditos de uso. El mensaje indica de quién es el límite que te bloqueó. El texto después del · dice cómo conseguir que se aumente ese límite, y varía según tu plan y si gestionas la facturación:
team's shared budget es un presupuesto compartido que un administrador asignó a un grupo al que perteneces; el mensaje no nombra el grupo. channel's monthly spend limit es el presupuesto del canal de Slack específico en el que se ejecuta la sesión, por lo que tu organización aún puede tener presupuesto fuera de él. Cuando lo que se agotó es una de las ventanas de tu plan, el mensaje también dice cuándo se reinicia esa ventana, por ejemplo · your session limit resets 3:45pm, y el acceso vuelve en ese momento sin que nadie aumente el límite. En organizaciones con facturación basada en el uso, el mensaje dice usage limit en lugar de spend limit, como en You've hit your individual usage limit. Si te conectas a través de un gateway de aplicaciones Claude y ves spend limit reached en minúsculas, se trata en cambio del límite del operador de tu gateway; consulta Spend limit reached. Qué hacer:
  • En Pro y Max, aumenta tu límite de gasto mensual en Settings > Usage en claude.ai, o ejecuta /usage-credits
  • En Team y Enterprise, aumenta el límite en Organization settings > Usage si gestionas la facturación, o pídele a un administrador que lo haga. /usage-credits envía esa solicitud a tu administrador por ti
  • Para el límite de un canal, pide a un propietario de la organización o al administrador del canal que lo aumente en claude.ai. Consulta Per-channel limits en la documentación de Claude Tag
  • Si el mensaje indica una hora de reinicio para la ventana de tu plan, puedes esperar a que llegue
  • Ejecuta /usage para ver las ventanas de tu plan y cuándo se reinicia cada una

Spend limit reached

Te conectas a través de un gateway de aplicaciones Claude y superaste un límite de gasto que estableció el operador de tu gateway. El gateway bloquea tus solicitudes hasta que se reinicie el período indicado o el operador aumente el límite. Marca cada respuesta 429 bloqueada con x-should-retry: false, por lo que Claude Code muestra este mensaje sin reintentar.
El mensaje indica el período del límite y la hora de reinicio, y cuando el operador configuró un blocked_message, sus instrucciones aparecen a continuación. Antes de v2.1.225, el mensaje decía solo spend limit reached; un gateway con una versión anterior todavía envía esa forma más corta. Qué hacer:
  • Espera la hora de reinicio que indica el mensaje, o sigue las instrucciones del operador si el mensaje las incluye
  • Pide al operador de tu gateway que aumente el límite si lo alcanzas con frecuencia
Un mensaje relacionado, spend limit unavailable, significa que el gateway no pudo leer sus registros de gasto y bloqueó la solicitud como precaución, no porque superaras tu límite. Por lo general se resuelve solo; si persiste, avisa al operador de tu gateway.

Credit balance is too low

Tu organización de Console se quedó sin créditos prepagados, o Claude Code está enviando tus solicitudes con una clave de API de Console cuando querías usar tu suscripción.
Qué hacer:
  • Si tienes un plan Pro, Max, Team o Enterprise y ves esto, ejecuta /status y revisa la fila API key. Un ANTHROPIC_API_KEY aprobado en tu entorno enruta las solicitudes a través de esa clave en lugar de tu suscripción. Elimina la variable en el shell actual y quítala de tu perfil de shell, luego vuelve a iniciar claude. Ejecuta /login si aún no iniciaste sesión con tu suscripción.
  • Agrega créditos en platform.claude.com/settings/billing, y considera activar ahí la recarga automática para que el saldo se recargue antes de llegar a cero
  • Establece límites de gasto por espacio de trabajo en la Console para evitar que un solo proyecto agote el saldo de la organización. Consulta Administrar los costos de forma eficaz.

Could not update your spend limit

El servidor rechazó un cambio de límite de gasto que hiciste desde la solicitud que aparece cuando alcanzas tu límite de gasto.
Cuando el servidor explica el rechazo, el mensaje termina con esa razón, y reintentar con el mismo valor vuelve a fallar. Cuando el fallo no tiene una razón proporcionada por el servidor, como una conexión perdida, el mensaje dice Could not update your spend limit. Press Enter to retry. y reintentar puede funcionar. Antes de v2.1.216, Claude Code mostraba la forma genérica para todos los fallos. Qué hacer:
  • Si el mensaje incluye una razón, elige un límite que la cumpla, como una cantidad menor
  • Si el mensaje muestra solo la forma genérica, reintenta; el fallo puede ser transitorio
  • Si el cambio sigue fallando, hazlo en cambio desde tu configuración de facturación de claude.ai en el navegador

Errores de autenticación

Estos errores significan que Claude Code no puede demostrar ante la API quién eres. Ejecuta /status en cualquier momento para ver qué credencial está activa actualmente.

No has iniciado sesión

No hay ninguna credencial válida disponible para esta sesión.
En una sesión que ejecuta la aplicación Claude Desktop, como la pestaña Code o Cowork, el mensaje dice Authentication required · Sign in again to continue, y vuelves a iniciar sesión desde la aplicación. Si inicias sesión con tu cuenta de claude.ai en otra ventana de Claude Code que usa el mismo directorio de configuración, una sesión interactiva que muestra este mensaje empieza a usar ese inicio de sesión por sí sola. No necesitas reiniciarla. Antes de la v2.1.286 en macOS, la sesión podía seguir mostrando el mensaje después de que iniciaras sesión desde otra ventana. En esas versiones, reinicia la sesión que muestra el mensaje. Qué hacer:
  • Ejecuta /login para autenticarte con tu suscripción de Claude o tu cuenta de Console
  • Si esperabas que una variable de entorno te autenticara, confirma que ANTHROPIC_API_KEY está definida y exportada en el shell desde el que iniciaste claude
  • Para CI o automatización donde el inicio de sesión interactivo no es posible, configura un script apiKeyHelper que obtenga una clave al inicio
  • Consulta Precedencia de autenticación para entender qué credencial usa Claude Code cuando hay varias presentes
Si se te pide iniciar sesión repetidamente, consulta No has iniciado sesión o el token expiró para ver las comprobaciones del reloj del sistema y los pasos de recuperación del almacenamiento de credenciales en macOS.

No se pudo resolver el método de autenticación

La sesión llegó al cliente de la API sin ninguna credencial. Las sesiones en segundo plano y las sesiones en la nube muestran este mensaje cuando el worker se inicia sin una credencial. Las ejecuciones interactivas, con -p y del Agent SDK informan la misma condición como No has iniciado sesión y escriben esta cadena solo en su registro de depuración, así que si la encontraste ahí, sigue esa entrada en su lugar.
En las versiones actuales, el error significa que no había ninguna credencial disponible para el proceso worker. Antes de la v2.1.174, una sesión en segundo plano asignada a un worker preinicializado inactivo podía fallar de esta forma incluso cuando había credenciales válidas configuradas. Antes de la v2.1.176, también podía fallar una sesión en la nube que permanecía inactiva antes de ser reclamada. Actualiza para recuperarte. Qué hacer:
  • Actualiza a la v2.1.176 o posterior si esto aparece en una sesión en segundo plano o en la nube y tus credenciales ya están configuradas
  • Confirma que ANTHROPIC_API_KEY, CLAUDE_CODE_OAUTH_TOKEN o las credenciales de tu proveedor de nube están definidas en el entorno que inicia el worker, no solo en tu shell interactivo
  • Para el Agent SDK, consulta la configuración de autenticación en el inicio rápido
  • Ejecuta /status en una sesión interactiva en el mismo entorno para confirmar qué fuente de credenciales se resuelve

Clave de API no válida

La variable de entorno ANTHROPIC_API_KEY o el script apiKeyHelper devolvió una clave que la API rechazó, o Claude Code bloqueó una clave de ANTHROPIC_API_KEY antes de enviarla.
Cuando el mensaje continúa después de Fix external API key con una descripción como Invalid X-Api-Key header value from ANTHROPIC_API_KEY: it contains a line break at character 41 (120 characters on 2 lines)., la API nunca vio la clave. Claude Code encontró un carácter que los encabezados HTTP no pueden transportar y detuvo la solicitud antes de enviarla. Consulta Valor de encabezado de solicitud no válido para saber cómo leer la descripción y corregir el valor. Qué hacer:
  • Busca errores tipográficos y confirma que la clave no ha sido revocada en la Console
  • En el mismo shell, ejecuta env | grep ANTHROPIC, o en PowerShell Get-ChildItem Env:ANTHROPIC*. Herramientas como direnv, los plugins de shell para dotenv y las terminales de los IDE pueden cargar una clave obsoleta desde un archivo .env de tu proyecto sin que la definas explícitamente.
  • Elimina ANTHROPIC_API_KEY y ejecuta /login para usar en su lugar la autenticación por suscripción
  • Si la clave proviene de un script apiKeyHelper, ejecuta el script directamente para confirmar que imprime una clave válida en stdout
  • Ejecuta /status para confirmar qué fuente de credenciales está usando realmente Claude Code

Tu script apiKeyHelper está fallando

Claude Code ejecutó el comando de tu ajuste apiKeyHelper y no obtuvo una clave. Sin ella, la solicitud llega a la API con una credencial de marcador de posición, y la API la rechaza con 401. El panel Authentication de la terminal muestra cuál de estas situaciones ocurrió:
  • El comando terminó con un error o se agotó su tiempo de espera
  • El comando no imprimió nada en stdout
  • El comando imprimió algo además de la clave, como un banner de inicio de sesión o una línea de registro. El panel muestra returned output that cannot be used as an API key e indica qué está mal, sin repetir la salida. Antes de la v2.1.227, Claude Code enviaba lo que el comando imprimiera, tras recortar los espacios en blanco circundantes.
En el modo no interactivo, stderr también incluye el motivo específico, con el prefijo apiKeyHelper failed:. Claude Code vuelve a ejecutar el script y reintenta la solicitud hasta dos veces más antes de mostrar este mensaje, así que el fallo aparece en un máximo de tres intentos. Antes de la v2.1.208, Claude Code agotaba todo el presupuesto de reintentos reenviando la solicitud con la credencial de marcador de posición y luego informaba un error de autenticación 401 genérico en lugar del fallo del script. Ejecutar /login no ayuda en este caso: la salida del helper tiene precedencia sobre un inicio de sesión guardado mientras el ajuste esté presente. Qué hacer:
  • Ejecuta directamente en tu shell el comando configurado en apiKeyHelper para reproducir el fallo
  • Si el comando informa una sesión expirada, vuelve a autenticarte con tu proveedor de credenciales, por ejemplo iniciando sesión de nuevo en tu SSO o en tu almacén de secretos
  • Corrige el comando para que imprima solo la clave en stdout, como un único token de ASCII imprimible de hasta 16,384 caracteres, y termine con el código de salida 0. Consulta rotar credenciales con apiKeyHelper para ver una configuración funcional.
  • Ejecuta /status para ver el fallo y confirmar que apiKeyHelper es la fuente de credenciales activa. La fila apiKeyHelper muestra Failing con el detalle del último fallo, como el código de salida y la salida de error del comando, y desaparece después de la siguiente ejecución correcta. Antes de la v2.1.274, /status mostraba solo la fuente de credenciales, no el fallo.
  • Cada vez que el comando falla, su código de salida y su salida de error también aparecen en un panel Authentication en la terminal. Antes de la v2.1.212, el panel se titulaba Cloud authentication.

Valor de encabezado de solicitud no válido

Un valor que Claude Code estaba a punto de enviar como encabezado de solicitud contiene un carácter que los encabezados HTTP no pueden transportar: un salto de línea, un byte NUL o un carácter por encima de U+00FF, como una comilla tipográfica o un espacio de ancho cero. Claude Code detiene la solicitud antes de enviar nada e indica la variable o el ajuste que debes corregir. La causa habitual es una credencial pegada desde un documento o un chat que traía un carácter invisible o un salto de línea sobrante. Claude Code realiza esta comprobación cuando envía solicitudes a la API de Claude directamente o a través de un gateway de LLM. En un proveedor de nube de terceros como Amazon Bedrock, Claude Code no la realiza antes de enviar.
La primera parte del mensaje depende de dónde provino el valor incorrecto:
  • Invalid auth token: un token bearer de ANTHROPIC_AUTH_TOKEN o CLAUDE_CODE_OAUTH_TOKEN
  • Invalid ANTHROPIC_CUSTOM_HEADERS: un nombre o valor de encabezado que definiste en ANTHROPIC_CUSTOM_HEADERS. La descripción indica por número qué par Name: Value es el problemático, como distinct header 2 of 3 parsed from ANTHROPIC_CUSTOM_HEADERS, sin repetir el nombre ni el valor, ya que tú elegiste ambos.
  • Invalid request header from the environment: un valor que Claude Code copia en un encabezado de solicitud desde otra variable de entorno, como CLAUDE_AGENT_SDK_CLIENT_APP. La descripción indica la variable que debes corregir.
Claude Code informa un ANTHROPIC_API_KEY incorrecto detectado por esta comprobación como Clave de API no válida, con la misma descripción final. En cambio, informa una credencial de /login guardada incorrecta como No has iniciado sesión; ejecuta /login para guardar una nueva. La salida de un script apiKeyHelper nunca llega a esta comprobación: Claude Code la valida cuando se ejecuta el script, y una salida que un encabezado HTTP no puede transportar falla con Tu script apiKeyHelper está fallando. Después del segundo ·, el mensaje describe el problema, como en este ejemplo completo:
Las posiciones cuentan caracteres empezando por uno. La descripción se construye a partir de frases fijas y recuentos de caracteres, así que nunca incluye el valor en sí. Nombra el carácter problemático solo cuando es un carácter invisible o tipográfico conocido, como una marca de orden de bytes, un espacio de ancho cero o una comilla tipográfica, e informa cualquier otro como a non-ASCII character. Qué hacer:
  • Vuelve a definir la variable o el ajuste que indica el mensaje, escribiendo de nuevo a mano los caracteres alrededor de la posición informada en lugar de pegarlos otra vez desde la misma fuente
  • Para ANTHROPIC_CUSTOM_HEADERS, mantén un par Name: Value por línea y reescribe el par que indica el mensaje
  • Ejecuta /status para confirmar qué fuente de credenciales está activa

Esta organización ha sido deshabilitada

Claude Code está usando un ANTHROPIC_API_KEY obsoleto de una organización de Console deshabilitada. Cuando tienes un inicio de sesión de suscripción guardado, la clave tiene prioridad sobre él.
La sugerencia después del · depende de tus credenciales guardadas: la primera forma aparece cuando un /login almacenado puede tomar el relevo después de que elimines la clave, y la segunda cuando la clave es tu única credencial. Las variables de entorno tienen precedencia sobre /login, así que una clave exportada en tu perfil de shell o cargada desde un archivo .env se usa incluso cuando tienes una suscripción Pro o Max que funciona. En el modo no interactivo (-p), la clave siempre se usa cuando está presente. Qué hacer:
  • Elimina ANTHROPIC_API_KEY en el shell actual y quítala de tu perfil de shell; luego vuelve a iniciar claude
  • Si el mensaje dice Update or unset, no tienes ningún inicio de sesión guardado al que recurrir. Elimina la clave y ejecuta /login, o reemplaza la clave por una de una organización de Console activa.
  • Ejecuta /status después para confirmar que la credencial activa es tu suscripción
  • Si no hay ninguna variable de entorno definida y el error persiste, contacta con soporte o inicia sesión con otra cuenta.

Tu organización ha deshabilitado la autenticación con clave de API

Este mensaje requiere Claude Code v2.1.169 o posterior. El administrador de tu organización de Console ha desactivado la autenticación con clave de API, así que la API rechaza la clave que envía Claude Code. La sugerencia de recuperación después del · varía según el origen de la clave:
La última forma aparece en una sesión que ejecuta la aplicación Claude Desktop, como la pestaña Code o Cowork, donde vuelves a iniciar sesión desde la aplicación. Las variables de entorno y apiKeyHelper tienen precedencia sobre /login, así que ejecutar solo /login no ayuda mientras cualquiera de ellos siga proporcionando una clave. Consulta Precedencia de autenticación. Qué hacer:
  • Si el mensaje menciona ANTHROPIC_API_KEY, elimínala en el shell actual y quítala de tu perfil de shell o de tu archivo .env; luego vuelve a iniciar claude
  • Si el mensaje menciona apiKeyHelper, quita el ajuste apiKeyHelper de tu settings.json
  • Ejecuta /login para iniciar sesión con tu cuenta de claude.ai
  • Ejecuta /status después para confirmar que la credencial activa es tu suscripción y no una clave de API
  • Si necesitas la autenticación con clave de API para automatización, pide al administrador de tu organización que la vuelva a habilitar en la Console

Tu organización ha deshabilitado el acceso con suscripción de Claude

Tu organización de Claude no permite iniciar sesión en Claude Code con un inicio de sesión de suscripción. Volver a ejecutar /login con la misma cuenta devuelve el mismo error.
Se trata de un ajuste de la organización del lado del servidor, así que no se puede sobrescribir desde la configuración local, las variables de entorno ni los flags de la CLI. El Agent SDK y el modo no interactivo -p muestran esto como el código de error oauth_org_not_allowed. Qué hacer:
  • Pide a tu administrador que habilite el acceso a Claude Code para tu organización
  • Autentícate con una clave de API de Console en lugar de tu suscripción. Consulta Autenticación con Claude Console para configurarla.
  • Si eres el administrador y no ves ninguna opción para habilitar el acceso, contacta con el soporte de Anthropic

Las rutinas están deshabilitadas por la política de tu organización

Un Owner de tu organización Team o Enterprise ha desactivado las rutinas a nivel de organización. El error aparece cuando intentas crear o ejecutar una rutina, por ejemplo desde la interfaz de Rutinas en claude.ai/code. En Claude Code v2.1.227 o posterior, el mismo ajuste también oculta /schedule en la CLI.
Se trata de un ajuste del lado del servidor, así que no se puede sobrescribir desde la configuración local, las variables de entorno ni los flags de la CLI. Qué hacer:

Remote Control requiere la API de Anthropic

La sesión no se comunica directamente con la API de Anthropic, algo que Remote Control requiere.
Una segunda oración explica qué desvió la sesión de la API de Anthropic; antes de la v2.1.219, el mensaje consistía solo en la primera oración. Según la causa, el mensaje menciona:
  • Una variable de proveedor CLAUDE_CODE_USE_*, como CLAUDE_CODE_USE_BEDROCK para Amazon Bedrock o CLAUDE_CODE_USE_VERTEX para Agent Platform de Google Cloud
  • ANTHROPIC_BASE_URL apuntando a un host distinto de api.anthropic.com, como un gateway de LLM o un proxy, incluso cuando inicias sesión con claude.ai; antes de la v2.1.196, una URL base personalizada no bloqueaba Remote Control
  • ANTHROPIC_UNIX_SOCKET definida, de modo que la sesión envía sus solicitudes a través de un socket local en lugar de a api.anthropic.com
  • Un inicio de sesión en un gateway en la nube empresarial realizado mediante /login, que no admite Remote Control y no tiene ninguna variable que eliminar
Qué hacer:
  • Elimina la variable que menciona el mensaje, como CLAUDE_CODE_USE_BEDROCK o ANTHROPIC_BASE_URL, y reinicia la sesión, o inicia Remote Control desde una sesión que se comunique directamente con la API de Anthropic
  • Si la variable no está definida en tu shell, revisa la clave env en tus archivos de configuración, que aplica variables de entorno a todas las sesiones
  • Para este y los demás mensajes de inicio de Remote Control, consulta Solución de problemas de Remote Control

Remote Control no pudo renovar tu inicio de sesión

Claude Code mantiene una conexión de Remote Control activa con credenciales de corta duración que obtiene y renueva usando tu inicio de sesión de claude.ai guardado. Cuando claude.ai deja de aceptar ese inicio de sesión, o Claude Code ya no tiene ningún inicio de sesión guardado, Claude Code detiene Remote Control y necesita que vuelvas a iniciar sesión. Cualquiera de los dos fallos puede ocurrir mientras Claude Code todavía se está conectando o más tarde, cuando renueva las credenciales. Cuando Claude Code pide al servicio de inicio de sesión que renueve tu inicio de sesión guardado y no obtiene respuesta, mantiene Remote Control en funcionamiento y vuelve a intentar la renovación mientras la credencial actual de la conexión siga siendo válida. Una renovación no obtiene respuesta cuando Claude Code no puede llegar al servicio de inicio de sesión, se agota el tiempo de espera de la solicitud o el servicio falla sin rechazar tu inicio de sesión. Si el servicio de inicio de sesión sigue sin responder cuando esa credencial expira, Claude Code detiene Remote Control e informa OAuth token refresh failed. Cuando Claude Code detiene Remote Control, muestra el motivo en una advertencia y en una línea de la transcripción que empieza por Remote Control disconnected. Tu sesión local sigue ejecutándose sin Remote Control. Esta sección cubre estas líneas:
Claude Code indica la causa en la parte central del mensaje:
  • Claude.ai login expired y Claude.ai login was rejected: claude.ai ya no acepta tu token de inicio de sesión guardado, porque expiró o fue revocado
  • OAuth token unavailable: Claude Code no tenía ningún token de inicio de sesión guardado cuando correspondía renovar la credencial de la conexión
  • OAuth token refresh failed: claude.ai rechazó tu token de inicio de sesión guardado mientras Claude Code se reconectaba, y la renovación del token no produjo uno nuevo
  • JWT refresh failed: no OAuth token: Claude Code no encontró ningún token de inicio de sesión guardado con el que renovar
  • Signed out of Claude: cerraste sesión en esta máquina, por ejemplo ejecutando /logout en otra terminal, así que Claude Code no tiene ningún inicio de sesión guardado con el que renovar la conexión
Qué hacer:
  • Ejecuta /login para volver a iniciar sesión
  • Ejecuta /remote-control para reconectar la sesión. Los mensajes que terminan en run /login to restore Remote Control no necesitan este paso: Claude Code se reconecta por sí solo una vez que inicias sesión.
Antes de la v2.1.224, OAuth token refresh failed — run /login to re-authenticate decía OAuth token refresh failed — re-authenticate, then re-enable Remote Control, y JWT refresh failed: no OAuth token — run /login decía no OAuth token available for recovery (code <N>). Los mensajes Claude.ai login expired, Claude.ai login was rejected y OAuth token unavailable se añadieron en la v2.1.225. Antes de la v2.1.238, Claude Code informaba los casos que ahora dicen Signed out of Claude como JWT refresh failed: no OAuth token — run /login, y detenía Remote Control con Claude.ai login expired — run /login to restore Remote Control en cuanto una renovación del inicio de sesión no obtenía respuesta.

Remote Control could not renew this computer’s connection

Esta advertencia aparece en la terminal que ejecuta claude remote-control cuando el servidor no puede usar tu inicio de sesión de claude.ai para renovar la credencial de su conexión antes de que caduque. La última oración de la advertencia indica cuánto tiempo sigue funcionando la credencial actual, o que ya caducó:
Qué hacer:
  • Si la advertencia te indica que ejecutes claude /login, abre otra terminal en la máquina que ejecuta el servidor, ejecuta claude /login allí e inicia sesión con tu cuenta de claude.ai
  • Si el servidor sigue sin poder iniciar sesión una vez que la credencial de la conexión caducó, imprime un error que contiene Poll: Authentication failed (401) y se detiene. Vuelve a iniciar sesión como indica la segunda oración de la advertencia y luego ejecuta de nuevo claude remote-control en la terminal donde se detuvo el servidor.

Remote Control se detuvo porque cambió la cuenta con la que iniciaste sesión

Claude Code muestra esta línea durante una sesión de Remote Control cuando inicias sesión en otra cuenta u organización de claude.ai en esta máquina. Hiciste el cambio fuera de la sesión de Claude Code, por ejemplo ejecutando /login en otra terminal. Una sesión de Remote Control que iniciaste con una sesión abierta mediante /login pertenece a la cuenta y la organización de claude.ai con las que tenías la sesión iniciada en ese momento.
Claude Code detiene la sesión de Remote Control en cuanto claude.ai confirma que la cuenta o la organización cambió. Tu sesión local sigue ejecutándose sin Remote Control. Qué hacer:
  • Ejecuta /remote-control para iniciar una nueva sesión de Remote Control con la cuenta u organización actual
  • Para volver a la anterior, ejecuta /login e inicia sesión de nuevo en la cuenta u organización anterior. Luego ejecuta /remote-control.
Antes de la v2.1.234, Claude Code no detectaba cuándo cambiabas a otra cuenta u organización fuera de la sesión de Claude Code. Claude Code mantenía conectada la sesión de Remote Control hasta que una solicitud posterior al servidor de Remote Control fallaba con Remote Control server rejected the request (HTTP 404). Ese fallo podía producirse horas después del cambio.

Remote Control se detuvo porque la aplicación que ejecuta la sesión cerró sesión o cambió de cuenta

Cuando la aplicación de escritorio de Claude o un IDE aloja tu sesión, Claude Code obtiene su token de inicio de sesión de esa aplicación en lugar de /login. Cuando claude.ai rechaza ese token, Claude Code pide uno nuevo a la aplicación. Si la aplicación responde que no tiene la sesión iniciada, o que ahora tiene la sesión iniciada en otra cuenta de Claude, Claude Code finaliza la sesión de Remote Control y envía a la aplicación una de estas líneas:
Tu sesión local sigue ejecutándose sin Remote Control. Qué hacer:
  • Si la aplicación cerró sesión, vuelve a iniciar sesión en ella y luego reactiva Remote Control en la aplicación
  • Si la aplicación cambió de cuenta, Claude Code no puede continuar la sesión finalizada con la nueva cuenta. Inicia una nueva sesión de Remote Control con esa cuenta.
Antes de la v2.1.238, Claude Code enviaba a la aplicación los mensajes run /login enumerados en Remote Control no pudo renovar tu inicio de sesión en ambos casos.

Token de OAuth revocado o expirado

Tu inicio de sesión guardado ya no es válido. Un token revocado significa que cerraste sesión en todas partes o que un administrador eliminó el acceso; un token expirado significa que la renovación automática falló a mitad de la sesión. Ambos mensajes informan un rechazo que la API devolvió para una solicitud que envió Claude Code. Cuando el inicio de sesión guardado ya se ha borrado tras una renovación fallida, ves Inicio de sesión expirado en su lugar. Si te autenticas con un token de larga duración en CLAUDE_CODE_OAUTH_TOKEN, ves los mismos mensajes cuando ese token expira o se revoca.
En el modo no interactivo (-p) y en el Agent SDK, los mensajes dicen lo siguiente, y el código de error estructurado es authentication_failed:
Antes de la v2.1.287, en el modo no interactivo y en el Agent SDK, el mensaje de token revocado decía Your account does not have access to Claude. Please login again or contact your administrator. Qué hacer:
  • Ejecuta /login en el prompt de Claude Code para volver a iniciar sesión
  • Si tu comando -p o tu programa del Agent SDK usa un inicio de sesión guardado, ejecuta claude en el mismo entorno, completa /login y luego vuelve a ejecutar el comando o el programa. Para automatización que no puede iniciar sesión de forma interactiva, autentícate con ANTHROPIC_API_KEY o genera un token de larga duración con claude setup-token.
  • Si te autenticas con la variable de entorno CLAUDE_CODE_OAUTH_TOKEN, Claude Code sigue enviando el valor que definiste después de que una solicitud falle con un 401, en lugar de cambiar al token de un inicio de sesión almacenado. /status muestra esta credencial como una fila Auth token que dice CLAUDE_CODE_OAUTH_TOKEN. Genera un token nuevo con claude setup-token y reinicia con él, o elimina la variable y ejecuta /login. Antes de la v2.1.225, Claude Code podía reemplazar el valor de la variable a mitad de la sesión con el token de acceso de corta duración de un inicio de sesión almacenado, y la sesión volvía a fallar con errores 401 una vez que ese token expiraba.
  • Si se te pide iniciar sesión repetidamente entre ejecuciones, consulta las comprobaciones del reloj del sistema y los pasos de recuperación del almacenamiento de credenciales en macOS en Solución de problemas
  • Para otros fallos, incluidos 403 Forbidden y problemas de OAuth en el navegador, consulta Inicio de sesión y autenticación

API Error: 401 Invalid authentication credentials

La API reconoció el formato de tu credencial pero rechazó la cuenta o la organización asociada. Anthropic devuelve este mensaje cuando una credencial se revocó recientemente, cuando una organización se deshabilitó o eliminó tu acceso, o cuando la propia cuenta se desactivó, así que la causa no es un token expirado. La credencial puede ser tu inicio de sesión guardado o un ANTHROPIC_API_KEY aprobado, y la solución es distinta en cada caso, así que empieza ejecutando /status para ver cuál está activa.
Qué hacer:
  • Si /status muestra una fila API key que no está marcada como no en uso, un ANTHROPIC_API_KEY aprobado es la credencial activa y tiene precedencia sobre tu inicio de sesión, así que /login no lo reemplaza. Rota la clave en Claude Console, o vuelve a tu suscripción ejecutando unset ANTHROPIC_API_KEY, o en PowerShell Remove-Item Env:ANTHROPIC_API_KEY.
  • Si /status muestra solo tu inicio de sesión, ejecuta /login una vez. Si la credencial se revocó, un nuevo inicio de sesión la reemplaza.
  • Si el mismo mensaje vuelve a aparecer con la misma cuenta de inicio de sesión, la cuenta o la organización ya no está activa. Comprueba la cuenta y la organización que informa /status, y pide al administrador de tu organización que restaure el acceso.
  • Si ANTHROPIC_BASE_URL apunta a un gateway de LLM, el texto después de 401 es el mensaje de tu gateway y no el de Anthropic, y /login no lo cambia. Corrige en su lugar la credencial que espera tu gateway.

Inicio de sesión expirado

Claude Code intentó renovar tu inicio de sesión de claude.ai guardado y el servicio de OAuth rechazó el token de renovación almacenado, así que Claude Code borró las credenciales guardadas. A partir de ese momento, cada solicitud al modelo se detiene localmente con este mensaje antes de llegar a la API, porque solo /login puede crear credenciales nuevas. Antes de la v2.1.206, Claude Code enviaba la solicitud al modelo de todos modos con la credencial que quedara en el entorno, y entonces todos los modelos fallaban con Hay un problema con el modelo seleccionado o con un 401 en lugar de pedirte que iniciaras sesión.
En el modo no interactivo (-p) y en el Agent SDK, el mensaje dice lo siguiente, y el código de error estructurado es authentication_failed:
Para un mensaje Login expired que termina en or re-authenticate your Anthropic profile, consulta Anthropic profile login expired. Este no es el mismo estado que Token de OAuth revocado o expirado. Esos mensajes informan un rechazo que devolvió la API. Claude Code genera por sí mismo Login expired para un inicio de sesión que ya no logró renovar, así que no envía ninguna solicitud. Cuando la renovación falla porque la propia cuenta está suspendida y no porque el inicio de sesión esté obsoleto, Claude Code muestra Tu cuenta está en espera en su lugar. Las sesiones autenticadas con una clave de API, CLAUDE_CODE_OAUTH_TOKEN o un proveedor de terceros no usan el inicio de sesión guardado y nunca ven este mensaje. Puedes comprobar este estado antes de que falle una solicitud: /status muestra una fila Login que dice Expired — log in again, junto con la organización y el correo electrónico que tiene guardados para el inicio de sesión expirado. La fila aparece solo cuando el inicio de sesión guardado es tu credencial activa y ya no se puede renovar. Las sesiones autenticadas de otra forma no muestran la fila, aunque siga guardado un inicio de sesión expirado. Antes de la v2.1.210, /status no daba ninguna indicación en este estado de que alguna vez hubiera existido un inicio de sesión, porque la credencial borrada no le dejaba nada que informar. Qué hacer:
  • Ejecuta /login para volver a iniciar sesión. Reintentar sin iniciar sesión muestra el mismo mensaje en cada solicitud.
  • Si inicias sesión con tu cuenta de claude.ai en otra ventana de Claude Code, consulta No has iniciado sesión para saber cuándo esta sesión empieza a usar ese inicio de sesión por sí sola.
  • En el modo no interactivo, ejecuta claude en el mismo entorno, completa /login y luego vuelve a ejecutar tu comando. Para automatización que no puede iniciar sesión de forma interactiva, autentícate con ANTHROPIC_API_KEY o genera un token de larga duración con claude setup-token.
  • Si el inicio de sesión sigue fallando, consulta Inicio de sesión y autenticación

No se pudo renovar tu inicio de sesión porque otro proceso de Claude Code lo está renovando

Este mensaje no significa que se rechazara tu inicio de sesión. Tu inicio de sesión de claude.ai guardado había expirado y necesitaba renovarse. Otro proceso de Claude Code en la misma máquina tenía el bloqueo de renovación compartido, o terminó y lo dejó tomado, y la renovación no avanzó mientras esta sesión esperaba. Claude Code detiene la solicitud antes de enviarla:
En el modo no interactivo (-p) y en el Agent SDK, el mensaje dice lo siguiente, y el código de error estructurado es server_error:
Las sesiones autenticadas con una clave de API, CLAUDE_CODE_OAUTH_TOKEN o un proveedor de terceros no usan el inicio de sesión guardado y nunca ven este mensaje. Qué hacer:
  • Vuelve a intentarlo en un minuto. Si otro proceso completa antes la renovación, esta sesión usa el inicio de sesión renovado.
  • Si el mensaje sigue apareciendo, cierra las demás ventanas y procesos de Claude Code y luego reintenta.
  • Si vuelve a aparecer sin ningún otro proceso de Claude Code en ejecución, ejecuta /login. Volver a iniciar sesión no espera al bloqueo de renovación.

No se pudo guardar tu inicio de sesión

Iniciaste sesión con claude.ai, pero Claude Code no pudo guardar el inicio de sesión en su almacén de credenciales, así que el inicio de sesión no se completó. En macOS esto puede ocurrir cuando el llavero de inicio de sesión se bloquea, por ejemplo al entrar en reposo o por inactividad, después de que Claude Code ya haya leído o guardado credenciales en él durante la misma sesión.
La primera forma aparece en macOS y la segunda en todos los demás sistemas. Un fallo transitorio del almacén de credenciales, como un tiempo de espera agotado o un almacén ilegible, produce el mismo mensaje. Qué hacer:
  • En macOS, desbloquea el llavero de inicio de sesión y luego vuelve a ejecutar /login
  • En otras plataformas, vuelve a ejecutar /login
  • Si el inicio de sesión sigue sin guardarse, consulta No has iniciado sesión o el token expiró para ver el comando para desbloquear el llavero y otros pasos de recuperación del almacenamiento de credenciales

No se pudo iniciar el servidor de callback de OAuth

Cuando /login, claude auth login o claude setup-token te inician sesión a través del navegador, Claude Code abre un puerto de escucha en 127.0.0.1 para que tu navegador pueda devolverle el resultado del inicio de sesión. Este mensaje significa que Claude Code no pudo abrir ese puerto, y el inicio de sesión se detiene antes de que aparezca una ventana del navegador o una URL de inicio de sesión:
Si tu mensaje termina en Is port 0 in use?, el intento de escuchar en la dirección de loopback IPv4 127.0.0.1 falló por completo. Como el fallo ocurre antes de que exista una URL de inicio de sesión, el flujo Paste code here if prompted no está disponible como alternativa. Qué hacer:
  • Para iniciar sesión de inmediato sin el listener local: si usas una suscripción de claude.ai, ejecuta claude setup-token en una máquina donde el inicio de sesión funcione y define el token que imprime como CLAUDE_CODE_OAUTH_TOKEN en esta máquina. De lo contrario, define ANTHROPIC_API_KEY con una clave de Claude Console. Precedencia de autenticación explica cómo elige Claude Code entre credenciales.
  • Para usar en su lugar el inicio de sesión por navegador en esta máquina, Claude Code debe poder escuchar en 127.0.0.1. Si se ejecuta dentro de un sandbox, comprueba que la política del sandbox permita escuchar en puertos locales y luego vuelve a ejecutar /login. Si debería poder hacerlo y sigue fallando, ejecuta /feedback para que el informe incluya los detalles de tu entorno.

Inicio de sesión de Claude no aceptado

Intentaste iniciar una sesión en la nube, y el servidor se negó a crearla con un 401: no aceptó el inicio de sesión de Claude que envió esta máquina, normalmente porque el inicio de sesión expiró o fue revocado. La primera parte de la línea es el motivo propio del servidor cuando lo proporciona. De lo contrario, la línea dice:
Qué hacer:
  • Ejecuta /login, completa el inicio de sesión y luego vuelve a iniciar la sesión

Los artefactos necesitan un inicio de sesión de claude.ai

Claude Code rechazó la publicación o lectura de un artefacto porque la sesión no tiene ningún inicio de sesión de claude.ai que pueda usar para artefactos. Todas las formas del mensaje empiezan con las mismas palabras, seguidas de una solución que depende de cómo se autentica tu sesión. Sin ninguna credencial en conflicto, dice:
Qué hacer:
  • Ejecuta /login y selecciona Claude account with subscription. La opción Anthropic Console account no proporciona credenciales de claude.ai.
  • Cuando el mensaje menciona una credencial que tiene precedencia, como ANTHROPIC_API_KEY, un ajuste apiKeyHelper o una clave de Console guardada por un /login anterior, quítala como indica el mensaje y luego ejecuta /login
  • Cuando el mensaje dice que esta sesión remota se autentica a través de la máquina que la inició, inicia sesión en claude.ai en esa máquina y luego reconecta la sesión
  • Cuando el mensaje dice que la credencial la inyecta el entorno anfitrión de la sesión, no puedes cambiarla en esa sesión; inicia una sesión que tenga la sesión de claude.ai iniciada
  • Consulta Disponibilidad para ver los demás requisitos de los artefactos, como el plan, el proveedor del modelo y la política de la organización

La política del administrador requiere un inicio de sesión en el gateway en la nube

La configuración administrada de un administrador en esta máquina establece forceLoginMethod en "gateway" o define forceLoginGatewayUrl. A menos que selecciones un proveedor de nube mediante una variable como CLAUDE_CODE_USE_BEDROCK, Claude Code acepta entonces solo el inicio de sesión del gateway de aplicaciones de Claude. Ves uno de dos mensajes:
Las solicitudes al modelo fallan con este mensaje cuando la sesión no tiene un inicio de sesión en el gateway, por ejemplo porque no has ejecutado /login desde que la política llegó a la máquina. Si la máquina también tiene una credencial emitida por Anthropic y la configuración administrada establece forceLoginMethod o forceLoginOrgUUID, Claude Code termina al inicio en su lugar. Esa credencial puede ser una variable ANTHROPIC_API_KEY o ANTHROPIC_AUTH_TOKEN, un ajuste apiKeyHelper o una clave de API guardada por un inicio de sesión anterior en Claude Console. El mensaje de inicio indica la credencial con la que está configurada la sesión, dónde está definida y el paso para quitarla. Por ejemplo, con una variable ANTHROPIC_API_KEY definida en tu shell, dice:
Qué hacer:
  • Para Not signed in to the Cloud gateway, ejecuta /login y completa el inicio de sesión en la pantalla Cloud gateway
  • Para el mensaje de inicio, quita la credencial siguiendo los pasos que aparecen al final del mensaje
  • Si crees que la máquina no debería requerir el gateway, pide al administrador que la gestiona que quite forceLoginMethod y forceLoginGatewayUrl de su configuración administrada
Antes de la v2.1.284, el mensaje de inicio enumeraba las credenciales posibles en lugar de nombrar la configurada. Empezaba con Administrator policy requires a Cloud gateway sign-in on this machine; the Anthropic-issued credential configured here (ANTHROPIC_API_KEY, ANTHROPIC_AUTH_TOKEN, or apiKeyHelper) is not used. Si ves ese texto y no puedes saber qué credencial quitar, actualiza a la v2.1.284 o posterior y vuelve a iniciar claude. En la v2.1.265, una regresión también mostraba el primer mensaje en algunas configuraciones de gateway de LLM y de proxy que se autentican con una clave de API, apiKeyHelper o encabezados personalizados, incluso sin ningún requisito del administrador en la máquina. Actualiza a la v2.1.266 o posterior. No necesitas cambiar tu configuración. Antes de la v2.1.261, en máquinas que establecían forceLoginMethod en "gateway", Claude Code usaba un inicio de sesión guardado sobrante en lugar de hacer fallar las solicitudes al modelo, e informaba una credencial de entorno configurada con This machine's managed settings require a first-party login en lugar del mensaje de inicio.

Tu cuenta está en espera

La cuenta de Claude asociada a tu inicio de sesión ha sido suspendida. Claude Code muestra el primer mensaje cuando intenta renovar tu inicio de sesión guardado y se entera de la suspensión, y el segundo cuando lo informa un inicio de sesión que completas en el navegador:
Volver a iniciar sesión con la misma cuenta no elimina el mensaje, porque la suspensión afecta a la cuenta y no al inicio de sesión. En el modo no interactivo (-p) y en el Agent SDK, el código de error estructurado es account_on_hold. Antes de la v2.1.235, Claude Code informaba una cuenta en espera como Login expired · Please run /login, cuyos pasos de recuperación no pueden eliminar una suspensión. Qué hacer:
  • Abre el enlace del mensaje para ver los detalles de la suspensión o apelarla
  • Si tienes otra cuenta de Claude o una clave de API que no se ve afectada por la suspensión, puedes seguir trabajando mientras se resuelve: ejecuta /login con esa cuenta, o define la clave con ANTHROPIC_API_KEY

Inicio de sesión del perfil de Anthropic expirado

Claude Code se está autenticando mediante un perfil de credenciales de Anthropic cuya credencial de inicio de sesión guardada ha expirado, y el perfil no contiene ninguna credencial de renovación que Claude Code pueda usar para renovarla. Claude Code detiene cada solicitud localmente sin reintentar.
Qué hacer:
  • Si el mensaje empieza por Login expired, ejecuta /login para volver a iniciar sesión
  • Para renovar un perfil que escribió el inicio de sesión sin clave de Console o el ant auth login de la CLI de Claude Platform, ejecuta /login en una máquina que ofrezca el inicio de sesión sin clave. Elige la cuenta de Anthropic Console y luego Sign in with your Console account. Claude Code reemplaza la credencial expirada en ese perfil
  • Para renovar un perfil que creó otra herramienta, vuelve a iniciar sesión con esa herramienta. Si en su lugar eliges Sign in with your Console account en /login, Claude Code deja el perfil como está y crea una clave de API
  • Si un administrador aprovisionó la credencial del perfil, pídele que emita una nueva
  • Ejecuta /status para confirmar la fuente de credenciales activa y el nombre del perfil
  • Para dejar de usar el perfil, elimina ANTHROPIC_PROFILE si la definiste y luego autentícate de otra forma, como /login o ANTHROPIC_API_KEY
La forma en que empieza el mensaje te indica cómo encontró Claude Code el perfil:
  • Cuando Claude Code descubrió el perfil desde tu directorio de configuración y su modo de autenticación es user_oauth, el mensaje empieza por Login expired y ofrece /login primero. Claude Code da a un /login que funcione precedencia sobre el perfil descubierto y luego se autentica con tu cuenta de claude.ai en su lugar. Desde v2.1.234 hasta v2.1.277, esta forma decía Anthropic profile login expired · Run /login to use your claude.ai account instead, or re-authenticate the profile. Antes de v2.1.234, Claude Code también mostraba la forma Re-authenticate your Anthropic profile en este caso.
  • Cuando seleccionaste el perfil con ANTHROPIC_PROFILE, el mensaje empieza por Anthropic profile login expired.
Esto aparece solo cuando la credencial activa proviene de un perfil de credenciales de Anthropic: uno que seleccionas con la variable de entorno ANTHROPIC_PROFILE, uno que Claude Code descubre como el perfil activo en tu directorio de configuración de Anthropic, o uno que Claude Code escribió cuando iniciaste sesión sin una clave de API. Las sesiones que se autentican con una clave de API, un token bearer como ANTHROPIC_AUTH_TOKEN o un proveedor de terceros nunca ven este mensaje.

Requisito de alcance de OAuth

El token almacenado es anterior a un alcance de permisos que necesita una función más reciente:
Qué hacer:
  • Ejecuta /login para obtener un token nuevo con los alcances actuales. No necesitas cerrar sesión primero.

claude.ai rechazó el token de sesión

Una solicitud de un conector de claude.ai falló porque claude.ai rechazó el token de tu inicio de sesión de Claude Code. El token rechazado es tu inicio de sesión, no la autorización propia del conector en claude.ai, así que volver a autorizar el conector no lo resuelve. En /mcp, el conector aparece como session token rejected y su vista de detalles dice:
Qué hacer:
  • Ejecuta /login para volver a iniciar sesión
  • Reconecta el conector desde /mcp, o ejecuta /mcp reconnect <server>. Reconectar antes de volver a iniciar sesión deja el conector en el mismo estado. La opción Reconnect del panel de /mcp informa your claude.ai session token was rejected; la forma escrita /mcp reconnect <server> informa una reconexión correcta aunque el token siga rechazado.
Antes de la v2.1.222, Claude Code marcaba en su lugar el conector como pendiente de autenticación, lo que te dirigía al flujo de autorización del conector aunque completarlo no resolvía el estado.

El servidor MCP necesita que vuelvas a iniciar sesión

Un servidor MCP remoto rechazó la credencial en una llamada a herramienta a mitad de la sesión, normalmente porque un inicio de sesión o un token expiró o porque el token carece de un permiso que la herramienta necesita. La llamada a herramienta falla, y /mcp marca el servidor como pendiente de autenticación. Para un servidor en el que inicias sesión desde Claude Code, incluido un conector de claude.ai, el inicio de sesión expiró o fue revocado:
Ejecuta /mcp, selecciona el servidor y vuelve a iniciar sesión desde su menú. Para un servidor configurado con un script headersHelper, Claude Code ya ha vuelto a ejecutar el helper y reintentado la llamada una vez antes de mostrar esto:
Comprueba que el helper devuelve una credencial que el servidor acepta y luego reconecta desde /mcp, lo que vuelve a ejecutar el helper. Para un servidor con un encabezado Authorization estático en su configuración:
Actualiza el valor del encabezado donde está configurado el servidor y luego reconecta desde /mcp. Antes de la v2.1.273, los casos de inicio de sesión expirado, headersHelper y encabezado Authorization mostraban todos MCP server "<name>" requires re-authorization (token expired). Un servidor también puede rechazar una llamada a herramienta con HTTP 403 insufficient_scope para pedirte que autorices un alcance, a veces uno que tu token ya incluye. El mensaje nombra ese alcance:
Ejecuta /mcp, selecciona el servidor y vuelve a autenticarte desde su menú. Cuando la configuración del servidor no define ni oauth.scopes ni authServerMetadataUrl, Claude Code solicita el alcance que nombró el servidor. Con cualquiera de esos ajustes, Claude Code solicita en su lugar los alcances de ese ajuste. Si fijaste oauth.scopes, añade el alcance que falta a esa lista antes de volver a autenticarte. Antes de la v2.1.274, este caso mostraba el mensaje needs you to sign in again, y antes de la v2.1.273 mostraba requires re-authorization (token expired) como los demás casos.

Falta la URL del servidor MCP o no es una URL válida

Claude Code se negó a iniciar un inicio de sesión de OAuth para un servidor MCP remoto porque la url configurada del servidor no se puede analizar como URL. A menos que Claude Code tenga un problema de configuración más específico que informar para el servidor, ejecutar claude mcp login <name> en tu shell imprime el rechazo así:
Qué hacer:
  • Establece la url de la entrada en el endpoint real del servidor donde está configurado el servidor, o define la variable de entorno que nombra su referencia ${VAR}, y luego vuelve a ejecutar el inicio de sesión.

Discrepancia del emisor en la respuesta de autorización

Durante un inicio de sesión de OAuth de MCP, el servidor de autorización redirigió de vuelta a Claude Code con un parámetro iss que no nombra el emisor que Claude Code esperaba según los metadatos de OAuth del servidor. Un emisor incorrecto en este paso es el aspecto que tiene un ataque de confusión de servidores de autorización (mix-up), así que Claude Code hace fallar el inicio de sesión en lugar de intercambiar el código de autorización. Claude Code muestra el error en el menú del servidor de /mcp después del inicio de sesión en el navegador:
expected es el emisor de los metadatos de OAuth del servidor, y received es el valor de iss que traía la redirección. Un inicio de sesión cuya redirección no incluye ningún parámetro iss pasa la comprobación, a menos que los metadatos del servidor establezcan authorization_response_iss_parameter_supported, en cuyo caso Claude Code hace fallar el inicio de sesión. Qué hacer:
  • Vuelve a intentar el inicio de sesión desde /mcp
  • Si el error se repite, infórmalo al operador del servidor. La solución es del lado del servidor: el servidor de autorización debe devolver en el parámetro iss el mismo emisor que anuncia en sus metadatos
  • Para conectarte mientras se corrige el servidor, inicia Claude Code con MCP_SDK_GENERATION=v1, cuyo runtime no realiza esta comprobación. Esto elimina una protección contra los ataques de confusión, así que es preferible la solución del lado del servidor
Antes de la v2.1.232, Claude Code usaba el runtime v2 solo en un despliegue gradual o cuando definías MCP_SDK_GENERATION=v2.

Se rechaza enviar credenciales a un endpoint de token que no es https

En el runtime v2, Claude Code envía una solicitud de token de OAuth de MCP solo a un endpoint de token servido por HTTPS o en localhost, 127.0.0.1 o ::1. Este mensaje significa que el endpoint de token del servidor no es ninguna de esas opciones, así que Claude Code se detuvo antes de enviar la solicitud. Eso ocurre después del inicio de sesión en el navegador, así que el paso del navegador se completa primero, y de nuevo cada vez que Claude Code renueva el token del servidor. En su forma completa, el mensaje proviene del MCP SDK y cita el endpoint de token que rechazó. En el registro de depuración, aparece después de Error during auth completion: para un inicio de sesión o de Token refresh failed: para una renovación. En tu shell, claude mcp login <name> lo imprime después de Couldn't complete authentication for "<name>":, y en una sesión, /mcp lo muestra en el menú del servidor:
Claude Code trata como posiblemente secreta una URL de servidor que tiene una cadena de consulta o un segmento de ruta largo de aspecto aleatorio. Para un servidor así, oculta los errores de inicio de sesión que genera el MCP SDK antes de mostrarlos o registrarlos. Este error aparece entonces como un nombre corto que puede cambiar entre versiones, como io, seguido de from the MCP SDK for y la URL del servidor ocultada. Otros errores del MCP SDK adoptan la misma forma ahí. El mensaje ocultado solo puede corresponder a este error cuando el endpoint de token del servidor es http:// simple en una dirección distinta de localhost, 127.0.0.1 o ::1. Qué hacer:
  • Sirve ese endpoint de token por HTTPS, por ejemplo colocando el servidor detrás de un proxy inverso o un túnel que termine TLS y configurando el servidor para que anuncie la dirección https://
  • Para conectarte sin cambiar el servidor, inicia Claude Code con MCP_SDK_GENERATION=v1, cuyo runtime no aplica esta regla y envía la solicitud de token por HTTP simple. Esa elección dura hasta que sales y se aplica a todos los servidores. El runtime v1 también omite la comprobación del emisor, así que es preferible servir el endpoint por HTTPS

Credenciales de AWS expiradas o no válidas

Tu token de sesión de AWS expiró o fue rechazado. Este mensaje aparece ante un 401 de Claude Platform on AWS o del endpoint de Mantle, que es como esos proveedores informan un token de seguridad expirado. La sugerencia de acción de la parte central varía según tu configuración. La parte estable es el AWS credentials expired or invalid inicial:
Antes de la v2.1.273, este mensaje aparecía solo cuando awsAuthRefresh estaba configurado. Qué hacer:
  • Si la sugerencia dice que las credenciales las gestiona este entorno, la aplicación que inició Claude Code es dueña de la credencial y los demás pasos de esta sección no se aplican: reintenta o contacta con tu administrador
  • Si awsAuthRefresh está definido, ejecuta en otra terminal el comando que indica el mensaje, como aws sso login --profile myprofile, completa el inicio de sesión en el navegador y luego reintenta. De lo contrario, renueva tú mismo la credencial de AWS que usas: tu inicio de sesión de SSO, tus claves de acceso, tu clave de API o tu token de proxy
  • Con awsAuthRefresh definido en una sesión interactiva, puedes en su lugar ejecutar /login, elegir 3rd-party platform y luego seleccionar Claude Platform on AWS · refresh credentials en Using 3rd-party platforms para ejecutar el mismo comando sin reiniciar Claude Code. Consulta Configurar las credenciales de AWS
  • Si el error se repite después de que el comando de renovación se complete correctamente, confirma que la identidad es válida fuera de Claude Code con aws sts get-caller-identity en el mismo shell y perfil

Falló la autenticación de AWS

Tu proveedor de AWS devolvió un 403, o Amazon Bedrock devolvió un 401. Amazon Bedrock informa un token de seguridad expirado como un 403, pero un 403 también es la forma en que informa una denegación de autorización, como un AccessDeniedException por falta de un permiso de IAM. Claude Code no puede distinguir entre esas dos causas. Un 401 de Amazon Bedrock también llega aquí y no a Credenciales de AWS expiradas o no válidas, porque Amazon Bedrock no informa un token expirado como un 401. Un 401 de ese endpoint suele provenir de algo más en la ruta de la solicitud, como un proxy corporativo. Una renovación de credenciales soluciona un token expirado pero no puede solucionar las demás causas, así que el mensaje ofrece ambas opciones:
La sugerencia de acción de la parte central varía según tu configuración. La parte estable es el AWS authentication failed inicial. Cuando el 403 es la respuesta de Amazon Bedrock indicando que no tienes acceso al modelo con el ID de modelo especificado, la sugerencia te indica en su lugar que habilites el modelo para tu cuenta y región en la consola de Amazon Bedrock. Antes de la v2.1.273, este mensaje aparecía solo cuando awsAuthRefresh estaba configurado. Qué hacer:
  • Si la sugerencia dice que las credenciales las gestiona este entorno, la aplicación que inició Claude Code es dueña de la credencial y los demás pasos de esta sección no se aplican: reintenta o contacta con tu administrador
  • Renueva tus credenciales de AWS por si la causa es una credencial expirada: ejecuta el comando awsAuthRefresh que indica el mensaje cuando hay uno definido, o renueva tú mismo tu inicio de sesión de SSO, tus claves de acceso, tu clave de API o tu token de proxy
  • Si tus credenciales están al día, confirma que los permisos de IAM de Configuración de IAM están asociados a la identidad que usas y que el modelo seleccionado está habilitado para tu cuenta y región
  • Ejecuta aws sts get-caller-identity para confirmar qué identidad usan tus solicitudes

Credenciales de Google Cloud expiradas o no válidas

Tus credenciales de Google Cloud para Agent Platform de Google Cloud expiraron o fueron rechazadas: la solicitud devolvió un 401, que es como Agent Platform informa la expiración de credenciales. La sugerencia de acción de la parte central varía según tu configuración. La parte estable es el Google Cloud credentials expired or invalid inicial:
Qué hacer:
  • Si la sugerencia dice que las credenciales las gestiona este entorno, la aplicación que inició Claude Code es dueña de la credencial y los demás pasos de esta sección no se aplican: reintenta o contacta con tu administrador
  • Si te autenticas con las credenciales predeterminadas de la aplicación, ejecuta el comando gcpAuthRefresh que indica el mensaje, o gcloud auth application-default login, completa el inicio de sesión y luego reintenta
  • Si enrutas a través de un gateway de LLM con CLAUDE_CODE_SKIP_VERTEX_AUTH definida, renueva el token del gateway en ANTHROPIC_AUTH_TOKEN o ANTHROPIC_CUSTOM_HEADERS y luego reintenta
  • Si te autenticas con un archivo de clave de cuenta de servicio, confirma que GOOGLE_APPLICATION_CREDENTIALS apunta a una clave válida. Consulta Configurar las credenciales de GCP
  • Si el error se repite después de una renovación, confirma que la identidad funciona fuera de Claude Code con gcloud auth application-default print-access-token en el mismo shell
Antes de la v2.1.273, un 401 de Agent Platform mostraba en su lugar el mensaje genérico Please run /login o Failed to authenticate, que no puede renovar las credenciales de Google Cloud.

Falló la autenticación de Google Cloud

Agent Platform de Google Cloud devolvió un 403, que usa para denegaciones de autorización en lugar de credenciales vencidas. Por lo general, a la identidad con la que te autenticas le falta un permiso de IAM, o el modelo no está habilitado para tu proyecto. La sugerencia de acción en la parte central varía según tu configuración. La parte estable es el Google Cloud authentication failed inicial:
Qué hacer:
  • Si la sugerencia indica que las credenciales las administra este entorno, la aplicación que inició Claude Code es la dueña de la credencial y los demás pasos de aquí no aplican: reintenta o contacta a tu administrador
  • Confirma que los roles de configuración de IAM estén otorgados a la identidad con la que te autenticas
  • Confirma que el modelo esté habilitado para tu proyecto. Consulta Solicitar acceso al modelo
Antes de v2.1.273, un 403 de Agent Platform mostraba en su lugar el mensaje genérico Please run /login o Failed to authenticate, que no puede renovar las credenciales de Google Cloud.

Falló la autenticación de Microsoft Foundry

Microsoft Foundry devolvió un 401 o un 403: la credencial de Azure de la solicitud fue rechazada, o la identidad detrás de ella no tiene acceso al recurso de Foundry. /login no puede generar credenciales de Azure. La sugerencia de acción en la parte central varía según tu configuración. La parte estable es el Microsoft Foundry authentication failed inicial:
Qué hacer:
  • Si la sugerencia indica que las credenciales las administra este entorno, la aplicación que inició Claude Code es la dueña de la credencial y los demás pasos de aquí no aplican: reintenta o contacta a tu administrador
  • Renueva la credencial que configuraste en Configurar credenciales de Azure: rota ANTHROPIC_FOUNDRY_API_KEY, genera un ANTHROPIC_FOUNDRY_AUTH_TOKEN nuevo o ejecuta az login para que la cadena de credenciales predeterminada de Microsoft Entra pueda volver a iniciar sesión
  • Si la credencial está vigente, confirma que la identidad tenga acceso al recurso de Foundry. Consulta Configuración de Azure RBAC
Antes de v2.1.273, un 401 o 403 de Microsoft Foundry mostraba en su lugar el mensaje genérico Please run /login o Failed to authenticate, que no puede renovar las credenciales de Azure.

No se pudieron cargar las credenciales de AWS o Google Cloud

Claude Code no pudo obtener credenciales utilizables de la cadena de proveedores de credenciales de AWS ni de tus credenciales predeterminadas de aplicación de Google en la máquina donde se ejecuta, por lo que ninguna solicitud llegó a tu proveedor de nube. El detalle después del · indica la causa específica, como una sesión de SSO vencida, credenciales predeterminadas de aplicación faltantes reportadas como Could not load the default credentials, o un inicio de sesión revocado reportado como invalid_grant:
En modo no interactivo con -p y en el Agent SDK, el código de error estructurado es cloud_credential_error. Antes de v2.1.267, el mensaje mostraba solo el texto de detalle después de API Error:, y el código estructurado era server_error o unknown. Qué hacer:

Se agotó el tiempo de espera al resolver las credenciales de la cadena predeterminada de AWS

La cadena de proveedores de credenciales predeterminada de AWS no produjo credenciales en 60 segundos, así que Claude Code detuvo la resolución e hizo fallar la solicitud. Este tiempo de espera es una de las causas de No se pudieron cargar las credenciales de AWS o Google Cloud. La falla está en la resolución local de credenciales: la solicitud nunca llegó a Amazon Bedrock, Claude Platform on AWS ni al endpoint de Mantle. Claude Code borra su caché de credenciales y reintenta antes de que aparezca este error, así que cuando lo ves, la cadena ya se estancó en intentos repetidos.
Las causas comunes son un comando credential_process en tu perfil de AWS que espera una entrada que no puede recibir, y un contenedor o VM cuyo servicio de metadatos de instancia (IMDS) nunca responde al sondeo de la cadena. Antes de v2.1.267, el mensaje decía API Error: AWS default-chain credential resolve timed out. Antes de v2.1.207, una cadena estancada dejaba la solicitud esperando indefinidamente en lugar de fallar. Qué hacer:
  • Ejecuta aws sts get-caller-identity en el mismo shell con el mismo AWS_PROFILE. Si también se cuelga, corrige el perfil; un comando credential_process que pide datos de forma interactiva es una causa común.
  • Completa el paso de inicio de sesión antes de iniciar Claude Code, por ejemplo aws sso login --profile myprofile
  • Si tu cadena ejecuta un inicio de sesión interactivo que legítimamente necesita más de 60 segundos, como SSO con MFA a través de un wrapper como aws-vault, aumenta el límite en milisegundos con CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS

Se agotó el tiempo de espera de la verificación de configuración de Bedrock esperando a AWS

Una llamada a AWS durante la verificación de credenciales del asistente de configuración de Bedrock, como la búsqueda de credenciales o la comprobación de identidad, no terminó dentro del límite de 60 segundos. El asistente deja de esperar y hace fallar el paso de verificación:
El número refleja tu límite: 60 segundos de forma predeterminada, o el valor que configuraste en CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS. Las causas comunes son una red o un proxy que estanca las solicitudes a AWS, incluida la renovación del token de SSO, y un asistente de credenciales que sigue esperando una entrada que no puedes ver. Aumenta el límite solo cuando el asistente legítimamente necesite más tiempo. Una sola solicitud estancada a AWS también puede fallar por su propio tiempo de espera por solicitud, lo que muestra un mensaje más corto en el mismo paso:
Cuando los mismos tiempos de espera se agotan en el paso de fijación del modelo, el asistente marca un modelo como unreachable en lugar de mostrar cualquiera de los dos mensajes. Qué hacer:
  • Ejecuta aws sts get-caller-identity en el mismo shell. Si también se cuelga, el estancamiento está fuera de Claude Code, en tu red, tu proxy o el asistente de credenciales de tu perfil de AWS; corrige eso primero.
  • Completa cualquier inicio de sesión interactivo antes de abrir el asistente, por ejemplo aws sso login --profile myprofile
  • Si un asistente de credenciales de tu perfil de AWS legítimamente necesita más de 60 segundos para pedirte datos, aumenta el límite en milisegundos con CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS

La sesión del gateway en la nube venció

Iniciaste sesión a través de un gateway de aplicaciones de Claude, y la sesión del gateway guardada en esta máquina venció y no se pudo renovar, o el gateway ya no la acepta, por ejemplo después de que se reemplaza el secreto JWT del gateway. Si ves esta línea al iniciar claude de forma interactiva, la sesión se abrió sin haber iniciado sesión en el gateway:
La misma línea puede aparecer a mitad de la sesión cuando la credencial del gateway vence y Claude Code no puede renovarla. En una ejecución no interactiva, una sesión en segundo plano u otra sesión desatendida, o un subcomando de claude distinto de claude auth, Claude Code termina con este mensaje en su lugar cuando el gateway ya no acepta la sesión:
Qué hacer:
  • Ejecuta /login en la sesión y completa el inicio de sesión en el navegador
  • Para un inicio no interactivo, inicia claude en el mismo entorno, ejecuta /login y luego vuelve a ejecutar tu comando

Se agotó el tiempo de inicio de sesión mientras esperaba que continuaras

Durante un inicio de sesión en un gateway de aplicaciones de Claude, el gateway indicó la cuenta que inició sesión y Claude Code te pidió confirmarla antes de guardar la credencial. Dejaste la confirmación abierta más allá del propio vencimiento del inicio de sesión, y el gateway no emitió ningún token de actualización que pudiera renovarla, así que Claude Code no guardó nada cuando continuaste:
Qué hacer:
  • Ejecuta /login de nuevo y confirma la cuenta antes de que venza el inicio de sesión

El gateway rechazó la solicitud

Iniciaste sesión a través de un gateway de aplicaciones de Claude, y una solicitud devolvió un 403: el gateway, o el servicio upstream detrás de él, la rechazó. Volver a iniciar sesión no cambia un rechazo, así que el mensaje te remite a tu administrador del gateway:
Qué hacer: Antes de v2.1.273, un 403 en una sesión del gateway mostraba en su lugar el mensaje genérico Please run /login o Failed to authenticate, y volver a iniciar sesión no eliminaba el rechazo.

Errores de red y conexión

La mayoría de estos errores significan que una solicitud de red desde Claude Code no llegó a su destino, o que algo entre Claude Code y la API alteró la respuesta en el camino de regreso; cuando una entrada también tiene una causa local, como una escritura de archivo fallida, su cuerpo lo indica. Generalmente se originan en tu red local, proxy o firewall, o en la política de red del entorno en la nube.

Unable to connect to API

La conexión TCP a la API falló o nunca se completó. Para los códigos de error de conexión comunes, el mensaje indica el tipo de fallo y mantiene el código entre paréntesis:
Un código que Claude Code no reconoce aparece como Unable to connect to API seguido del código entre paréntesis. Algunos de estos mensajes pueden mostrar más de un código: Connection refused puede mostrar ConnectionRefused o ECONNREFUSED, por ejemplo, y Can't reach the API server puede mostrar ENOTFOUND o FailedToOpenSocket. Antes de v2.1.227, cada uno de estos mensajes con código decía Unable to connect to API seguido del código, por ejemplo Unable to connect to API (ECONNREFUSED). Las causas comunes incluyen no tener acceso a internet, una VPN que bloquea api.anthropic.com, o un proxy corporativo requerido que no está configurado. Qué hacer:
  • Confirma que puedes alcanzar el host de la API desde el mismo shell ejecutando curl -I https://api.anthropic.com. En Windows PowerShell usa curl.exe -I https://api.anthropic.com para que no se use el alias integrado Invoke-WebRequest.
  • Si estás detrás de un proxy corporativo, establece HTTPS_PROXY antes de iniciar Claude Code y consulta Configuración de red
  • Si enrutas a través de un gateway LLM o un relé, establece ANTHROPIC_BASE_URL en su dirección. Consulta Conectar Claude Code a un gateway LLM para la configuración.
  • Asegúrate de que tu firewall permita los hosts enumerados en Requisitos de acceso a la red
  • Los fallos intermitentes se reintentan automáticamente; los fallos persistentes apuntan a un problema de red local
Si curl tiene éxito pero Claude Code sigue fallando, la causa suele ser algo entre el runtime y la red, no la red en sí:
  • Verifica si ANTHROPIC_BASE_URL está establecida ejecutando echo $ANTHROPIC_BASE_URL, o echo $env:ANTHROPIC_BASE_URL en PowerShell, y búscala en el bloque env de tus archivos de configuración. Cuando está establecida, Claude Code envía las solicitudes al modelo a esa dirección en lugar de a api.anthropic.com, por lo que un valor residual que apunta a un proxy o gateway local que ya no se está ejecutando produce Connection refused aunque curl alcance la API. Elimínala de tu perfil de shell o de tu configuración e inicia Claude Code desde una nueva terminal.
  • En Linux y WSL, revisa /etc/resolv.conf en busca de un servidor de nombres inaccesible. WSL en particular puede heredar un resolvedor defectuoso del host.
  • En macOS, un cliente VPN que se desconectó o desinstaló puede dejar una interfaz de túnel o una regla de enrutamiento. Revisa ifconfig en busca de interfaces utun obsoletas y elimina la extensión de red de la VPN en Configuración del Sistema.
  • Docker Desktop y runtimes de contenedores similares pueden interceptar el tráfico saliente. Ciérralos y vuelve a intentarlo para descartar esta causa.

Unable to connect to Anthropic services

Durante la configuración de la primera ejecución, Claude Code verifica que puede alcanzar api.anthropic.com y platform.claude.com antes de mostrar el paso de inicio de sesión. Cuando alguna de las verificaciones falla, Claude Code imprime el motivo y sale.
Claude Code envía la verificación a través de la misma configuración de proxy que las solicitudes a la API y da a cada sondeo 10 segundos. Cuando el sondeo fallido pasó por un proxy, el mensaje nombra la variable de entorno que lo configuró, como HTTPS_PROXY. Antes de v2.1.222, la verificación usaba un transporte de proxy diferente sin tiempo de espera: detrás de una URL de proxy con el esquema https://, podía quedarse detenida en Checking connectivity... indefinidamente y luego fallar aunque las solicitudes a la API a través del mismo proxy tuvieran éxito. Claude Code omite esta verificación cuando un archivo de configuración administrada, una política MDM o un asistente de políticas establece forceLoginMethod en "gateway", o establece forceLoginGatewayUrl sin forceLoginMethod. Con cualquiera de estas configuraciones, Claude Code abre el paso de inicio de sesión en la pantalla Cloud gateway en lugar de un método de inicio de sesión de Anthropic. Claude Code también omite la verificación cuando existe una fuente de configuración administrada en la máquina pero no se puede leer, ya que esa fuente puede contener la configuración del gateway. Antes de v2.1.247, Claude Code ejecutaba la verificación también con esta configuración, y salía con este error cuando los endpoints de Anthropic eran inaccesibles. Claude Code también omite la verificación en una máquina sin configuración administrada cuando tu propio ~/.claude/settings.json nombra un gateway con forceLoginMethod y forceLoginGatewayUrl. Antes de v2.1.295, Claude Code ejecutaba la verificación en ese caso. Qué hacer:
  • Si el mensaje nombra una variable de proxy, verifica que su valor apunte al proxy correcto y pide a tu equipo de red que permita conexiones HTTPS a través de él hacia el host del mensaje. Consulta Configuración de red.
  • Revisa las comprobaciones de Unable to connect to API. La prueba con curl y las indicaciones sobre el firewall de esa sección también se aplican a esta verificación.
  • Si tu red está abierta y el fallo persiste, es posible que Claude Code no esté disponible en tu país

Socket is closed

Socket is closed significa que la conexión que transportaba una respuesta en streaming se cerró mientras la respuesta aún estaba llegando. La causa más común es un proxy corporativo en Windows que corta un túnel establecido a mitad de la respuesta. Según cuánto haya avanzado la respuesta, Claude Code reintenta la solicitud, conserva lo que Claude produjo o termina el turno. Consulta Reintentos automáticos. Antes de v2.1.214, Claude Code no reintentaba este fallo, y el turno se detenía con un error que contenía Socket is closed. Qué hacer:
  • Si ves este error, actualiza a v2.1.214 o posterior con claude update y luego envía tu mensaje de nuevo
  • Si los turnos siguen fallando detrás del mismo proxy después de actualizar, revisa Unable to connect to API y verifica la configuración del proxy en Configuración de red

API returned an empty or malformed response

Claude Code muestra este error cuando su reintento sin streaming de una solicitud en streaming fallida obtiene un estado HTTP de éxito pero el cuerpo no es un mensaje de la API de Claude: comúnmente una página HTML de error o de inicio de sesión, un cuerpo vacío o JSON en otro formato. La fuente habitual es un proxy, un gateway o una página de inicio de sesión de la red que responde en lugar de la API. Claude Code no reintenta la solicitud, y el turno termina con este error.
Después de ese inicio, el mensaje informa lo que se recibió y qué solicitud falló:
  • Una cláusula Response: con el tipo de contenido, el tipo de cuerpo, como body is an HTML page o empty body, su tamaño en bytes y si la respuesta incluía un id de solicitud de Anthropic. Cuando la respuesta nombra un servidor reconocible, como nginx o cloudflare, o incluye encabezados de intermediarios, como cf-ray o via, la cláusula también los enumera.
  • Una oración que nombra el id de la solicitud en streaming fallida y el fallo que desencadenó el reintento. Cuando se había abierto un stream antes del fallo, también informa cuántos eventos del stream llegaron y, si llegó alguno, cuánto tiempo llevaba el stream en silencio cuando el intento falló.
Antes de v2.1.234, el mensaje terminaba después de intercepting the request. Antes de v2.1.271, una respuesta que incluía un mensaje de API válido con un tipo de contenido que no es JSON, como text/plain, también terminaba el turno con este error. Algunos gateways LLM usan ese tipo de contenido para la respuesta sin streaming. Qué hacer:
  • Lee la cláusula Response: para ver qué sistema respondió. Un cuerpo HTML, la ausencia de id de solicitud de Anthropic o un servidor nombrado como nginx o cloudflare significan que algo entre Claude Code y la API respondió en su lugar
  • Si enrutas a través de un gateway LLM, prueba la ruta con una solicitud directa y corrige el salto que devuelve la respuesta que no es de la API
  • En una red con página de inicio de sesión, como una Wi-Fi de invitados, completa el inicio de sesión en un navegador y luego vuelve a intentarlo
  • Si solo está rota la ruta sin streaming a través de tu gateway, establece CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK=1 para desactivar este respaldo, excepto cuando el propio endpoint de streaming devuelve 404, caso en el que Claude Code sigue recurriendo al respaldo

Streaming response ended before any complete data was received

Una respuesta en streaming de tu proveedor de modelos se completó sin entregar ningún dato utilizable, por lo que Claude Code reenvió la solicitud sin streaming para terminar el turno. Claude Code muestra la advertencia una vez por sesión, solo en sesiones interactivas. Antes de v2.1.239, Claude Code reintentaba sin streaming de forma silenciosa.
Claude Code envía cada solicitud afectada dos veces: el intento en streaming vacío y el reintento. La causa habitual es un proxy o gateway que consume o transforma el cuerpo de la respuesta en streaming en el camino de regreso. Qué hacer:

La respuesta en streaming de Bedrock tiene un content-type inesperado

Un gateway o proxy entre Claude Code y Amazon Bedrock está transformando el cuerpo de la respuesta en streaming o su encabezado Content-Type. Amazon Bedrock envía las respuestas en streaming como application/vnd.amazon.eventstream. En lugar de decodificar un cuerpo que no puede leer, Claude Code rechaza una respuesta en streaming exitosa que informa un content-type diferente. Claude Code no reintenta la solicitud.
Antes de v2.1.208, la misma configuración incorrecta aparecía como API Error: Truncated event message received después de que toda la respuesta se había almacenado en búfer. Qué hacer:
  • Configura el gateway para que deje pasar sin modificar el cuerpo de la respuesta de InvokeModelWithResponseStream y su encabezado Content-Type. Un intermediario que reemite el stream como eventos enviados por el servidor es una causa común.
  • Establecer CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_GUARD=1 oculta este error, pero Claude Code no decodifica un cuerpo binario con un encabezado reescrito, por lo que esas solicitudes recurren a una ruta más lenta sin streaming. Consulta Errores de streaming detrás de un gateway o proxy.

Errores de certificado SSL

Un proxy o dispositivo de seguridad de tu red está interceptando el tráfico TLS con su propio certificado, y Claude Code no confía en él.
Antes de v2.1.273, ambos mensajes terminaban en Check your proxy or corporate SSL certificates, sin el código de OpenSSL ni la sugerencia de NODE_EXTRA_CA_CERTS. A partir de v2.1.199, un fallo de validación de certificado no se reintenta, por lo que este error aparece en el primer intento en lugar de después de agotar el presupuesto de reintentos completo. Las versiones anteriores pasaban unos minutos reintentando antes de mostrarlo. Las condiciones TLS transitorias, como un tiempo de espera agotado en el handshake, todavía se reintentan. Durante /login y la verificación de conectividad al inicio, el mismo fallo produce un mensaje diferente:
En Amazon Bedrock, las solicitudes que el propio Claude Code envía a AWS, como las llamadas de credenciales de rol de STS y SSO, el descubrimiento de modelos y las comprobaciones del asistente de configuración, dependen de la misma configuración de certificados. Consulta Errores de certificado detrás de un proxy que inspecciona TLS. Qué hacer:
  • Exporta el paquete de CA de tu organización y apunta Claude Code a él con NODE_EXTRA_CA_CERTS=/path/to/ca-bundle.pem
  • Consulta Configuración de red para ver las instrucciones de configuración completas
  • No establezcas NODE_TLS_REJECT_UNAUTHORIZED=0, que desactiva por completo la validación de certificados

Host no permitido en una sesión en la nube

La política de red del entorno bloqueó una solicitud HTTP saliente de una sesión en la nube o de una rutina.
También puedes ver un certificado TLS que no coincide con el certificado real del destino. Las sesiones en la nube enrutan el tráfico saliente a través de un proxy que aplica la política de red, por lo que un certificado que no coincide significa que el proxy terminó la conexión, no el destino. No es un problema de red del lado del cliente. Las sesiones en la nube y las rutinas se ejecutan dentro de una VM aislada cuyo tráfico saliente a través de la red de la sesión se filtra según la lista de permitidos del entorno en la nube; las operaciones de GitHub y el tráfico de los conectores MCP usan canales separados, por eso pueden seguir funcionando mientras otros hosts están bloqueados. El entorno Default usa acceso Trusted, que permite la lista de permitidos predeterminada de registros de paquetes, API de proveedores de nube, registros de contenedores y dominios de desarrollo comunes, y bloquea otros dominios en esa ruta. Qué hacer: Estos pasos cambian uno de tus propios entornos. Un entorno compartido por la organización se abre como de solo lectura en el selector, así que pide a un Owner que cambie su acceso a la red desde la página Cloud environments en la configuración de administración.
  • Abre tu entorno para editarlo, ya sea desde el formulario de la rutina o desde el selector de entornos donde inicias sesiones en la nube.
  • En el diálogo Edit cloud environment, cambia Network access de Trusted a Custom y luego agrega el dominio bloqueado a Allowed domains. Ingresa un dominio por línea. Marca Also include default list of common package managers para conservar la lista de permitidos predeterminada junto con tus dominios personalizados. Selecciona Full en su lugar si quieres acceso sin restricciones.
  • Haz clic en Save changes. La siguiente ejecución usa la lista de permitidos actualizada. Para una sesión en la nube que ya está abierta, consulta cuándo llega un cambio de acceso a la red a las sesiones existentes.
Consulta Acceso a la red para conocer los niveles de acceso y la lista de permitidos predeterminada. Las sesiones locales de la CLI no se ven afectadas por esta política.

The proxy refused the connection

Ves este mensaje cuando Claude lee un artefacto a través del proxy que estableciste en HTTPS_PROXY o en una variable de proxy relacionada. El contenido del artefacto proviene de *.frame.claudeusercontent.com, por lo que Claude Code primero envía al proxy una solicitud CONNECT pidiéndole que abra un túnel hacia ese host. Cuando el proxy se niega, nada llega al host, y el mensaje incluye el estado HTTP del proxy:
El estado es la respuesta del proxy al CONNECT. El host nunca respondió, así que cada estado apunta a una solución diferente:
  • HTTP 407: el proxy requiere credenciales que no recibió. Inclúyelas en la URL del proxy, como muestra Autenticación básica.
  • HTTP 403: el proxy se niega a abrir un túnel hacia *.frame.claudeusercontent.com. Pide a quien administra el proxy que permita ese host, que figura en Requisitos de acceso a la red.
  • Cualquier otro estado, como HTTP 502: el proxy no abrió el túnel por un motivo propio, como no poder alcanzar el host. Busca el estado en los registros del proxy.
  • unreadable reply en lugar de un estado: lo que hay en la dirección del proxy no respondió con una línea de estado HTTP. Verifica que la dirección corresponda a un proxy HTTP.
Qué hacer:
  • Revisa la dirección y las credenciales en la variable de proxy, como se describe en Configuración de proxy, y luego ejecuta curl -x http://proxy.example.com:8080 -I https://api.anthropic.com desde el shell en el que inicias Claude Code, usando tu propia URL de proxy. En Windows PowerShell, ejecuta curl.exe. Si esta prueba falla de la misma manera, corrige primero la configuración del proxy. Si tiene éxito, el rechazo es específico del host del artefacto.
  • Si tu red permite que Claude Code alcance el host del artefacto directamente, agrega .frame.claudeusercontent.com a NO_PROXY. Mantén la entrada así de acotada: una entrada más amplia como .claudeusercontent.com también omite el proxy para bridge.claudeusercontent.com, que las organizaciones con listas de IP permitidas necesitan mantener en el proxy.
Antes de v2.1.238, Claude Code informaba un túnel rechazado como un error de red genérico.

El servicio de entornos en la nube devolvió una respuesta vacía o inesperada

Claude Code solicita tu lista de entornos en la nube en varios momentos, como cuando creas una sesión en la nube desde la CLI o ejecutas /remote-env. Cuando no puede leer la respuesta del servidor, muestra uno de estos mensajes:
El servidor aceptó la solicitud pero respondió con un cuerpo que no es la lista de entornos: vacío, que no es JSON, o JSON sin la lista. Esto suele acompañar a una interrupción del lado del servicio y se resuelve por sí solo. Según la superficie que solicitó la lista, Claude Code puede agregar un prefijo, como couldn't list environments: en el diálogo de /remote-env. Qué hacer:
  • Vuelve a intentar la acción. Claude Code solicita la lista de nuevo cada vez
  • Si el mensaje sigue apareciendo, consulta status.claude.com para ver si hay incidentes activos
Antes de v2.1.236, Claude Code mostraba un TypeError de JavaScript sin procesar en lugar de estos mensajes.

Failed to fetch session from Sessions API

Este mensaje significa que Claude Code encontró la sesión en la nube que pediste traer a tu terminal, pero no pudo leer su historial de conversación desde los servidores de Anthropic, por lo que no la abrió:
Lo ves después de claude --teleport, /teleport o al elegir la sesión en la lista de /tasks. claude --teleport <session-id> lo imprime y sale con el código 1. Qué hacer: Antes de v2.1.296, Claude Code no reintentaba una lectura fallida y, después de una, podía abrir la sesión con una conversación vacía e informar éxito en lugar de imprimir este mensaje.

Couldn’t reconnect to your Remote Control session

Al reanudar con claude --resume o claude --continue, Claude Code se vuelve a conectar a la sesión de Remote Control registrada en esa conversación. Este mensaje significa que la reconexión falló por un motivo que puede ser temporal, como una interrupción de la red o un error del servidor, por lo que Claude Code no puede confirmar si la sesión remota todavía existe. Tu sesión local sigue ejecutándose sin Remote Control. Qué hacer:
  • Ejecuta /remote-control para reintentar la conexión
  • Inicia una nueva sesión con claude --remote-control para crear una nueva sesión de Remote Control
  • Para otros mensajes de inicio de Remote Control, consulta Solución de problemas de Remote Control
Si el servidor informa en cambio que la sesión anterior ya no existe, no ves este mensaje. Claude Code inicia una nueva sesión en su lugar o muestra Previous session is unavailable — run /remote-control to start a new one.

Sessions ended while this machine was offline

Claude Code muestra este mensaje en la terminal que ejecuta claude remote-control después de que tu máquina estuvo sin conexión el tiempo suficiente para que el servidor limpiara el entorno de Remote Control que tu máquina estaba atendiendo. Las sesiones de ese entorno terminaron y no puedes reanudarlas. El número indica cuántas sesiones terminaron.
Qué hacer:
  • Cuando Claude Code enumere worktrees conservados debajo de este mensaje, recupera de ellos cualquier trabajo sin confirmar
  • Ejecuta claude remote-control para iniciar un entorno nuevo

Couldn’t share the transcript

Después de que aceptas compartir la transcripción de tu sesión desde una encuesta, como la encuesta de calidad de la sesión, Claude Code la sube a Anthropic, o en su lugar guarda un archivo local en proveedores de terceros, en sesiones del gateway de aplicaciones de Claude y cuando no hay credenciales de Anthropic disponibles. Este mensaje significa que no se completó el envío.
La carga debe ajustarse a un límite de 8 MiB. En una sesión larga, Claude Code va descartando partes del contenido compartido, primero la configuración del modelo de la última solicitud y luego la conversación estructurada y las transcripciones de subagentes, y muestra este mensaje cuando no se puede enviar ninguna versión reducida o cuando un error de red o del servidor detiene la carga. Cuando Claude Code guarda un archivo local en su lugar, el mensaje significa que no pudo escribir el archivo. Qué hacer:
  • Ejecuta /feedback para enviar la transcripción con una descripción de lo que sucedió. Consulta Reportar un error si /feedback no está disponible en tu entorno
  • Si otras solicitudes también están fallando, revisa tu conexión de red y consulta Unable to connect to API

Couldn’t send feedback

Enviaste un informe desde el diálogo de /feedback, /bug o /share y la carga a Anthropic falló. El diálogo conserva tu texto para que puedas reintentar.
El texto después del prefijo indica qué falló:
  • : not signed in. Run /login, then retry.: el diálogo solo sube el informe cuando Claude Code encontró credenciales de Anthropic al abrirse, y ninguna era utilizable en el momento del envío. Por ejemplo, cerraste sesión en esta máquina mientras tanto, o ya no se pudo renovar tu inicio de sesión.
  • Un paréntesis: (server returned <status>) es el código de respuesta del servicio; (request timed out) y (couldn't reach the service) son fallos de red. Cuando Claude Code no puede indicar un motivo, no aparece el paréntesis.
En la cola de borradores de comentarios, el mismo fallo termina en cambio con The draft is still queued. Try again later., y el borrador permanece en la cola para otro intento. Qué hacer:
  • Si el mensaje indica que no iniciaste sesión, ejecuta /login y vuelve a enviar
  • De lo contrario, vuelve a enviar; si otras solicitudes también están fallando, revisa tu conexión de red y consulta Unable to connect to API
  • Si sigue fallando, presenta el informe en github.com/anthropics/claude-code/issues, como indica el mensaje
Antes de v2.1.281, todos los envíos fallaban con este mensaje una vez que llegaba un Stop de Remote Control o un mensaje urgente entre sesiones mientras el diálogo estaba abierto. En esas versiones, cierra el diálogo, vuelve a abrirlo y envía de nuevo.

Errores de solicitud

Estos errores se relacionan con el contenido de tu solicitud. La mayoría provienen de la API después de que rechazó la solicitud; algunos los produce Claude Code localmente antes de enviar cualquier solicitud.

El prompt es demasiado largo

La conversación más los archivos adjuntos superan la ventana de contexto del modelo.
En una sesión interactiva, Claude Code muestra este error como:
La línea nombra solo /clear cuando DISABLE_COMPACT está configurado. Las formas más largas del error, como la forma de compactación fallida que aparece más abajo, mantienen la redacción Prompt is too long ·. En la salida de -p y en la transcripción, el texto sigue siendo Prompt is too long. Cuando desactivaste la compactación automática en tu configuración de usuario, la línea también lo indica:
El interruptor Auto-compact en /config escribe autoCompactEnabled en la configuración de usuario. La sugerencia aparece solo cuando un cambio en /config tendría efecto. Por ejemplo, no aparece cuando DISABLE_AUTO_COMPACT o DISABLE_COMPACT desactivaron la compactación automática. Tampoco aparece cuando un alcance de mayor precedencia, como la configuración del proyecto o la configuración administrada, estableció autoCompactEnabled en false. Antes de v2.1.235, la línea no incluía ninguna sugerencia sobre la compactación automática. Amazon Bedrock reporta esta condición como Input is too long for requested model., que Claude Code maneja de la misma manera. Antes de v2.1.217, Claude Code no reconocía la redacción de Bedrock, por lo que la compactación automática nunca se activaba con ella y /compact fallaba con el mismo error. Un gateway de aplicaciones de Claude reporta esta condición como capability_rejected: prompt_too_long cuando un proveedor de nube upstream rechaza la solicitud con el formato de error propio del proveedor. Claude Code trata el token igual que Prompt is too long. Antes de v2.1.228, Claude Code no reconocía el token, por lo que la compactación automática no se activaba con él. Cuando la compactación automática se ejecutó en este turno y falló por un error subyacente, como un modelo no disponible o un fallo de autenticación, el mensaje nombra ese error después de un separador:
Resuelve primero el error nombrado; /compact falla con el mismo error hasta que lo hagas. Antes de v2.1.229, una compactación automática fallida mostraba Prompt is too long sin la causa. Cuando la compactación automática se ejecuta ante este error, normalmente resume tus intercambios más antiguos y conserva los más recientes. Como último recurso, Claude Code resume de otra manera:
  • Cuando no puede resumir ningún intercambio completo, Claude Code conserva tu prompt más reciente palabra por palabra y resume todo lo anterior.
  • En ese caso, cuando la conversación no termina con tu prompt, Claude Code resume toda la conversación en su lugar.
Claude Code omite esta recuperación cuando el contenido que conservaría no contiene ninguna respuesta del modelo y tiene menos de aproximadamente 1.000 tokens de tu propio texto, como un reintento corto enviado después de pegar algo demasiado grande. Ejecuta /clear para empezar de nuevo. Antes de v2.1.269, la compactación fallaba siempre que no podía resumir un intercambio completo, por lo que una sesión en ese estado volvía a encontrar este error en cada turno. Una conversación de un solo intercambio no tiene turnos anteriores que resumir. Cuando la compactación automática se habría ejecutado en una, Claude Code omite el intento y explica en su lugar qué llena la solicitud. Cuando la API no reporta conteos de tokens en su error, el mensaje dice:
Cuando la API reporta conteos de tokens en su error, Claude Code los compara con su propia estimación del tamaño de la conversación para determinar qué constituye la mayor parte de la solicitud: el contenido propio de la conversación, o el prompt del sistema, las definiciones de herramientas y el contenido de los adjuntos que Claude Code envía con ella. Cuando el contenido propio de la conversación constituye la mayor parte de la solicitud, el mensaje dice:
Cuando la mayor parte de la solicitud está fuera de la conversación, el mensaje dice:
Antes de v2.1.162, Claude Code intentaba la compactación de todos modos y mostraba solo Prompt is too long cuando fallaba. Qué hacer:
  • Ejecuta /compact para resumir los turnos anteriores y liberar espacio, o /clear para empezar de nuevo. Si /compact responde Not enough messages to compact., la conversación es un solo intercambio sin nada anterior que resumir, así que el espacio lo ocupan ese único prompt y lo que Claude Code envía con cada solicitud: ejecuta /clear y vuelve a enviarlo con menos texto pegado o adjuntos más pequeños, o reduce las definiciones de herramientas y los archivos de memoria siguiendo los pasos a continuación
  • Ejecuta /context para ver un desglose de lo que está consumiendo la ventana: prompt del sistema, herramientas, archivos de memoria y mensajes
  • Desactiva los servidores MCP que no estés usando con /mcp disable <name> para quitar sus definiciones de herramientas del contexto
  • Recorta los archivos de memoria CLAUDE.md grandes, o mueve las instrucciones a reglas limitadas a rutas que se carguen solo cuando sean relevantes
  • La compactación automática está activada de forma predeterminada y normalmente evita este error. Si la desactivaste en /config o con DISABLE_AUTO_COMPACT, vuelve a activarla. Si la mantienes desactivada, ejecuta /compact tú mismo antes de que se llene la ventana.
  • Si el error aparece cerca de 200K tokens en un modelo que acepta más, una causa es un ID de modelo que Claude Code no reconoce. Claude Code asume una ventana de 200K para ese ID, así que para seguir trabajando más allá de ese punto, indícale la ventana de contexto real del modelo.
Consulta Explorar la ventana de contexto para ver de forma interactiva cómo se llena el contexto.

El contexto supera el límite de tokens

/context muestra esta advertencia al principio de su salida cuando la conversación ha crecido más allá de la ventana de contexto del modelo. Las solicitudes fallan con Prompt is too long hasta que liberes espacio. Una sesión interactiva muestra ese error como la línea Context limit reached.
Cuando el límite que superaste es una ventana de compactación, como el límite de 200K en los modelos con contexto de 1M, la advertencia se redacta de otra manera. Una ventana de compactación puede estar por debajo de la ventana de contexto del modelo, por lo que las solicitudes que la superan aún pueden tener éxito.
Ambas formas nombran /clear en lugar de /compact cuando estableciste DISABLE_COMPACT. Qué hacer:
  • En una conversación de varios turnos, ejecuta /compact para resumir los turnos anteriores y liberar espacio. Para empezar de nuevo, ejecuta /clear
  • Para conocer más formas de reducir el uso, consulta El prompt es demasiado largo
Antes de v2.1.216, /context mostraba un uso superior al 100% sin ninguna línea de advertencia que explicara qué significaba eso o cómo recuperarse.

Solicitud demasiado grande

El cuerpo sin procesar de la solicitud superó el límite de 32MB de la API antes de la tokenización, generalmente por contenido pegado de gran tamaño, resultados de herramientas o adjuntos. Este límite es independiente de la ventana de contexto.
Cuando la solicitud fue directamente a la API de Claude y la propia API la rechazó, Claude Code mide la conversación y redacta el mensaje según si la recuperación puede funcionar. A través de un proxy, gateway o proveedor de nube, obtienes el mensaje general. Las formas basadas en la medición:
  • Request too large (max 32MB; 20.1MB of about 33.4MB is images or documents).: las imágenes o documentos hicieron que la solicitud superara el límite. Claude Code reintenta sin ellos.
  • Request too large for the API's 32MB request limit: los mensajes por sí solos superan el límite, así que el mensaje dice compacting cannot make it fit y Claude Code no reintenta. En modo no interactivo, el mensaje te indica que reduzcas la entrada o que inicies una nueva sesión.
Antes de v2.1.212, las conversaciones con suficientes imágenes acumuladas fallaban en cada turno con Request too large (max 32MB). Double press esc to go back and try with a smaller file. Antes de v2.1.229, Claude Code mostraba el consejo sobre adjuntos en cada rechazo, incluso cuando compactar no podía ayudar. Qué hacer:
  • Si el mensaje dice compacting cannot make it fit, presiona Esc dos veces para retroceder antes del turno que agregó el contenido grande, o ejecuta /clear para empezar de nuevo
  • De lo contrario, ejecuta /compact, que elimina las imágenes y los adjuntos acumulados
  • Haz referencia a los archivos grandes por su ruta en lugar de pegar su contenido, para que Claude pueda leerlos por fragmentos
  • Para imágenes, consulta La imagen era demasiado grande a continuación

La imagen era demasiado grande

Una imagen pegada o adjunta supera los límites de tamaño o de dimensiones de la API.
La línea could not be processed and was removed significa que la API rechazó una imagen de la conversación, por ejemplo una que supera los límites de tamaño o dimensiones. Si alguno de estos errores sigue apareciendo, actualiza Claude Code. En versiones anteriores, un error de imagen podía repetirse por motivos como estos:
  • Antes de v2.1.299, en una conversación larga con muchas imágenes, Claude Code podía quitar las últimas imágenes que adjuntaste en lugar de la que superaba el límite. La línea was removed se repetía entonces en cada turno, y Claude no veía tus imágenes nuevas.
  • Antes de v2.1.299, en VS Code, la app de Desktop y el Agent SDK, las imágenes que adjuntabas mientras Claude estaba trabajando no recibían el redimensionamiento que reciben otras imágenes adjuntas. Llegaban a la API en su tamaño original, lo que provocaba errores de imagen repetidos en conversaciones largas.
  • Antes de v2.1.166, una imagen pegada podía permanecer en la conversación, y el mismo error se repetía entonces en cada mensaje posterior
Qué hacer:
  • Cambia el tamaño de la imagen antes de pegarla. La API acepta imágenes de hasta 8000 píxeles en el lado más largo para una sola imagen, o 3000 píxeles cuando hay más de 20 imágenes en el contexto.
  • Toma una captura de pantalla más ajustada de la región relevante en lugar de la pantalla completa

No se pudo cambiar el tamaño de la imagen

Claude Code no pudo reducir una imagen adjunta antes de enviarla a la API.
Claude Code normalmente cambia el tamaño de las imágenes grandes de forma automática. Estos errores significan que la imagen no se pudo decodificar ni redimensionar para que cupiera dentro de los límites de la API. Qué hacer:
  • Si el mensaje te pide que conviertas la imagen, conviértela a PNG, JPEG, GIF o WebP y vuelve a adjuntarla. Claude Code puede verificar las dimensiones de estos formatos a partir del encabezado del archivo, sin decodificar la imagen.
  • Si el mensaje reporta un límite de dimensiones o de tamaño, redimensiona o vuelve a comprimir la imagen por debajo de ese límite antes de adjuntarla.
  • Si el mensaje nombra una causa, como un JPEG CMYK, un WebP animado o un archivo posiblemente dañado, vuelve a guardar la imagen en el formato que sugiere el mensaje y adjúntala de nuevo.

Request rejected as unprocessable by the model

La API rechazó la solicitud como una que el modelo no puede procesar. El mensaje es el propio de la API.
Claude Code puede quitar las imágenes y los documentos más antiguos de una solicitud rechazada y enviarla de nuevo. Antes de v2.1.290, Claude Code no quitaba imágenes ante este rechazo, por lo que una sesión larga que acumulaba cientos de ellas podía fallar con este error en cada turno. Qué hacer:
  • Si el mensaje sigue apareciendo en una conversación con imágenes o documentos, quítalos tú mismo. Presiona Esc dos veces para retroceder antes de los turnos que los agregaron, o ejecuta /clear para empezar de cero.

Errores de PDF

El PDF que adjuntaste no se pudo procesar. Los mensajes se muestran aquí en su forma no interactiva; en una sesión interactiva, en cambio, te piden que presiones esc dos veces y lo intentes de nuevo.
Qué hacer:
  • Para PDF demasiado grandes, pídele a Claude que lea un rango de páginas con la herramienta Read en lugar de adjuntar el archivo completo, o extrae el texto con una herramienta como pdftotext y haz referencia al archivo de salida por su ruta
  • Para PDF protegidos o no válidos, quita la contraseña o vuelve a exportar el archivo desde su aplicación de origen, y luego inténtalo de nuevo
Cuando Claude lee un rango de páginas de un PDF con la herramienta Read, la lectura puede fallar con otro mensaje:
Las lecturas por rango de páginas renderizan las páginas con pdftoppm. Instala poppler-utils con el comando que indica el mensaje o, en otras plataformas, una compilación de poppler que ponga pdftoppm en tu PATH. Consulta Comportamiento de la herramienta Read para saber qué PDF se leen por rango de páginas.

No se permiten entradas adicionales

Un proxy o gateway de LLM entre Claude Code y la API eliminó el encabezado de solicitud anthropic-beta, por lo que la API rechazó los campos que dependen de él.
Claude Code envía campos exclusivos de beta, como context_management, junto con un encabezado anthropic-beta que los habilita. Cuando un gateway reenvía el cuerpo pero descarta el encabezado, la API ve campos que no reconoce. Qué hacer:

El esquema de entrada de la herramienta no es válido

Una herramienta de la solicitud declaró un input_schema que no supera la validación de JSON Schema de la API, por lo que la API rechazó toda la solicitud. El número después de tools. es la posición de la herramienta que falla en la lista de herramientas de la solicitud, no un nombre que puedas buscar.
La primera forma significa que el esquema no es un JSON Schema draft 2020-12 válido. La segunda significa que un nombre de propiedad de nivel superior no coincide con el patrón que cita el mensaje. Claude Code excluye las herramientas MCP cuyo esquema de entrada no superaría esta validación cuando carga las herramientas de un servidor, por lo que normalmente las solicitudes nunca incluyen una. En un despliegue donde la obtención de flags está desactivada, o en una máquina a la que nunca le han llegado los flags, Claude Code anota en el registro del servidor qué herramienta sería rechazada, pero la envía de todos modos, así que este error todavía puede ocurrir. El error también puede ocurrir con una herramienta cuyo esquema declara en $schema un dialecto de JSON Schema distinto de draft 2020-12. Claude Code no valida esos esquemas contra el metaesquema de JSON Schema, aunque la verificación de los nombres de propiedad de nivel superior sigue aplicándose. Antes de v2.1.216, ningún despliegue ejecutaba las verificaciones de exclusión. Qué hacer:
  • Si tu versión de Claude Code es anterior a v2.1.216, ejecuta claude update.
  • Elimina o desactiva el servidor MCP que declara el esquema no válido. El error identifica la herramienta solo por su posición. En v2.1.216 o posterior, revisa el registro de cada servidor en busca de una línea que nombre una herramienta cuyo esquema de entrada sería rechazado. Si ningún registro nombra una, desactiva los servidores de uno en uno.
  • Si mantienes el servidor, corrige el input_schema de la herramienta. El esquema debe ser JSON Schema válido, y los nombres de propiedad de nivel superior deben tener entre 1 y 64 caracteres y usar solo letras y dígitos ASCII, _, . y -. Consulta Herramientas con esquemas de entrada no válidos.

Nombre de herramienta MCP de más de 128 caracteres

Un servidor MCP enumera una herramienta cuyo nombre completo, como mcp__<server>__<tool>, supera los 128 caracteres que acepta la API. Claude Code deja esa herramienta fuera de las herramientas que envía a Claude, y las demás herramientas del servidor siguen funcionando. En una sesión que inicias con claude --debug desde tu shell, Claude Code escribe este mensaje en el registro de depuración en ~/.claude/debug/<session-id>.txt:
Qué hacer:
  • Si mantienes el servidor, acorta el nombre de la herramienta.
  • Si el servidor está en tu configuración de MCP, dale ahí un nombre más corto, como db en lugar de analytics-database. Luego actualiza lo que hace referencia al servidor o a sus herramientas con el nombre anterior, como las reglas de permisos y los matchers de hooks.
  • Si un plugin incluye el servidor, el nombre completo de la herramienta también incluye el nombre del plugin. Pídele al mantenedor del plugin que acorte el nombre del servidor o de la herramienta.
Antes de v2.1.292, Claude Code enviaba la herramienta de todos modos, y la API rechazaba cada solicitud que la incluía con API Error: 400 ... tools.N.custom.name: String should have at most 128 characters.

tool_use.name de más de 200 caracteres

Una llamada a herramienta en el historial de la conversación lleva un nombre más largo que los 200 caracteres que la API acepta en una solicitud:
Claude Code recorta ese nombre a 200 caracteres cuando llega la respuesta y cuando carga una conversación guardada, por lo que la llamada falla con un error de herramienta No such tool available y la conversación continúa sin este error de API. Qué hacer:
  • Ejecuta claude update y luego reanuda la conversación. La versión actualizada repara el nombre demasiado largo cuando carga la transcripción, así que una conversación que estaba atascada vuelve a funcionar.
Antes de v2.1.281, el nombre demasiado largo permanecía en el historial y la API rechazaba cada solicitud que volvía a enviar la conversación, incluidos /compact y --resume, por lo que este error se repetía y la conversación quedaba atascada.

Hay un problema con el modelo seleccionado

El nombre del modelo configurado no se reconoció o tu cuenta no tiene acceso a él. A partir de v2.1.160, la sugerencia final, que aquí se muestra en su forma interactiva, varía según la superficie.
Qué hacer:
  • CLI interactiva: ejecuta /model para elegir entre los modelos disponibles para tu cuenta.
  • Modo no interactivo (-p): pasa --model con un alias o ID válido, o establece ANTHROPIC_MODEL. En esta superficie, el texto del error muestra Run --model.
  • Agent SDK: el texto del error omite la sugerencia porque el modelo se establece mediante programación. Establece model en Options en TypeScript o ClaudeAgentOptions(model=...) en Python, y maneja el error estructurado model_not_found para mostrar tu propio reintento o selector de modelo.
  • Usa un alias como sonnet u opus en lugar de un ID completo con versión. Los alias se resuelven a un valor predeterminado que se mantiene actualizado, así que no quedan obsoletos. Consulta Configuración del modelo.
  • Si el modelo incorrecto sigue reapareciendo en la CLI, hay un ID obsoleto configurado en algún lugar. Revisa los lugares donde puedes establecer un modelo en orden de prioridad y elimina el valor obsoleto.
  • Claude Code reporta un inicio de sesión de claude.ai expirado como Inicio de sesión expirado, no como este error. Antes de v2.1.206, un inicio de sesión expirado que ya no se podía renovar hacía fallar todos los modelos con este error; ejecuta /login si ves eso en una versión anterior.
  • Para despliegues en Agent Platform de Google Cloud, consulta Solución de problemas de Agent Platform de Google Cloud.

El modelo no es un ID de modelo reconocido

La cadena que pasaste a un cambio de modelo no es una que Claude Code pueda usar como modelo, por lo que rechazó el cambio sin enviar ninguna solicitud y la sesión mantiene su modelo actual. Puedes obtener este error cuando un modelo se establece mediante el método setModel() del Agent SDK, mediante una aplicación que ejecuta la CLI de Claude Code por ti, como la aplicación de escritorio, o cuando eliges un modelo desde un dispositivo conectado mediante Remote Control. Antes de v2.1.200, Claude Code guardaba la cadena y fallaba en la siguiente solicitud con Hay un problema con el modelo seleccionado.
En este ejemplo, una aplicación envió el nombre visible Sonnet 5, que el mensaje repite sin el espacio. La sugerencia final nombra el alias o ID de modelo más parecido. Cuando nada se parece lo suficiente, dice Run /model to see available models. en su lugar. En una sesión que la aplicación de escritorio inicia por ti, la sugerencia sin coincidencias dice Switch to a different model. Cuando cambias de modelo mediante el Agent SDK o una aplicación en la API de Anthropic, solo recibe este error una cadena que no puede ser un ID de modelo, como un nombre visible o una cadena vacía. Cuando eliges un modelo desde un dispositivo con Remote Control, Claude Code verifica la cadena localmente. Cualquier cadena que no sea un alias de modelo, un modelo que Claude Code enumera o que configuraste, o un ID que empiece por claude- recibe este error, incluido un ID mal escrito como claud-sonnet-5. Antes de v2.1.260, esta verificación no cubría las selecciones hechas con Remote Control, por lo que una cadena no reconocida se aplicaba y fallaba en la siguiente solicitud. Qué hacer:
  • Ejecuta /model sin argumentos para abrir el selector y elegir entre los modelos disponibles para tu cuenta; luego pasa el alias o ID que se muestra ahí
  • Si usaste un alias que solo admite una versión más reciente de Claude Code, ejecuta claude update o, en su lugar, pasa el ID completo del modelo. El servidor aún puede exigir una versión mínima de Claude Code para ese modelo; consulta Claude Code no admite este modelo.
  • Esta verificación no repara un modelo guardado antes de v2.1.200. Si un valor obsoleto sigue reapareciendo, elimínalo de las ubicaciones indicadas en Establecer tu modelo.
  • En cualquier proveedor distinto de la API de Anthropic, o detrás de un gateway o un ANTHROPIC_BASE_URL personalizado, solo una cadena vacía recibe este error. Claude Code aún puede escribir la línea de diagnóstico de modelo no reconocido en el momento de la solicitud, en cualquier proveedor.

Modelo no encontrado

Cambiaste a un modelo por su nombre y Claude Code no pudo confirmar que exista un modelo con ese nombre. Cuando el nombre no es un alias de modelo ni otra grafía que Claude Code acepte localmente, Claude Code lo verifica con una solicitud mínima a la API, y este error suele ser la respuesta de tu endpoint de API. Con /model <name>, un nombre que no puede ser un ID de modelo en absoluto, como uno que contiene espacios, recibe el mismo mensaje.
En proveedores con ID de modelo propios del proveedor, el mensaje puede agregar una sugerencia Try '...' instead que nombra el ID de tu proveedor para un modelo de respaldo. Qué hacer:
  • Ejecuta /model sin argumentos y elige entre los modelos disponibles para tu cuenta, o usa un alias de modelo como sonnet, que se resuelve a un valor predeterminado que se mantiene actualizado
  • Si escribiste un ID completo, compáralo con el catálogo de modelos de tu proveedor. Un modelo recién lanzado puede estar disponible en la API de Anthropic antes de que tu proveedor o región lo ofrezca.
  • En el Agent SDK, setModel() falla con este mensaje y la sesión sigue ejecutándose con su modelo anterior. En el SDK de TypeScript, llama a supportedModels() para enumerar los modelos a los que puedes cambiar.
  • Antes de v2.1.265, /model también rechazaba la grafía del alias opusplan[1m] con este error. En esas versiones, actualiza Claude Code, o establece el modelo en la configuración o con --model.

No se pudo confirmar el modelo con la API

Cambiaste de modelo mediante el método setModel() del Agent SDK o mediante una aplicación que ejecuta la CLI de Claude Code por ti, como la aplicación de escritorio, y la solicitud que confirma el ID del modelo con tu endpoint de API no obtuvo respuesta en cinco segundos. La sesión mantiene su modelo actual.
En una sesión que la aplicación de escritorio inicia por ti, el mensaje termina en Try again. Qué hacer:
  • Vuelve a cambiar al modelo
  • Si el cambio sigue fallando, comprueba que Claude Code pueda conectarse a tu endpoint de API; consulta Errores de red y de conexión

Error de API al verificar el modelo elegido

Elegiste un modelo con /model <name>, o una aplicación conectada a la sesión solicitó el cambio. La API rechazó la solicitud mínima que Claude Code envía para verificar el modelo por un motivo que no tiene una entrada propia, como un rate limit o un error del servidor. La sesión mantiene su modelo actual, y el mensaje termina indicándolo:
La parte central del mensaje es el código de estado HTTP y la explicación del propio servidor. Qué hacer:

Claude Opus no está disponible con el plan Claude Pro

Tu plan de suscripción activo no incluye el modelo que seleccionaste.
En una sesión que ejecuta la aplicación de escritorio de Claude, el mensaje dice sign out and sign in again en lugar de nombrar los comandos. Qué hacer:
  • Ejecuta /model y selecciona un modelo que incluya tu plan
  • Si actualizaste tu plan recientemente y aún ves esto, ejecuta /logout y luego /login. El token almacenado refleja tu plan en el momento en que iniciaste sesión, por lo que una mejora de plan en claude.ai no tiene efecto en una sesión existente hasta que vuelvas a autenticarte.
  • Consulta claude.com/pricing para ver qué modelos incluye cada plan

Claude Code no admite este modelo

La API rechazó la solicitud con un 400 porque tu versión de Claude Code está por debajo de un mínimo requerido. O bien el modelo que seleccionaste requiere una versión más reciente, algo que el servidor verifica por modelo, o bien la política de tu organización la exige. El 400 incluye el código de error claude_code_version_too_old, y el mensaje indica qué mínimo se aplica.
La redacción de la política de la organización dice:
La versión que verifica la API es la que reporta el binario de Claude Code que hizo la solicitud. Qué hacer: Actualiza ese binario y luego inicia una nueva sesión. La forma de hacerlo depende de la procedencia del binario, salvo en un entorno autohospedado:
  • Si ejecutas claude update en el canal de versiones estable, no te lleva más allá de la versión estable más reciente, que aún puede estar por debajo del mínimo requerido. Cambia al canal latest y vuelve a actualizar. Si tu organización fija tu canal o tu versión mediante la configuración administrada, pídele a tu administrador que lo cambie
  • Con la redacción por modelo, puedes seguir trabajando en la sesión actual cambiando a otro modelo: ejecuta /model en la CLI, llama a setModel() en el objeto Query del SDK de TypeScript en modo de entrada en streaming, o llama a set_model() en el ClaudeSDKClient del SDK de Python
  • Con la redacción de la política de la organización, actualiza antes de continuar

El modelo está restringido por la configuración de tu organización

El administrador de tu organización deshabilitó este modelo en la consola de administración de claude.ai, o la configuración administrada lo excluye mediante una lista de permitidos availableModels o una lista deniedModels. El aviso aparece al inicio cuando --model, ANTHROPIC_MODEL o el ajuste model indicaron el modelo restringido, y nombra el modelo que la sesión usa en su lugar. Si la configuración administrada no deja ningún modelo permitido que la sesión pueda usar, consulta La configuración administrada bloquea el modelo predeterminado. El aviso de sustitución también puede aparecer a mitad de la sesión cuando un administrador deshabilita en la consola de administración de claude.ai el modelo con el que se está ejecutando la sesión.
Si escribes /model <name> con un modelo restringido, se rechaza y la sesión mantiene su modelo actual. Para un modelo deshabilitado en la consola de administración, el rechazo dice Model '<name>' is restricted by your organization's settings. Run /model to choose a different model. Para un modelo que excluye la configuración administrada, dice Model '<name>' is not available. Your organization restricts model selection. Un aviso precedido por el nombre de un agente, skill o comando significa que la restricción se aplicó al modelo solicitado por ese subagente: el subagente se ejecuta con el modelo sustituto y el modelo de tu sesión no cambia. Antes de v2.1.223, Claude Code mostraba el aviso solo para los subagentes iniciados con la herramienta Agent. Claude Code trata un alias de familia de modelos, ya sea opus, sonnet, haiku o fable, como una solicitud de esa familia y no de su versión más reciente. En la API de Anthropic y en Claude Platform on AWS, un alias de familia restringido se resuelve a la versión más reciente de la familia que permite la configuración de tu organización, y el aviso de sustitución nombra esa versión. Claude Code rechaza /model <alias> solo cuando todas las versiones de la familia están restringidas. Antes de v2.1.205, un alias de familia se sustituía o rechazaba basándose únicamente en su versión más reciente, incluso cuando una versión anterior de la misma familia estaba permitida. Qué hacer:
  • Ejecuta /model para elegir entre los modelos que permite tu organización. Los modelos restringidos no aparecen en el selector.
  • Si el modelo restringido se estableció en --model, en ANTHROPIC_MODEL, en el campo model de un archivo de configuración o en el frontmatter model de un subagente, skill o comando, elimina o actualiza ese valor para que el aviso no se repita
  • Si necesitas acceso al modelo restringido, pídele al administrador de tu organización que lo habilite. Consulta Restricciones de modelos de la organización.

No se puede cambiar al modelo predeterminado

Elegiste el modelo Predeterminado, por ejemplo seleccionando la fila Predeterminado en el selector de /model o escribiendo /model default. Claude Code rechazó el cambio, por lo que la sesión mantiene su modelo actual.
El texto después de los dos puntos indica qué bloqueó el cambio:
  • your organization's managed settings block it ... in "deniedModels": una lista de denegación administrada bloquea el modelo al que se resuelve la opción Predeterminado
  • your organization allows only the models listed in "availableModels": una lista de permitidos availableModels administrada, con availableModelsMatch establecido en "exact", deja fuera el modelo al que se resuelve la opción Predeterminado
  • Claude Code couldn't read your organization's managed settings to check which models they allow: no se pudo leer la configuración administrada, y Claude Code rechaza el cambio en lugar de aplicarlo sin verificar
Qué hacer:
  • Con las redacciones de deniedModels y availableModels, ejecuta /model y elige por su nombre un modelo que permita tu organización
  • Pídele a tu administrador que actualice el ajuste administrado que nombra el mensaje
  • Con la redacción couldn't read, reinicia Claude Code; si sigue ocurriendo, pídele a tu administrador que revise la configuración administrada
Si en cambio una sesión no logra iniciarse y muestra un mensaje Claude Code can't start con esta configuración administrada, consulta La configuración administrada bloquea el modelo predeterminado.

Un hook PreModelSwitch bloqueó el cambio de modelo

Un hook PreModelSwitch no aprobó el cambio de modelo que tú o un cliente solicitaron, por lo que la sesión mantiene su modelo actual. Cuando el cambio provino de un host del Agent SDK o de Remote Control en lugar de un comando que escribiste, el mensaje dice Model switch blocked by a PreModelSwitch hook sin nombrar el modelo de destino.
El motivo después de los dos puntos indica qué rechazó el cambio:
  • Un motivo escrito por un hook: un hook PreModelSwitch proporcionó ese motivo cuando denegó el cambio o pidió confirmación. Atiende lo que pide, o elige un modelo que tus hooks permitan.
  • PreModelSwitch hook <name> did not respond before its timeout: un hook que no responde antes de que se agote su tiempo de espera bloquea el cambio. Corrige el comando que se queda colgado o aumenta el timeout de ese hook, y luego vuelve a cambiar.
  • confirmation required, and this session cannot ask: un hook respondió ask sin un motivo, y una solicitud de control no tiene forma de mostrar la solicitud de confirmación. Un comando /model en una ejecución con -p reporta la misma condición con (run /model interactively to confirm) después del motivo. Haz el cambio desde una sesión interactiva, o cambia la decisión del hook para este modelo.
  • so organization-managed PreModelSwitch hooks could not be checked: Claude Code no pudo determinar qué hooks PreModelSwitch entregan los plugins administrados de tu organización, por ejemplo porque un plugin administrado no se cargó. Uno de esos hooks podría bloquear el cambio, así que Claude Code lo rechaza en lugar de aplicarlo sin verificar. El principio del motivo indica qué falló. Claude Code vuelve a verificar en cada intento de cambio, por lo que un fallo que ya se resolvió deja de bloquear; si sigue fallando, ejecuta claude --debug y vuelve a cambiar para capturar los detalles, y luego corrige el plugin o pídele a tu administrador que lo corrija.
  • a PreModelSwitch hook failed before answering o PreModelSwitch hooks were cancelled (the control stream closed) before answering: la ejecución del hook terminó sin un veredicto, y Claude Code no lo trata como una aprobación. Ejecuta claude --debug para ver qué falló y luego vuelve a cambiar.
Antes de v2.1.260, el rechazo por plugins administrados decía plugin hooks could not be loaded, so PreModelSwitch hooks could not be checked; see the debug log. Claude Code reintentaba la carga del plugin una vez y luego rechazaba los cambios posteriores en la sesión, incluso cuando tu organización no administraba ningún plugin. En esas versiones, reinicia la sesión para volver a ejecutar la carga del plugin.

No se pudo guardar como tu valor predeterminado

Elegiste un modelo para guardarlo como tu valor predeterminado, por ejemplo con /model <name> o con Enter en el selector de /model, y Claude Code no pudo escribir la selección en tu archivo de configuración de usuario, ~/.claude/settings.json. El cambio en sí se aplicó, por lo que la sesión actual se ejecuta con el modelo que elegiste, pero tu valor predeterminado no cambia y la siguiente sesión comienza con el valor anterior.
El motivo después de la ruta del archivo indica qué falló:
  • can't be written (<code>): la escritura falló con el código de error del sistema operativo que aparece entre paréntesis, como EROFS cuando el archivo, o el archivo al que enlaza, está en un sistema de archivos que rechaza escrituras. Haz que el archivo sea escribible y vuelve a cambiar. Si otra herramienta genera el archivo, establece la clave model en esa herramienta; consulta Un cambio que hiciste en Claude Code se pierde en las sesiones nuevas.
  • isn't valid JSON: el archivo en disco no se puede analizar, y Claude Code lo deja intacto en lugar de sobrescribir contenido que no puede volver a leer. Corrige el error de sintaxis y vuelve a cambiar; consulta Corregir un archivo de configuración dañado.
Un aviso que termina en couldn't confirm it was saved as your default (~/.claude/settings.json is still being written) significa que la escritura no había terminado después de tres segundos. Continúa en segundo plano, por lo que el valor predeterminado aún podría guardarse; comprueba con qué modelo comienza tu siguiente sesión, o vuelve a ejecutar /model <name>. Antes de v2.1.265, el aviso decía que el modelo se había saved as your default for new sessions incluso cuando la escritura fallaba.

El asesor es menos capaz que el modelo principal actual

Tu modelo asesor tiene un rango inferior al del modelo principal de tu sesión, por lo que Claude Code conserva la selección pero no adjunta el asesor a las solicitudes del modelo principal.
Otros mensajes reportan la misma condición:
  • En una sesión interactiva, una notificación dice Advisor will not activate on the main model (advisor is less capable); subagents may still use it and may use more tokens · /advisor.
  • Al iniciar con el flag --advisor, una advertencia dice "<advisor>" cannot advise "<main model>" (the advisor must be at least as capable as the main model). The advisor will not be used for the main model. y la sesión se inicia de todos modos.
Qué hacer:
  • Elige un asesor de rango superior o un modelo principal de rango inferior. Elegir un modelo asesor muestra la clasificación y enumera los asesores aceptados para cada modelo principal.
  • Deja configurado el asesor si quieres que los subagentes cuyo modelo puede asesorar sigan usándolo
Antes de v2.1.287, Claude Code clasificaba varias combinaciones de otra manera. Mostraba esta nota para un asesor Sonnet 5.5 con un modelo principal Opus 4.7 u Opus 4.8, una combinación que ahora acepta. También adjuntaba algunos asesores que ahora producen esta nota, como un asesor Opus 4.8 con un modelo principal Sonnet 5.5.

thinking.type.enabled no es compatible con este modelo

Tu versión de Claude Code es anterior a la mínima requerida para el modelo seleccionado. La CLI envió una configuración de pensamiento que el modelo ya no acepta.
Qué hacer:
  • Ejecuta claude update y reinicia Claude Code. Opus 4.7 necesita v2.1.111 o posterior. Opus 4.8 necesita v2.1.154 o posterior. Sonnet 5 necesita v2.1.197 o posterior. Opus 5 necesita v2.1.219 o posterior. Opus 5.5 necesita v2.1.280 o posterior. Sonnet 5.5 necesita v2.1.284 o posterior
  • En el canal de versiones estable, actualizar no te lleva más allá de la versión estable más reciente, que aún puede ser anterior a estas versiones. Cambia al canal latest y luego actualiza
  • Si no puedes actualizar, ejecuta /model y selecciona Opus 4.6 o Sonnet 4.6 en su lugar
  • Si te encuentras con esto en el Agent SDK, actualiza el paquete del SDK en su lugar. Opus 4.8 necesita TypeScript SDK v0.3.154 o posterior y Python SDK v0.2.88 o posterior. Sonnet 5 necesita TypeScript SDK v0.3.197 o posterior. Opus 5 necesita TypeScript SDK v0.3.219 o posterior. Opus 5.5 necesita TypeScript SDK v0.3.280 o posterior. Sonnet 5.5 necesita TypeScript SDK v0.3.284 o posterior

El esfuerzo no está disponible con el pensamiento desactivado

Desactivaste el pensamiento extendido y ejecutaste con un nivel de esfuerzo superior a high. El modelo no acepta esa combinación, por lo que la API rechazó la solicitud.
La sugerencia después de · varía según la sesión: en una sesión no interactiva dice use --effort high (or the effortLevel setting), y en una sesión que ejecuta la aplicación de escritorio de Claude dice you can lower effort to High. Qué hacer: Antes de v2.1.242, Claude Code mostraba el mensaje propio de la API: API Error: 400 output_config.effort 'xhigh' is not supported when thinking is disabled on this model. Use effort 'high' or below, or enable thinking. Antes de v2.1.251, Claude Code enviaba la solicitud con el nivel de esfuerzo que habías establecido, por lo que Opus 5 rechazaba cada solicitud por encima de high con el pensamiento desactivado. Ahora Claude Code envía el esfuerzo high en su lugar a los modelos que sabe que rechazan la combinación, como Opus 5.

El presupuesto de pensamiento supera el límite de salida

El presupuesto de pensamiento extendido configurado supera la longitud máxima de la respuesta, por lo que no queda espacio para la respuesta en sí.
Qué hacer:

Response exceeded the output token maximum

La respuesta de Claude alcanzó el mayor número de tokens de salida que permitía la solicitud y se cortó ahí:
La forma que menciona a request sent without streaming significa que una solicitud en streaming falló y Claude Code la volvió a enviar sin streaming, lo que limita la respuesta a 64,000 tokens de salida. Antes de v2.1.299, una respuesta cortada en una solicitud reenviada de ese modo terminaba el turno sin este mensaje, como si la respuesta estuviera completa. Qué hacer:
  • Si Claude escribió algo de texto antes de que se cortara la respuesta, responde continue en una sesión interactiva para pedir el resto. Ese texto permanece en la conversación.
  • Si el mensaje indica que configures CLAUDE_CODE_MAX_OUTPUT_TOKENS, consulta CLAUDE_CODE_MAX_OUTPUT_TOKENS para saber cómo se limita el valor y Configurar variables de entorno para saber dónde configurarla
  • Para mantener cada respuesta por debajo del límite, pídele a Claude la salida en partes más pequeñas, como un archivo o una sección por respuesta

Desajuste en bloques de uso de herramientas o de pensamiento

El historial de la conversación llegó a la API en un estado inconsistente.
Todas las variantes significan lo mismo: la secuencia de bloques tool_use, tool_result y thinking del historial ya no coincide con lo que espera la API. Qué hacer:
  • Si estás usando Opus 4.7 u Opus 4.8, ejecuta primero claude update. Las versiones anteriores a v2.1.156 pueden provocar este error durante el uso normal de herramientas, y /rewind no lo resuelve.
  • Ejecuta /rewind, o presiona Esc dos veces, para retroceder a un checkpoint anterior al turno dañado y continuar desde ahí. Consulta Checkpointing para ver cómo se crean y restauran los checkpoints.

Datos no válidos en el bloque redacted_thinking

La API rechazó la solicitud con un 400 porque no pudo aceptar un bloque redacted_thinking que lleva un turno anterior del historial de la conversación.
Claude Code deja fuera de la solicitud el pensamiento anterior de la conversación y reintenta una vez, por lo que la sesión continúa sin mostrar el error. Antes de v2.1.282, Claude Code conservaba el bloque rechazado, y cada turno posterior fallaba con el mismo error. Qué hacer:
  • Si estás en v2.1.281 o anterior y cada turno falla con este error, ejecuta claude update y reanuda la sesión
  • Si el error persiste, ejecuta /clear para iniciar una conversación que no lleve el bloque

Contenido de herramienta no compatible eliminado

Cuando Claude Code se conecta directamente a la API de Anthropic y carga o muestra una vista previa de una sesión guardada, elimina el contenido de herramientas que la API de Anthropic no acepta y deja esta línea donde el contenido eliminado estaba entre dos bloques de pensamiento:
Ese contenido llega a un archivo de sesión cuando algo distinto de la API de Anthropic respondió con el formato de la API, normalmente un proxy de terceros configurado mediante ANTHROPIC_BASE_URL que traduce las llamadas a herramientas de otro proveedor. Claude Code lo elimina solo cuando la sesión se conecta directamente a la API de Anthropic, y carga el historial guardado tal cual cuando la sesión se ejecuta a través de un proxy o en otro proveedor. Antes de v2.1.246, Claude Code volvía a enviar a la API el uso de la herramienta y su resultado, y cada turno de la sesión reanudada fallaba con un error 400 como messages.1.content.0.server_tool_use.name: Input should be 'web_search', 'web_fetch', .... Qué hacer:
  • No necesitas hacer nada cuando ves la línea de marcador de posición. La sesión continúa sin el contenido eliminado.
  • Si, en cambio, cada turno de una sesión reanudada falla con el error 400, ejecuta claude update y vuelve a reanudar la sesión. Las versiones anteriores a v2.1.246 no eliminan el contenido.

role ‘system’ debe preceder a un mensaje ‘assistant’

La API rechazó la solicitud con un 400 porque hay un mensaje del sistema en una posición de la conversación que no acepta:
Claude Code envía parte de su texto de recordatorios y adjuntos como mensajes del sistema dentro de la conversación. Cuando la API rechaza la posición de uno de ellos, Claude Code reintenta la solicitud una vez enviando ese texto como mensajes de usuario normales. Las redacciones similares de la API sobre la ubicación, como use the top-level 'system' parameter for the initial system prompt, reciben la misma recuperación. Cuando el error sí aparece, el mensaje del sistema rechazado no es uno que Claude Code pueda eliminar. Eso suele significar que un proxy o gateway de LLM entre Claude Code y la API agregó un mensaje del sistema propio. Qué hacer:
  • Si el error se repite en cada turno detrás de un proxy o gateway configurado mediante ANTHROPIC_BASE_URL, conéctate sin el proxy para confirmar el origen e informa el error a quien lo opere
  • Ejecuta /clear para iniciar una conversación nueva. Si el error también vuelve a aparecer ahí, la causa está en la ruta de la solicitud, no en la conversación guardada.
Antes de v2.1.280, Claude Code no reconocía esta redacción, por lo que el error también aparecía cuando el mensaje del sistema rechazado era uno que había enviado el propio Claude Code, y cada turno posterior de la conversación fallaba de la misma manera.

encrypted_content no válido en el bloque search_result

La API rechazó la solicitud con un 400 porque el historial de la conversación contiene contenido de búsqueda web alojada que no puede descifrar. La redacción nombra el campo que no puede leer:
Los resultados de la herramienta de búsqueda web alojada de la API llevan campos cifrados que solo la API puede leer. La redacción de encrypted_stdout se refiere a la salida de un programa de ejecución de código alojado que leyó esos resultados, que la API también cifra. La API rechaza una solicitud que vuelve a enviar contenido que no puede descifrar, como contenido generado para otra organización. La propia herramienta WebSearch de Claude Code registra los resultados de búsqueda como texto sin formato, por lo que estos bloques suelen llegar a una conversación a través de un proxy o gateway de LLM que ejecutó por sí mismo la búsqueda web alojada. Con las tres redacciones de búsqueda web, Claude Code deja fuera de lo que envía las llamadas de búsqueda, los resultados y las citas, y reintenta la solicitud una vez, por lo que la sesión continúa sin mostrar el error. La redacción de encrypted_stdout no tiene esa recuperación, así que ese mensaje todavía te llega. Antes de v2.1.282, Claude Code también conservaba los bloques de búsqueda web rechazados, y cada turno posterior y /compact fallaban de la misma manera. Qué hacer:
  • Si estás en v2.1.281 o anterior y cada turno falla con una de las redacciones de búsqueda web, ejecuta claude update y reanuda la sesión
  • Si el error persiste, o el mensaje nombra encrypted_stdout, ejecuta /rewind para retroceder a un checkpoint anterior al turno que agregó el contenido, o ejecuta /clear para iniciar una conversación que no lo lleve
  • Si ejecutas Claude Code detrás de un proxy o gateway, informa el error a quien lo opere

Rechazo por la Política de uso

La API se negó a responder porque el contenido de la conversación activó una verificación de la Política de uso. Si el mensaje incluye la línea Details: `[reasoning_extraction]`, consulta Las protecciones marcaron una solicitud del razonamiento de Claude. El mensaje incluye un ID de solicitud y un ID de mensaje que puedes citarle al soporte si crees que el rechazo es incorrecto.
El mensaje nombra el modelo que se negó, o Claude cuando no hay ningún modelo registrado. La verificación evalúa la conversación completa, no solo tu prompt más reciente, por lo que enviar un mensaje nuevo en la misma sesión suele volver a provocar el mismo rechazo. Lo mismo ocurre si sales y vuelves a abrir la sesión con --continue o --resume, ya que la transcripción en disco sigue conteniendo el contenido que lo provocó. En Amazon Bedrock, Agent Platform de Google Cloud y Microsoft Foundry, este mensaje también cubre las solicitudes que las medidas de seguridad del modelo marcaron como un tema de ciberseguridad. Consulta Las medidas de seguridad marcaron un tema de ciberseguridad. Antes de v2.1.219, el mensaje decía Claude Code is unable to respond to this request, which appears to violate our Usage Policy (https://www.anthropic.com/legal/aup). Please double press esc to edit your last message or start a new session for Claude Code to assist with a different task. Qué hacer:
  • Presiona Esc dos veces o ejecuta /rewind para retroceder a un checkpoint anterior al turno que provocó el rechazo, y luego reformula o adopta un enfoque diferente. Consulta Checkpointing.
  • Si no puedes identificar qué turno lo provocó, ejecuta /clear para iniciar una conversación nueva en el mismo proyecto. Tu conversación anterior se conserva en disco y sigue disponible en /resume.
  • En modo no interactivo (-p), donde no es posible retroceder, reintenta con un prompt reformulado en una nueva sesión sin --continue. Las verificaciones de la política varían según el modelo, así que en algunos casos cambiar a otro modelo con --model también puede resolver el rechazo.

Las medidas de seguridad marcaron un tema de ciberseguridad

Las medidas de seguridad del modelo marcaron contenido de la conversación como un tema de ciberseguridad. El mensaje nombra el modelo que marcó la solicitud:
Si el mensaje incluye la línea Details: `[reasoning_extraction]`, consulta Las protecciones marcaron una solicitud del razonamiento de Claude. Este mensaje enlaza al Cyber Verification Program, que otorga acceso para trabajo legítimo de ciberseguridad. Los modelos con respaldo automático de modelo muestran un mensaje diferente, sin este enlace; en Opus 5.5 y Sonnet 5.5 comienza con <model>'s safeguards flagged this session. Esa sección también explica cuándo Claude Code cambia de modelo en su lugar. En Amazon Bedrock, Agent Platform de Google Cloud y Microsoft Foundry, una marca de ciberseguridad produce en su lugar el mensaje de rechazo por la Política de uso. Qué hacer:
  • Si tu trabajo requiere este contenido, solicita acceso a través del Cyber Verification Program
  • Si tu solicitud no trataba sobre un tema de ciberseguridad, ejecuta /feedback para reportar el falso positivo
  • Para seguir trabajando en la misma sesión, presiona Esc dos veces o ejecuta /rewind para retroceder a un checkpoint anterior al turno que activó la marca, y luego adopta un enfoque diferente. Consulta Checkpointing.
Si el mensaje que ves está redactado como alguno de estos, se trata de la misma marca en una versión anterior de Claude Code:
  • De v2.1.219 a v2.1.296, el mensaje también podía incluir Apply to the Cyber Verification Program to reduce these interruptions. antes de su oración final
  • De v2.1.203 a v2.1.218, el mensaje decía <model> has safety measures that flagged this message for a cybersecurity topic. To learn about the Cyber Verification Program and apply for access, visit our help center: seguido del mismo enlace al centro de ayuda. En sesiones interactivas, continuaba con If you were not engaging in a cybersecurity topic, please send feedback via /feedback.
  • Antes de v2.1.203, decía <model>'s safeguards flagged this message for a cybersecurity topic. If your work requires this access, you can apply for an exemption: seguido de un enlace a un formulario de exención

Las protecciones marcaron una solicitud del razonamiento de Claude

La API rechazó la solicitud porque las protecciones la marcaron por pedirle al modelo que reprodujera su razonamiento interno en la respuesta. La API denomina esta categoría de rechazo reasoning_extraction, y el mensaje de rechazo incluye esta línea:
Antes de v2.1.234, los mensajes de rechazo no incluían la línea Details. Qué hacer:
  • Elimina o reformula cualquier instrucción que le pida a Claude que escriba su pensamiento o razonamiento de forma literal o en un formato fijo, como una sección <thinking>, una sección de borrador o un campo reasoning en una salida JSON. La instrucción puede estar en tu prompt o en una personalización que Claude Code carga junto con él, como CLAUDE.md, un skill, el prompt de un subagente, un estilo de salida o la descripción de una herramienta MCP.
  • Para comprobar si una personalización es la causa, ejecuta claude --safe-mode en tu terminal para iniciar una sesión con las personalizaciones desactivadas y luego envía el mismo prompt
  • Después de cambiar una personalización, inicia una nueva sesión
  • Para reformular un prompt que ya enviaste, consulta Retroceder y resumir
  • Aún puedes pedirle a Claude que explique su respuesta. Pide una explicación breve, la evidencia detrás de un resultado o un resumen de las acciones que realizó. Para leer resúmenes del pensamiento de Claude, consulta showThinkingSummaries.
  • Para ver más ejemplos, y qué hacer si una solicitud reformulada sigue siendo rechazada, consulta Mantener el razonamiento en los bloques de pensamiento

Output blocked by content filtering policy

El filtro de contenido de salida de la API detuvo la respuesta que Claude estaba generando. El texto del mensaje proviene de la API:
Qué hacer:
  • Reformula tu último mensaje o adopta un enfoque diferente
  • Para retroceder a un checkpoint anterior al turno que provocó el bloqueo, presiona Esc dos veces o ejecuta /rewind. Consulta Checkpointing

Errores de la línea de comandos

Estos errores provienen de la línea de comandos claude y sus subcomandos, de un nombre de comando que envías en el prompt y de comandos como /security-review, que recopilan contexto ejecutando comandos de shell antes de que se ejecute su prompt. También provienen de /tui, que vuelve a iniciar la CLI.

Conflicto entre --bg y --print

Este mensaje requiere Claude Code v2.1.198 o posterior. Combinaste --bg con -p o --print en la misma invocación de claude. --bg inicia una sesión en segundo plano a la que luego te conectas con claude agents, mientras que --print se ejecuta de forma no interactiva y nunca inicia la sesión interactiva a la que se conecta claude agents. Antes de v2.1.198, esta combinación creaba silenciosamente un trabajo en segundo plano al que nunca era posible conectarse.
Qué hacer:
  • Quita -p o --print. --bg recibe el prompt como su argumento posicional, así que claude --bg "<task>" es el comando completo. Consulta Despachar nuevos agentes desde tu shell.
  • Para ejecutar el prompt de forma no interactiva e imprimir el resultado en lugar de crear una sesión en segundo plano, quita --bg y ejecuta claude -p "<task>"

Couldn’t tell whether --bg is a flag or text

Ejecutaste claude con --bg o --background en una posición donde Claude Code no pudo determinar si lo usabas como el flag de segundo plano o como texto. El comando no inició nada, imprimió esta línea y salió con el código 1:
Si escribiste --background, la línea menciona --background en su lugar. Qué hacer:
  • Para iniciar una sesión en segundo plano, vuelve a ejecutar el comando en tu shell con el flag primero: claude --bg --name nightly-audit "<task>"

Conflicto entre un flag de prompt del sistema y su forma de archivo

Pasaste --append-subagent-system-prompt junto con --append-subagent-system-prompt-file en una misma invocación de claude, así que claude termina con código 1 en lugar de iniciar la sesión:
Antes de v2.1.283, claude terminaba de la misma manera cuando pasabas --system-prompt con --system-prompt-file, o --append-system-prompt con --append-system-prompt-file, porque esos pares entraban en conflicto en lugar de combinarse. En esas versiones, el mensaje nombra el par que combinaste. Qué hacer:
  • Conserva una forma del flag y quita la otra. Para combinar un archivo de prompt fijo con texto específico de cada ejecución, integra el texto en el archivo antes de iniciar en lugar de pasar ambos flags

Configuración de --agents no válida

El valor que pasaste a --agents no es válido, así que claude termina con código 1 en lugar de iniciar la sesión. Cuando pasas --safe-mode o estableces CLAUDE_CODE_SAFE_MODE, Claude Code ignora --agents por completo. Con --resume o --continue, un valor JSON en línea no se comprueba y la sesión se inicia; un valor leído desde un archivo se comprueba en cada inicio. Antes de v2.1.242, Claude Code iniciaba la sesión de todos modos.
Lo que sigue a la primera línea depende de cómo falló el valor. Claude Code ejecuta estas comprobaciones en orden y se detiene en la primera que falla. Si tu valor tiene dos tipos de problema, ves el segundo solo después de corregir el primero:
  1. Cuando el valor empieza con { pero no se puede analizar como JSON, o el contenido de un archivo de --agents no se puede analizar, Claude Code imprime una línea invalid JSON: con el mensaje propio del analizador JSON
  2. Cuando se puede analizar pero una definición de agente no coincide con el esquema de los subagentes definidos por CLI, Claude Code imprime una línea por cada problema
  3. Cuando el nombre de un agente empieza con -, Claude Code imprime <name>: agent names must not start with '-'
Cuando hay más de 20 líneas de problemas, Claude Code imprime las primeras 20 y reemplaza el resto con …and N more. Con --print, --agents también acepta la ruta a un archivo JSON en lugar del objeto en línea. Antes de v2.1.281, --agents solo aceptaba JSON en línea y trataba una ruta de archivo como JSON no válido. La forma de archivo tiene sus propios rechazos, que se imprimen en lugar de este mensaje, entre ellos estos:
  • Error: --agents takes a JSON object, or a file path only with --print (-p): Claude Code interpretó el valor como una ruta de archivo en una sesión interactiva. Pasa las definiciones como JSON en línea, o agrega -p para leerlas desde un archivo.
  • Error: --agents file not found: <path>: no existe ningún archivo en esa ruta. Un valor que no empieza con { y no es JSON válido se lee como una ruta, así que el JSON en línea que tu shell alteró también puede fallar de esta manera. Revisa la ruta o las comillas y vuelve a ejecutar el comando.
Qué hacer:

No se pueden crear sesiones en la nube desde una sesión --restricted

Cuando inicias una sesión con --restricted, Claude Code se niega a crear sesiones en la nube desde ella, porque la nueva sesión se ejecutaría fuera del proceso restringido y no aplicaría el modo restringido. Claude Code lo rechaza en el cliente, antes de contactar al servidor, así que no se crea ninguna sesión en la nube:
Qué hacer:
  • Ejecuta la tarea localmente en la sesión restringida
  • Si controlas cómo se inició la sesión, inicia una nueva sesión de claude sin --restricted y crea la sesión en la nube desde allí
Antes de v2.1.248, Claude Code no tenía el flag --restricted; las versiones anteriores rechazan el propio flag con un error de opción desconocida.

Las sesiones en la nube están deshabilitadas por la política de tu organización

La política allow_remote_sessions de tu organización está desactivada, así que las sesiones en la nube y los comandos que las usan no están disponibles:
El mensaje aparece cuando creas una sesión en la nube desde la terminal y cuando envías un comando que necesita sesiones en la nube, como /teleport, /remote-env o /web-setup. Antes de v2.1.268, enviar uno de esos comandos devolvía Unknown command en su lugar. Si el mensaje, en cambio, nombra una credencial que usa esta sesión y termina con Cloud sessions use your claude.ai login., consulta Cloud sessions use your claude.ai login. Si Claude Code no pudo cargar la política de tu organización en absoluto, verás un mensaje diferente. Qué hacer:

Cloud sessions use your claude.ai login

Cuando el rechazo por política nombra una credencial que usa esta sesión y termina con esta oración, Claude Code verificó la política de sesiones en la nube de la organización que emitió esa credencial. Esa organización puede ser distinta de aquella a la que pertenece tu inicio de sesión de claude.ai:
La última oración significa que las sesiones en la nube se ejecutan con tu inicio de sesión de claude.ai y no con esa credencial. Esta forma aparece cuando inicias, reanudas o envías un mensaje a una sesión en la nube desde tu shell, por ejemplo con --cloud o --teleport. Antes de v2.1.296, Claude Code también imprimía en este caso la forma que te indica contactar al administrador de tu organización.

Couldn’t verify your organization’s policy for cloud sessions

Estos mensajes significan que Claude Code no pudo cargar la política de tu organización, que verifica antes de crear, reanudar o enviar un mensaje a una sesión en la nube. Mientras la solicitud de la política no ha terminado, el mensaje es:
Dentro de una sesión, un comando que necesita sesiones en la nube, como /teleport o /web-setup, también muestra este mensaje. Lo hace incluso cuando tu shell imprimiría una forma Cloud sessions aren't available:, y su segunda oración dice Check your network connection, then restart Claude Code and try again. Una vez que la solicitud de la política ha fallado, el mensaje indica qué falló. Esto aplica cuando inicias, reanudas o envías un mensaje a una sesión en la nube desde tu shell con un flag como --cloud o --teleport. Sin ruta hacia la API, dice:
Otros fallos siguen con el mismo comienzo y su propia causa, como un proxy que rechazó la solicitud con HTTP 403, un error del servidor o credenciales que la API no aceptó. Cuando la API no aceptó una credencial que esta sesión usa en lugar de tu inicio de sesión de claude.ai, como una variable de entorno ANTHROPIC_API_KEY, el mensaje también puede nombrarla e indicar que la elimines:
Antes de v2.1.296, estos fallos también imprimían el mensaje Couldn't verify. Qué hacer:
  • Para el mensaje Couldn't verify, revisa tu conexión de red e inténtalo de nuevo. Dentro de una sesión, reinicia Claude Code primero
  • Para un mensaje Cloud sessions aren't available:, haz lo que requiera su causa, como revisar tu proxy o eliminar la credencial que nombra, y luego vuelve a ejecutar el comando

No se guardó nada en el stash porque una carpeta reemplazó un archivo con seguimiento

Este mensaje significa que ahora hay una carpeta en tu checkout donde antes había un archivo o enlace con seguimiento en git. Aparece después de que eliges la opción de stash al traer una sesión en la nube a tu terminal, por ejemplo con claude --teleport o /teleport. Guardar ese estado en el stash podría eliminar los archivos dentro de la carpeta, así que Claude Code rechaza el stash y deja tu checkout y tu índice sin cambios:
Qué hacer:
  • Haz commit del cambio o mueve la carpeta a otro lugar, como indica el mensaje, y luego vuelve a ejecutar el teleport

El valor de --json-schema no es un JSON Schema válido

El esquema que pasaste a --json-schema en modo no interactivo no superó la compilación de JSON Schema, así que claude termina con código 1 en lugar de ejecutar el prompt. Antes de v2.1.205, un esquema no válido producía una salida no estructurada sin ningún error, y cualquier esquema que usara la palabra clave format se trataba como no válido.
El texto después de los segundos dos puntos es el diagnóstico del validador y nombra la palabra clave o la ubicación que falló. Los esquemas que usan la palabra clave format, como "format": "email", son válidos: Claude Code acepta format como anotación y no lo aplica. Claude Code ejecuta dos comprobaciones antes de la compilación del esquema: rechaza un valor que no es JSON analizable con Error: --json-schema is not valid JSON, y un JSON válido que no es un objeto con Error: --json-schema must be a JSON object. Qué hacer:
  • Corrige la parte del esquema que nombra el diagnóstico y vuelve a ejecutar el comando
  • Consulta Obtener salida estructurada para ver un esquema y un comando que funcionan

El archivo de configuración supera el límite de 2MiB

El archivo que pasaste a --settings pesa más de 2 MiB, así que claude termina con código 1 al iniciar en lugar de cargarlo. Antes de v2.1.214, Claude Code leía el archivo sin comprobar su tamaño, y un archivo de varios gigabytes o un archivo de dispositivo como /dev/zero hacía crecer la memoria sin límite.
Claude Code rechaza de la misma manera una ruta de --settings que no sea un archivo regular: un dispositivo, FIFO o socket informa Error: Cannot use settings file (Not a regular file (device, FIFO, or socket)) seguido de la ruta, y un directorio informa un motivo EISDIR. Qué hacer:
  • Apunta --settings a un archivo de configuración JSON regular de menos de 2 MiB. Consulta Configuración para ver el formato.

El directorio actual ya no existe

Iniciaste claude desde un directorio que se eliminó o se movió después de que tu shell entrara en él, por ejemplo un worktree o un directorio temporal que otro shell eliminó. Claude Code no puede leer su directorio de trabajo, así que termina con código 1 antes de iniciar la sesión, tanto en modo interactivo como no interactivo. Antes de v2.1.239, Claude Code fallaba mostrando código fuente minificado del bundle y un stack ENOENT ... uv_cwd sin procesar en stderr en lugar de este mensaje.
La causa y la solución son las mismas para ambas formas. Cuando Claude Code no puede leer el directorio de trabajo por otro motivo, como un cambio de permisos, el mensaje nombra el código de error en su lugar: Can't read the current directory (EACCES). Start Claude Code from a different directory. En macOS, EPERM para un directorio en ~/Desktop, ~/Documents, ~/Downloads o iCloud Drive suele significar que macOS está bloqueando el acceso de tu aplicación de terminal a esa carpeta. Otros comandos que leen esa carpeta fallan de la misma manera: ls allí informa Operation not permitted, incluso con sudo. Qué hacer:
  • Cambia a un directorio que exista, como tu directorio home o el de tu proyecto, y vuelve a ejecutar claude
  • Si el directorio se volvió a crear en la misma ruta, tu shell sigue apuntando al que se eliminó. Ejecuta cd "$PWD" o sal del directorio y vuelve a entrar, y luego vuelve a ejecutar claude
  • Para EPERM en macOS, cierra tu aplicación de terminal con Cmd+Q, ábrela de nuevo, vuelve a esa carpeta y ejecuta claude. Si ls en esa carpeta sigue fallando, abre System Settings > Privacy & Security > Files and Folders, activa la carpeta para tu aplicación de terminal y luego vuelve a abrir la terminal

Directorio temporal rechazado o imposible de crear

En macOS y Linux, Claude Code crea un directorio temporal privado al iniciar, claude-<uid>, dentro del directorio temporal del sistema o de la sobrescritura CLAUDE_CODE_TMPDIR. Cuando el directorio no se puede crear, o una entrada que ya existe en esa ruta no supera las comprobaciones de seguridad, Claude Code imprime el fallo en stderr y termina con código 1 en lugar de iniciar la sesión:
Qué hacer:
  • Para ENOSPC, libera espacio en el volumen que contiene el directorio temporal
  • Para las formas Refusing to use it, elimina la propia entrada nombrada, no aquello a lo que apunta un enlace, y vuelve a iniciar Claude Code; para la forma owned by uid, solo un administrador o ese usuario puede eliminarla
  • Para is not readable, ejecuta chmod 0700 sobre el directorio nombrado, o elimínalo y vuelve a iniciar
  • En cualquiera de estos casos, establece CLAUDE_CODE_TMPDIR en un directorio que controles y vuelve a iniciar Claude Code, sin tocar la ruta rechazada

No se pudo resolver el directorio a una ubicación real

Ejecutaste /add-dir para un subdirectorio de tu directorio de trabajo, y Claude Code no pudo resolver el directorio a su ubicación real. Ya tienes acceso a los archivos de un subdirectorio del directorio de trabajo, así que /add-dir solo carga sus skills, comandos y agentes. Antes de cargarlos, Claude Code comprueba que la ubicación real del directorio, con los enlaces simbólicos resueltos, esté dentro del directorio de trabajo. Cuando Claude Code no puede resolver esa ubicación, no carga nada y muestra este mensaje:
Qué hacer:
  • Comprueba que la ruta nombre un directorio real dentro del directorio de trabajo y vuelve a ejecutar /add-dir
  • El mensaje no cambia tu acceso a los archivos; solo informa que el contenido de .claude/ del directorio no se cargó
Antes de v2.1.261, este mensaje también aparecía en cada /add-dir <subdirectory> cuando el directorio de trabajo estaba en un montaje automático /net/<host>, donde Claude Code no resuelve rutas por diseño; el directorio estaba bien y reintentar no servía de nada.

Espacio de trabajo no confiable al iniciar Remote Control

Iniciaste el modo servidor de Remote Control con claude remote-control o su alias claude rc en un directorio en el que no has confiado, y el comando no pudo preguntarte si querías confiar en él. Por ejemplo, la entrada estándar o la salida estándar del comando no es una terminal porque una de ellas está redirigida o canalizada. El comando termina con código 1:
Dos variantes que también empiezan con Error: Workspace not trusted. aparecen en una terminal demasiado pequeña para mostrar lo que activa confiar en el directorio, o en una que no informó su tamaño. Agranda la ventana o cambia a una ventana de terminal normal y vuelve a ejecutar claude rc. En tu directorio home el mensaje es diferente, porque el diálogo de confianza del espacio de trabajo nunca guarda la confianza para el directorio home, así que aceptarlo allí no puede satisfacer esta comprobación. Antes de v2.1.214, el directorio home mostraba el mensaje anterior, cuyo consejo no puede funcionar allí.
Si respondes n o presionas Enter en la pregunta Trust <directory>?, el comando imprime un mensaje Remote Control did not start que nombra el directorio y termina con código 1. Vuelve a ejecutar claude rc para responder y. Qué hacer:
  • Primero confía en el directorio desde una terminal: ejecuta claude rc allí y responde y, o ejecuta claude allí y acepta el diálogo de confianza del espacio de trabajo, y luego vuelve a ejecutar tu comando original
  • En tu directorio home, cambia a un directorio de proyecto e inicia Remote Control allí
Antes de v2.1.284, el comando nunca preguntaba, ni siquiera en una terminal.

No se transfiere a las sesiones que inicia Remote Control

Iniciaste Remote Control con un flag global de claude antes del verbo remote-control, uno que restringiría o configuraría las sesiones que inicia Remote Control, como --settings, --setting-sources, --permission-mode, --disallowed-tools o --mcp-config. Un flag colocado antes del verbo nunca llega a esas sesiones. En su lugar, Claude Code se niega a iniciar y nombra el flag:
Claude Code no rechaza los flags globales que es inofensivo descartar, como --verbose, --model, o un --session-id o --plugin-dir inyectado por un wrapper: los ignora y Remote Control se inicia. Claude Code también se niega a iniciar con un flag global que aún no reconoce como inofensivo, así que un flag agregado en una versión más reciente puede aparecer en este mensaje hasta que una versión posterior lo marque como inofensivo. Qué hacer:
  • Quita el flag de antes del verbo y pasa las opciones propias de Remote Control después de él; claude remote-control --help las enumera
  • Cuando el flag rechazado sea --permission-mode, ejecuta claude remote-control --permission-mode <mode> para establecer el modo de permisos de las sesiones que inicia Remote Control
Antes de v2.1.248, claude remote-control no aceptaba sus propios flags cuando un flag global iba primero, y el comando fallaba con un error unknown option.

--sandbox or --no-sandbox is not supported by claude remote-control

Este error significa que el comando que inicia tu servidor de Remote Control pasa --sandbox o --no-sandbox después de remote-control, y claude remote-control no acepta ninguno de los dos flags. El servidor termina con el código 1 en lugar de iniciarse:
Qué hacer:
  • Quita el flag del comando, incluso en un script o una definición de servicio que inicie el servidor por ti, y luego vuelve a ejecutarlo
  • Para ejecutar en el sandbox las sesiones que inicia el servidor, activa el sandboxing definiendo sandbox.enabled como true en un archivo de configuración
Ambos flags se eliminaron de claude remote-control en v2.1.300, así que un comando escrito para una versión anterior todavía puede incluir uno.

claude import todavía no está disponible en esta compilación

Ejecutaste claude import y Claude Code encontró el flujo de importación desactivado, así que el comando termina con código 1 en lugar de iniciar la importación. Antes de v2.1.222, una compilación con el flujo de importación desactivado trataba import como un prompt e iniciaba una sesión interactiva en lugar de imprimir este mensaje.
Claude Code activa claude import mediante un feature flag que obtiene de Anthropic y almacena en caché en el disco. Este mensaje significa que el valor en caché está desactivado. La causa suele ser una de las siguientes:
  • No has iniciado una sesión desde la instalación, así que Claude Code todavía no ha obtenido el flag. El primer claude import puede imprimir esto aunque la función esté disponible para ti.
  • Usas Claude Code a través de Amazon Bedrock, Agent Platform de Google Cloud, Microsoft Foundry o Claude Platform on AWS, o a través de un gateway de aplicaciones de Claude. Claude Code no obtiene feature flags en estas sesiones, así que claude import sigue sin estar disponible.
  • Estableciste DISABLE_TELEMETRY, DO_NOT_TRACK, DISABLE_GROWTHBOOK o CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC, que desactivan la obtención de feature flags, así que claude import sigue sin estar disponible.
Qué hacer:
  • En una instalación nueva, inicia claude, espera a que se cargue la sesión, sal y vuelve a ejecutar claude import
  • Donde la obtención de feature flags siga desactivada, prepara la configuración tú mismo: agrega servidores MCP con claude mcp add, y crea los archivos CLAUDE.md, los skills y comandos y los subagentes que quieras transferir. El mensaje también nombra ~/.claude/settings.json. De la configuración que transfiere claude import, ese archivo solo contiene el modo de permisos; Claude Code no lee servidores MCP desde él.

No se pudo leer la configuración de Claude Code

Ejecutaste claude import mientras Claude Code no podía analizar ~/.claude.json, el archivo donde almacena tu inicio de sesión y el estado de cada proyecto. El subcomando lee ese archivo para comprobar la disponibilidad, pero no muestra el diálogo de recuperación que muestra la sesión interactiva, así que termina con código 1. Antes de v2.1.222, claude import con un archivo de configuración ilegible iniciaba una sesión interactiva, cuyo diálogo de recuperación se encargaba del archivo.
Qué hacer:
  • Ejecuta claude sin argumentos. Claude Code detecta el archivo no válido y ofrece restablecerlo. Luego vuelve a ejecutar claude import.
  • Para conservar las ediciones manuales que hayas hecho, corrige en su lugar la sintaxis JSON de ~/.claude.json en un editor y luego vuelve a ejecutar claude import

No se pudo importar un servidor desde Claude Desktop

Claude Code no pudo agregar uno de los servidores que seleccionaste en claude mcp add-from-claude-desktop. El comando igualmente importa los demás servidores seleccionados e imprime una línea por cada servidor que no pudo agregar. Antes de v2.1.205, el primer servidor que fallaba detenía la importación.
El texto después del nombre del servidor es el motivo. El más común es la comprobación del nombre: Claude Desktop permite en los nombres de servidor caracteres, como espacios y puntos, que claude mcp restringe a letras, números, guiones y guiones bajos. Otros motivos incluyen una configuración de servidor que no supera la validación y un servidor bloqueado por la política de MCP de tu organización. Qué hacer:
  • Cambia el nombre del servidor en claude_desktop_config.json para que use solo letras, números, guiones y guiones bajos, y vuelve a ejecutar claude mcp add-from-claude-desktop
  • Agrega ese servidor directamente con claude mcp add o claude mcp add-json con un nombre válido. Consulta Importar servidores MCP desde Claude Desktop.

No se puede agregar el servidor MCP al alcance managed

Ejecutaste claude mcp add o claude mcp add-json con --scope managed. Ese alcance contiene los servidores que tu organización proporciona mediante el ajuste administrado managedMcpServers. Claude Code los lee solo desde la configuración administrada, así que el comando no puede escribir un servidor en ese alcance.
Qué hacer:
  • Agrega el servidor a un alcance en el que puedas escribir: local, user o project. Sin --scope, el comando usa local. Consulta Alcances de instalación de MCP
  • Para proporcionar el servidor a todos los usuarios de tu organización, agrégalo a managedMcpServers en la configuración administrada que despliegas

No se puede agregar el servidor MCP cuando la configuración administrada solo permite servidores de plugins

Ejecutaste claude mcp add o claude mcp add-json mientras la configuración administrada de tu organización establece strictPluginOnlyCustomization en true o en una lista que incluye mcp. Con ese ajuste, Claude Code no carga servidores MCP desde ~/.claude.json ni .mcp.json, así que el comando termina con código 1 en lugar de guardar un servidor que nunca se cargaría:
claude mcp add-from-claude-desktop informa cada servidor que seleccionas como no importado, con este mensaje como motivo. /import informa este mensaje para cada servidor MCP que intenta agregar y aun así importa los demás elementos que encontró. Antes de v2.1.284, estos comandos guardaban el servidor e informaban éxito, y el servidor nunca se cargaba. Qué hacer:
  • Instala un plugin que proporcione el servidor
  • Pide a tu administrador que distribuya el servidor en un plugin, o que lo proporcione mediante managedMcpServers si es un servidor remoto HTTP o SSE

No se puede leer .mcp.json

Un comando que lee el .mcp.json del proyecto, como claude mcp add o claude mcp add-json con --scope project, o claude mcp remove, encontró que el archivo de tu directorio actual no es un archivo regular o pesa más de 2 MiB, así que termina con este error en lugar de leer el archivo.
Antes de v2.1.257, un FIFO en .mcp.json dejaba el comando esperando indefinidamente sin ninguna salida, y un enlace simbólico a un archivo de dispositivo como /dev/zero hacía crecer la memoria hasta que se terminaba el proceso. Qué hacer:
  • Comprueba qué hay en .mcp.json en tu directorio actual. Reemplázalo por un archivo JSON normal en el formato de alcance de proyecto, o elimínalo, y luego vuelve a ejecutar el comando.

El servidor MCP no se guardó ni se eliminó

Ejecutaste claude mcp add, claude mcp add-json o claude mcp remove para un servidor en el alcance user o local. Ambos alcances se almacenan en ~/.claude.json, y el cambio no está en ese archivo cuando Claude Code lo vuelve a leer después de escribirlo. El comando termina con este error en lugar de su línea de éxito.
Después de una eliminación, el mensaje dice was not removed from y termina con then remove the server again. Para un servidor de alcance local, la ruta va seguida del directorio del proyecto al que pertenece la entrada, como (local scope for /path/to/project). Antes de v2.1.283, claude mcp add, claude mcp add-json y claude mcp remove informaban éxito incluso cuando el cambio no llegaba al archivo. Qué hacer:
  • Haz que el archivo que nombra el mensaje se pueda escribir, o ejecuta el comando fuera del sandbox, y luego vuelve a ejecutar el mismo comando de agregar o eliminar.

Es posible que el servidor MCP no se haya guardado o eliminado

Ejecutaste claude mcp add, claude mcp add-json o claude mcp remove para un servidor en el alcance user o local, y Claude Code no pudo volver a leer ~/.claude.json para confirmar el cambio. Puede que el cambio esté en el disco o puede que no. El texto entre paréntesis es el error de esa lectura.
Después de una eliminación, el mensaje dice may not have been removed y termina con then remove the server again if it is still listed. Antes de v2.1.283, los comandos informaban éxito incluso cuando no se podía confirmar el cambio. Qué hacer:
  • Ejecuta claude mcp get <name> para comprobar si el cambio está en el disco. Para un servidor de alcance local, ejecútalo desde el directorio del proyecto al que pertenece el servidor, ya que el alcance local es por proyecto.
  • Si el servidor falta después de agregarlo, o sigue en la lista después de eliminarlo, vuelve a ejecutar el mismo comando de agregar o eliminar.

El servidor está alojado por Anthropic y no admite OAuth local

Iniciaste un inicio de sesión para un servidor MCP cuya URL apunta a un host de conector alojado por Anthropic que autentica mediante un proveedor de identidad de terceros. Estos hosts incluyen microsoft365.mcp.claude.com, gmail.mcp.claude.com y gcal.mcp.claude.com. Claude Code se niega a iniciar su flujo de OAuth local para estos hosts tanto desde el panel /mcp como desde claude mcp login, porque su inicio de sesión solo funciona a través de claude.ai.
Qué hacer:
  • Elimina tu entrada con claude mcp remove <name>, para que no pueda ocultar el conector de claude.ai en la misma URL
  • Después de eliminarla, conecta el servicio en claude.ai/customize/connectors con la sesión iniciada en la cuenta que usas en Claude Code. Una vez conectado, el conector aparece automáticamente en Claude Code si tu método de autenticación activo es un inicio de sesión con suscripción de claude.ai

El servidor rechazó el encabezado Authorization generado por el headersHelper configurado

Un servidor MCP cuyo headersHelper proporciona el encabezado Authorization respondió a la conexión con HTTP 401 o 403, así que Claude Code informa que la conexión falló. Como el helper proporciona el encabezado Authorization, Claude Code no recurre a OAuth para el servidor:
Claude Code vuelve a ejecutar el helper en cada intento de conexión, así que un reintento después de un rechazo transitorio, como una condición de carrera en la rotación de tokens, puede tener éxito con una credencial nueva. Qué hacer: Antes de v2.1.248, Claude Code ejecutaba el descubrimiento de OAuth para un servidor cuyo helper proporcionaba el encabezado Authorization. Ese descubrimiento podía fallar con Incompatible auth server: does not support dynamic client registration en lugar de informar la credencial rechazada.

No se encontró la herramienta de solicitud de permisos de MCP

La herramienta que pasaste a --permission-prompt-tool no estaba entre las herramientas MCP conectadas cuando la ejecución necesitó por primera vez una decisión de permisos, ya sea porque su servidor nunca se conectó o porque ningún servidor conectado expone una herramienta con ese nombre. Claude Code igualmente envía tu prompt: la ejecución no interactiva termina con este error, y código de salida 1, en la primera llamada a herramienta, así que no produce ninguna respuesta aunque la solicitud se haya realizado. Antes del primer prompt, Claude Code espera hasta el tiempo de espera de conexión por servidor de 30 segundos establecido por MCP_TIMEOUT a que ese servidor se conecte. Antes de v2.1.206, el inicio no esperaba a que el servidor terminara de conectarse, así que un servidor sano pero lento en iniciar también producía este error.
La lista después de Available MCP tools: nombra las herramientas MCP que estaban conectadas. Qué hacer:
  • Comprueba que el servidor se inicie y permanezca conectado: ejecuta claude mcp list en el mismo directorio y confirma que el servidor aparece como conectado
  • Confirma que el nombre de la herramienta coincide con el nombre mcp__<server>__<tool> que expone el servidor
  • Si el servidor necesita más de 30 segundos para iniciarse, aumenta MCP_TIMEOUT

El puerto de callback de OAuth ya está en uso

Cuando inicias sesión en un servidor MCP remoto con OAuth, Claude Code inicia un listener local para recibir el callback del inicio de sesión. Si otro proceso ocupa el puerto que necesita ese listener, el inicio de sesión falla con este mensaje. Esto ocurre sobre todo con un puerto de callback fijo establecido mediante la variable MCP_OAUTH_CALLBACK_PORT o --callback-port, ya que sin uno Claude Code elige un puerto disponible.
En Windows, el comando sugerido es netstat -ano | findstr :<port> en su lugar. Qué hacer:
  • Ejecuta el comando del mensaje para encontrar el proceso que ocupa el puerto, y detenlo o espera a que termine
  • Si otro programa necesita ese puerto de forma permanente, registra un URI de redirección diferente en el servidor y establece su puerto con MCP_OAUTH_CALLBACK_PORT o --callback-port, el que uses
  • Luego vuelve a iniciar el inicio de sesión, por ejemplo seleccionando el servidor en /mcp

No hay puertos disponibles para la redirección de OAuth

Cuando inicias sesión en un servidor MCP remoto con OAuth, Claude Code inicia un listener local para recibir el callback del inicio de sesión. El inicio de sesión falla con este mensaje cuando Claude Code no puede vincular un puerto local para él. Algo en la máquina le impide escuchar en 127.0.0.1, por ejemplo un software de seguridad o una política de sandbox que deniega los listeners locales.
Antes de v2.1.268, Claude Code no recurría a un puerto asignado por el sistema operativo, así que el mensaje también aparecía cuando solo sus puertos elegidos por sí mismo no se podían vincular. Eso puede ocurrir en hosts Windows donde Hyper-V reserva rangos de puertos que cubren los puertos entre los que elige Claude Code. Qué hacer:
  • Comprueba si un software de seguridad o una política de sandbox impide que los procesos escuchen en 127.0.0.1, y permite que Claude Code vincule un puerto local
  • Luego vuelve a iniciar el inicio de sesión, por ejemplo seleccionando el servidor en /mcp

/security-review falla sin origin/HEAD

/security-review construye su contexto de revisión generando el diff de tu rama contra origin/HEAD, la ref local que registra qué rama es la predeterminada en tu remoto origin. Cuando esa ref no existe, los comandos de git que recopilan el diff fallan y la revisión se detiene antes de empezar.
El mensaje puede citar git log u otro git diff en su lugar. Git crea origin/HEAD solo cuando el remoto anuncia una rama predeterminada y tu refspec de fetch la cubre, lo cual ocurre con un git clone completo de un remoto con commits. La ref falta en estas configuraciones:
  • Un checkout de una sola rama o de CI, que obtiene un refspec demasiado limitado
  • Un remoto cuyo HEAD del lado del servidor apunta a una rama que nadie ha subido
  • Un repositorio sin remoto origin, o uno del que nunca hiciste fetch
Claude Code muestra el mismo error para cualquier skill que inyecte contexto dinámico, y un comando inyectado que falla aborta la invocación de ese skill. Hay cadenas similares que se activan antes de que el comando llegue a ejecutarse:
  • Shell command permission check failed for pattern "...": la verificación de permisos del comando no lo permitió. Verificaciones de permisos en comandos inyectados explica qué resultados abortan en cada modo de permisos y cómo aprobar previamente un comando con allowed-tools
  • Skill <name> requires bash (`shell: bash` in frontmatter) but Git Bash was not found: el frontmatter del skill exige bash en una máquina que no lo tiene. Instala Git for Windows o cambia el frontmatter a shell: powershell. Consulta Cómo se ejecutan los comandos inyectados
  • No shell command in <name> was run: uno de los comandos ! del archivo contiene un carácter de control sin procesar distinto de tabulación o salto de línea, así que ninguno de ellos se ejecuta. Consulta cómo encontrar y eliminar el carácter
Qué hacer:
  • Crea la ref nombrando la rama predeterminada de tu remoto: git remote set-head origin <default-branch>. Esto funciona siempre que exista la ref de seguimiento local origin/<default-branch>. Si no existe, como en los clones de una sola rama, primero obtén la rama: ejecuta git remote set-branches --add origin <branch>, luego git fetch origin, y después vuelve a ejecutar el comando set-head. Vuelve a ejecutar /security-review.
  • Si prefieres no nombrar la rama, ejecuta git fetch origin y luego git remote set-head origin --auto, que pregunta al remoto cuál es su rama predeterminada. Falla con error: Cannot determine remote HEAD cuando el remoto no anuncia ninguna rama predeterminada, porque está vacío o su HEAD apunta a una rama que nadie ha subido; en ese caso, nombra la rama explícitamente. Falla con error: Not a valid ref cuando tu clon no obtiene esa rama; primero amplía el refspec como se indicó arriba.
  • Si el repositorio no tiene remoto, agrega uno con git remote add origin <url> y haz fetch antes de crear la ref. Si el remoto está vacío, primero sube tu rama con git push -u origin HEAD y nombra esa rama en el comando set-head; origin/HEAD apunta entonces a la rama que acabas de subir, así que /security-review ve un diff vacío hasta que la rama diverja de ella.

No shell command in a skill or command was run

Uno de los comandos de contexto dinámico !`<command>` de un archivo de skill o de comando personalizado contiene un carácter de control sin procesar distinto de tabulación o salto de línea. Claude Code rechaza toda la invocación antes de que se ejecute cualquiera de los comandos del archivo. El mensaje nombra la herramienta de shell que habría ejecutado los comandos, Bash o PowerShell, y termina con el comando rechazado. Cada uno de esos caracteres se reemplaza por � para que puedas ver dónde está:
Qué hacer:
  • Encuentra cada � en el comando citado al final del mensaje. Elimina el carácter que representa del archivo de skill o de comando, o de los argumentos u opciones que se sustituyen en el archivo.

Se debe proporcionar una entrada al usar --print

claude sin argumentos necesita que stdout sea una terminal para iniciar la interfaz interactiva. Cuando stdout está redirigido, o la consola no es una terminal real, como PowerShell ISE y algunos paneles de salida de IDE, claude se ejecuta de forma no interactiva en su lugar. Ese es el mismo modo que claude -p, que requiere un prompt, así que el mensaje nombra --print aunque no hayas pasado el flag. Pasar -p/--print sin prompt y sin nada canalizado por stdin produce el mismo error en cualquier lugar.
Qué hacer:
  • Para uso interactivo, ejecuta claude en una terminal real: Windows Terminal o la consola de PowerShell en lugar de ISE, y la terminal integrada de tu IDE en lugar de un panel de salida
  • Para uso puntual, pasa el prompt: claude -p "your question", o canalízalo con echo "your question" | claude -p

Claude Code no puede leer el teclado aquí

Ejecutaste claude sin -p, lo que inicia una sesión interactiva, pero su entrada estándar no es una terminal. Algo la canalizó o la redirigió, o el programa que inició claude proporcionó su propio flujo de entrada. Una sesión interactiva necesita una terminal desde la cual leer tus pulsaciones de teclas, y lo que hace Claude Code sin una depende de tu plataforma:
  • Windows: Claude Code imprime el mensaje en stderr y termina con código 1 en lugar de iniciar la interfaz
  • macOS y Linux: Claude Code lee tus pulsaciones de teclas desde /dev/tty e inicia la sesión, con cualquier texto canalizado como tu primer prompt. Ves el mensaje cuando no se puede abrir /dev/tty, y su primera línea nombra /dev/tty en lugar del texto de Windows.
En Windows, el mensaje dice:
Qué hacer:
  • Para trabajar de forma interactiva, ejecuta claude directamente en una terminal, sin canalizar ni redirigir su entrada
  • Para obtener una respuesta sin la interfaz interactiva, por ejemplo desde un script, agrega -p y proporciona el prompt como argumento o por stdin, como en claude -p "your question" o echo "your question" | claude -p. Lo mismo funciona con --continue y --resume <session-id>.
Antes de v2.1.287, Claude Code iniciaba la interfaz en lugar de imprimir este mensaje, y luego no mostraba nada en pantalla o fallaba con un error que contenía Raw mode is not supported. Si ves Raw mode is not supported durante claude install, consulta Raw mode is not supported durante la instalación.

La entrada solo contenía espacios en blanco

En modo no interactivo, Claude Code rechaza un prompt compuesto solo por espacios, tabulaciones o saltos de línea en lugar de enviarlo, porque la API rechaza los mensajes sin texto visible. El mensaje que ves depende de dónde vino el prompt en blanco:
  • Argumento de prompt o stdin canalizado para claude -p: claude termina con Error: Input contained only whitespace. Provide a prompt with text through stdin or as a prompt argument when using --print
  • Mensaje enviado a una sesión en ejecución de --input-format stream-json o del Agent SDK: Claude Code termina el turno sin llamar al modelo y la sesión sigue siendo utilizable. El rechazo llega como un mensaje informativo y como el texto del resultado del turno: Blank prompt — the message was only whitespace, so nothing was sent to the model.
Antes de v2.1.229, Claude Code enviaba el mensaje compuesto solo por espacios en blanco a la API, que rechazaba la solicitud con un error 400. Qué hacer:
  • Incluye texto visible en el prompt. Si un script construye el prompt a partir de una variable o un archivo, comprueba que el origen no esté vacío antes de llamar a Claude Code.

La entrada stream-json contenía más de 256M caracteres sin salto de línea

Tu programa envió más de 268,435,456 caracteres por stdin sin un salto de línea a una ejecución de claude -p --input-format stream-json, así que Claude Code imprime este error en stderr y termina con código 1 en lugar de almacenar más entrada en búfer. El mensaje expresa ese límite como 256M. Antes de v2.1.257, Claude Code almacenaba esa entrada en búfer sin límite, haciendo crecer la memoria hasta que el proceso fallaba o se terminaba.
Una entrada tan larga sin salto de línea suele significar que el productor no es en absoluto un productor de stream-json, como un archivo binario o una salida de log en texto plano canalizada por accidente. Un solo mensaje que supere el límite no pasa la misma comprobación. Qué hacer:
  • Comprueba qué se canaliza a stdin. Con --input-format stream-json, cada mensaje debe ser una línea JSON terminada en salto de línea
  • Para enviar texto plano en su lugar, quita --input-format stream-json; claude -p lee de forma predeterminada un prompt de texto plano desde stdin

Comando desconocido

En una sesión interactiva de terminal, enviaste un nombre con / que no coincide con ningún comando de esta sesión, así que Claude Code informa el nombre en lugar de ejecutar algo:
Claude Code sugiere el nombre de comando o alias más cercano que el menú muestra en esta sesión. Cuando no hay nada cercano, el mensaje termina después del nombre. La causa suele ser una de las siguientes: Claude Code responde así a un nombre con / sin coincidencia solo en una sesión interactiva de terminal. En cualquier otra sesión, envía el prompt a Claude como un mensaje normal, con una nota de que el comando no se ejecutó y una lista de los comandos que Claude puede ejecutar en la sesión. Esas sesiones incluyen: Para un comando integrado que no puede ejecutarse en una de esas sesiones, Claude Code sigue respondiendo que el comando no está disponible en lugar de enviarlo a Claude. Antes de v2.1.274, solo las sesiones en la nube y las rutinas enviaban a Claude un nombre sin coincidencia. Antes de v2.1.273, también respondían Unknown command. Claude Code no trata como comando todo prompt que empiece con /. Envía el prompt a Claude como un mensaje normal cuando la primera palabra después de / empieza con un signo de puntuación, como el /-- que abre un comentario de documentación de Lean, o es una ruta como /var/log/syslog. Antes de v2.1.236, si presionabas Enter mientras el menú de comandos mostraba una coincidencia cercana al nombre que escribiste, Claude Code ejecutaba esa coincidencia, así que un error tipográfico como /hepl ejecutaba /help en lugar de producir este mensaje. Qué hacer:
  • Ejecuta el nombre sugerido, o escribe / seguido de parte del nombre para ver qué está disponible en esta sesión
  • Si Claude Code informa como desconocido un comando documentado, revisa su fila en la referencia de comandos para ver el requisito que indica

El diff es demasiado grande para ultrareview

El diff entre tu rama y la rama base, incluidos los cambios sin commit y los preparados, supera los límites de tamaño de un ultrareview, así que /code-review ultra y el subcomando claude ultrareview rechazan la revisión antes de que se inicie la sesión en la nube. Una revisión rechazada no consume una ejecución gratuita ni factura créditos de uso. El mensaje nombra los límites vigentes, el tamaño de tu diff y los archivos que aportan más líneas modificadas. Antes de v2.1.216, el mensaje solo mostraba las estadísticas sin procesar del diff.
Revisar un pull request aplica los mismos límites; esa forma del mensaje empieza con PR #<N> is too large for ultrareview y nombra la cantidad de archivos y líneas del PR. Qué hacer:
  • Pasa una rama base más cercana a tu trabajo, como /code-review ultra develop, para que la revisión cubra solo el diff contra esa rama
  • Divide el cambio en ramas más pequeñas y revisa cada una. Los archivos que nombra el mensaje aportan más líneas modificadas, así que empieza por mover esos a su propia rama.

No se pudo encontrar el merge-base con la rama base

/code-review ultra y el subcomando claude ultrareview revisan el diff entre tu rama y una rama base, lo que necesita un commit que ambas compartan. Cuando git merge-base no encuentra ninguno, Claude Code rechaza la revisión antes de que se inicie la sesión en la nube. En un clon que Claude Code puede verificar como completo, con al menos una rama, recurre a revisar todos los archivos rastreados en lugar de rechazarla. Ves este rechazo cuando la rama base no se encuentra en absoluto, cuando Claude Code no puede verificar que tu clon esté completo, o en el raro repositorio donde el diff de todo el árbol no es posible, como con el formato de objetos SHA-256.
La sugerencia después de la primera oración depende de lo que observó Claude Code:
  • No pasaste una rama base: Claude Code comparó contra la rama predeterminada del repositorio y sugiere pasar tu base explícitamente, como en el ejemplo anterior
  • Pasaste una rama base que ya estaba en tu clon: la sugerencia dice Make sure <branch> exists locally or on origin (try `git fetch origin <branch>`)
  • Pasaste una rama base que no estaba en tu clon: Claude Code la obtuvo de origin antes de comparar. La sugerencia dice <branch> was fetched from origin but shares no history with HEAD. If another branch is your real base, pass it explicitly (`/code-review ultra <branch>`); cuando Claude Code no puede determinar si tu clon es superficial, sugiere git fetch --unshallow origin en su lugar. Antes de v2.1.221, la sugerencia proponía git fetch --unshallow origin para cada rama base obtenida, y en un clon completo ese comando falla con fatal: --unshallow on a complete repository does not make sense.
Qué hacer:
  • Si otra rama es tu base real, pásala explícitamente: /code-review ultra <branch>
  • Si es posible que tu clon no tenga el historial completo, ejecuta git fetch --unshallow origin y vuelve a ejecutar la revisión

Tu checkout no tiene ramas

Un checkout puede tener commits pero ninguna rama: si ejecutas git init seguido de git fetch <url> y git checkout FETCH_HEAD, obtienes un HEAD desvinculado sin refs. Claude Code empaqueta tu repositorio como un bundle de git para subirlo a un ultrareview, y no puede empaquetar un repositorio que no tiene ramas ni otras refs, así que /code-review ultra y el subcomando claude ultrareview rechazan la revisión antes de que se inicie la sesión en la nube.
Antes de v2.1.221, Claude Code intentaba revisar todos los archivos rastreados de este checkout, y la subida fallaba. Qué hacer:
  • Crea una rama en tu commit actual con git checkout -b <name> y luego vuelve a ejecutar la revisión

No hay ninguna cuenta de GitHub conectada a tu cuenta de Claude

Ejecutaste /code-review ultra <PR#> o claude ultrareview <PR#>, y antes de crear la sesión en la nube Claude Code pregunta al servidor si la cuenta de GitHub conectada a tu cuenta de Claude puede acceder al repositorio del PR. No hay ninguna cuenta conectada, o la conexión expiró, así que la clonación en la nube fallaría y Claude Code rechaza el inicio. Claude Code no consume una ejecución gratuita ni factura créditos de uso por un inicio rechazado.
Cuando /web-setup no está disponible en tu sesión, el mensaje solo nombra el enlace de claude.ai. Qué hacer:
  • Ejecuta /web-setup para conectar el inicio de sesión de tu GitHub CLI a tu cuenta de Claude, o conecta una cuenta en claude.ai/connect-github
  • Vuelve a ejecutar la revisión un minuto después de conectarte
Antes de v2.1.248, Claude Code no comprobaba esto antes del inicio.

Tu cuenta de GitHub conectada no puede ver el repositorio

Ejecutaste /code-review ultra <PR#> o claude ultrareview <PR#>, y la cuenta de GitHub conectada a tu cuenta de Claude no puede leer el repositorio del PR, así que la clonación en la nube fallaría y Claude Code rechaza el inicio. Claude Code no consume una ejecución gratuita ni factura créditos de uso por un inicio rechazado.
Cuando /web-setup no está disponible en tu sesión, el mensaje solo nombra la instalación de la aplicación. Qué hacer:
  • Si tu CLI gh local puede leer el repositorio, ejecuta /web-setup para conectar ese inicio de sesión a tu cuenta de Claude
  • Vuelve a ejecutar la revisión después del cambio
Antes de v2.1.248, Claude Code no comprobaba esto antes del inicio.

La comprobación previa de la GitHub App falló de forma transitoria

Iniciaste una sesión en la nube desde un repositorio local, y dos pasos fallaron a la vez. Claude Code no pudo construir ni subir el bundle de tu repositorio. Antes de la subida, comprobó si el servicio en la nube puede clonar el repositorio desde GitHub, y en lugar de una respuesta definitiva, esa comprobación terminó en un error que un reintento podría resolver, como un error de red, un tiempo de espera agotado o un error temporal del servidor. El mensaje completo empieza con lo que detuvo el bundle, por ejemplo Could not upload repo bundle (<error>), y termina con la oración de la comprobación previa:
Qué hacer:
  • Vuelve a ejecutar el comando después de un momento. Cuando la comprobación de GitHub tiene éxito, Claude Code puede iniciar la sesión desde un clon de GitHub, así que la subida fallida ya no bloquea el inicio
  • Si los reintentos siguen fallando, el inicio del mensaje nombra lo que detuvo la subida. Cuando esa causa es algo que puedes corregir, corrígelo para que la sesión pueda iniciarse desde tu repositorio local
Antes de v2.1.251, Claude Code terminaba el mensaje con Please set up GitHub on https://claude.ai/code incluso cuando la comprobación de GitHub fallaba solo de forma transitoria, y un consejo de configuración no puede resolver un fallo transitorio.

La subida del repositorio no puede seguir un ajuste de git

Iniciaste una sesión en la nube que sube tu repositorio local, o un ultrareview de una rama, y la subida no puede seguir uno de los ajustes de git que deciden qué reglas de atributos se aplican a tus archivos. Si la subida continuara y omitiera una regla, un archivo que git transforma antes de almacenarlo, como uno que un filtro clean cifra, podría llegar a la nube tal como está en el disco. En su lugar, Claude Code rechaza la subida y no se sube nada:
El mensaje nombra el ajuste y dónde está establecido, y termina con la solución para el caso en el que te encuentras. El mismo rechazo aparece para core.attributesFile y attr.tree, cada uno con su propia solución. El mensaje puede nombrar un archivo de configuración que tu configuración de git incorpora mediante una directiva include o includeIf, incluso cuando la condición de esa directiva no se aplica a este repositorio. Qué hacer:
  • Aplica la solución de la última oración del mensaje

GitHub no está conectado a tu cuenta de Claude

Iniciaste una sesión en la nube desde tu repositorio local, por ejemplo con /autofix-pr. No hay ninguna cuenta de GitHub conectada a tu cuenta de Claude, o la conexión expiró, así que Claude Code rechaza el inicio:
Cuando creas una rutina con /schedule, el mismo mensaje aparece como una nota de configuración que nombra el repositorio; la nota no impide crear la rutina. Qué hacer: Antes de v2.1.268, Claude Code informaba esto como un fallo temporal de la comprobación de la Claude GitHub App y sugería reintentar o instalar la aplicación; ninguna de las dos opciones conecta una cuenta de GitHub.

Una política de la organización de GitHub está bloqueando a Claude

Ejecutaste un comando en el prompt de Claude Code que inicia una sesión en la nube, como /autofix-pr. Antes de crear la sesión, Claude Code verifica el acceso de Claude al repositorio en GitHub, y GitHub lo rechazó porque tu organización de GitHub tiene una política que bloquea a Claude. Claude Code se detiene ahí y muestra un mensaje que nombra la política. Cuando lo que bloquea el acceso es una lista de IP permitidas, el mensaje dice:
Cuando lo que lo bloquea es el inicio de sesión único, el mensaje dice:
Cuando lo que lo bloquea es una política de acceso condicional de Microsoft Entra ID, el mensaje dice:
Qué hacer:
  • Lista de IP permitidas: pide a un propietario de tu organización o empresa de GitHub que permita las direcciones IP de salida de Anthropic. Consulta Listas de permitidos y firewalls de GitHub para conocer las direcciones y la configuración de GitHub que debes cambiar.
  • Inicio de sesión único: desconecta GitHub en claude.ai/customize/connectors y luego vuelve a conectarlo. Cuando GitHub lo solicite, haz clic en Authorize junto a tu organización para que la nueva conexión quede autorizada para su inicio de sesión único.
  • Política de acceso condicional: pide a tu administrador de GitHub Enterprise o de Microsoft Entra ID que permita a Claude en esa política
  • Después del cambio, vuelve a ejecutar el comando

Se necesita autorización de inicio de sesión único

Ejecutaste /install-github-app y elegiste un repositorio cuya organización exige inicio de sesión único SAML. Antes de la configuración, Claude Code verifica tu acceso al repositorio con la CLI de GitHub, y GitHub rechazó esa verificación porque tu token de gh todavía no está autorizado para la organización. El asistente muestra la advertencia con los pasos para autorizarlo:
Qué hacer:
  • Vuelve a autorizar tu inicio de sesión en la CLI de GitHub con los alcances repo y workflow ejecutando gh auth refresh -h github.com -s repo,workflow, y autoriza la organización cuando GitHub te solicite el inicio de sesión único
  • Si te autenticas con un token de acceso personal en GH_TOKEN, abre github.com/settings/tokens, selecciona Configure SSO en el token y autoriza la organización
  • Vuelve a ejecutar /install-github-app
Antes de v2.1.273, Claude Code mostraba en su lugar la advertencia Admin permissions required para esta condición.

No se pudo reanudar la conversación

Claude Code no pudo leer ni procesar la transcripción guardada de la sesión que seleccionaste en el selector de claude --resume, así que termina el proceso en lugar de continuar en un estado parcialmente cargado. El mensaje incluye el comando para reintentar:
Claude Code termina con el código 1 después de mostrar el mensaje. En cambio, el selector de /resume dentro de una sesión en ejecución informa Failed to resume conversation en la conversación, y tu sesión actual sigue ejecutándose. Antes de v2.1.216, una reanudación fallida desde el selector de claude --resume se quedaba indefinidamente en el indicador giratorio Resuming conversation… en lugar de mostrar este mensaje. Qué hacer:
  • Ejecuta claude --resume <session-id> con el ID de sesión del mensaje para reintentar
  • En una versión anterior a v2.1.285, si el reintento falla de la misma manera, ejecuta claude update y vuelve a reanudar. Esas versiones hacen fallar la reanudación cuando la transcripción guardada contiene una entrada que no pueden leer.
  • Si el reintento vuelve a fallar, ejecuta claude para iniciar una nueva sesión

No se encontró ninguna conversación con el ID de sesión

Pasaste un ID de sesión a claude --resume <session-id> y ninguna transcripción guardada coincidió con él:
Claude Code sale con el código 1 después de mostrar el mensaje. Claude Code busca el ID primero en el proyecto actual y luego en todos los demás proyectos de esta máquina. Antes de v2.1.223, la búsqueda se detenía en el directorio del proyecto actual y sus worktrees de git, así que reanuda desde el directorio en el que la sesión trabajó por última vez. Causas comunes:
  • ID mal escrito: en una ejecución no interactiva, el ID es el campo session_id de la salida de --output-format json
  • Transcripción eliminada: Claude Code elimina las transcripciones después del período de retención, de 30 días por defecto, según las reglas de limpieza por retención
  • Máquina diferente: Claude Code almacena las transcripciones localmente, así que reanuda la sesión en la máquina donde se ejecutó
  • Copias duplicadas: si copiaste un directorio de proyecto en ~/.claude/projects de modo que dos transcripciones tienen el mismo ID, Claude Code muestra este mensaje en lugar de reanudar una de las copias arbitrariamente
Qué hacer:
  • Para una sesión interactiva, abre el selector de sesiones con claude --resume y presiona Ctrl+A para ampliarlo a todos los proyectos de esta máquina; luego selecciona la sesión
  • Las sesiones creadas con claude -p o con el Agent SDK no aparecen en el selector, así que vuelve a comprobar el ID con el session_id que imprimió tu ejecución original

Windows informó un error (EBADF) cuando Claude Code leyó el archivo de transcripción de esta sesión

Reanudaste una sesión en Windows, su archivo de transcripción guardado se abrió normalmente y luego la lectura falló con el error del sistema EBADF. El error del sistema no indica por qué falló la lectura, así que el mensaje sugiere causas probables y qué intentar:
El mensaje aparece después de la propia línea de error del comando, como Failed to resume session <session-id>. Un comando claude --resume o claude -p termina con el código 1 después de mostrarlo. Después de /resume dentro de una sesión, tu sesión actual sigue ejecutándose. Qué hacer:
  • Excluye la carpeta que contiene tus transcripciones de sesión del software que analiza o intercepta lecturas de archivos, como herramientas de seguridad, cifrado o administración de endpoints. Las transcripciones se encuentran en %USERPROFILE%\.claude\projects por defecto, o en el directorio que indique CLAUDE_CONFIG_DIR
  • Si no puedes agregar una exclusión, agrega Claude Code a las aplicaciones permitidas de ese software
  • Vuelve a reanudar la sesión
Antes de v2.1.282, el error llegaba sin explicación: claude --resume <session-id> terminaba en Failed to resume session <session-id>, y una ejecución con -p imprimía solo el texto del error del sistema, como Failed to resume session: EBADF: bad file descriptor, read.

No se puede cambiar de renderizador en esta sesión

Cuando cambias de renderizador, Claude Code reinicia su proceso. Ejecutaste /tui en una sesión que Claude Code se niega a reiniciar, así que no cambia y no guarda nada. El mensaje que ves te indica la causa:
  • Cannot switch renderers while work is running in the background: tienes trabajo en segundo plano en ejecución que un reinicio abandonaría, como un shell en segundo plano o un subagente. Espera a que el trabajo termine o detenlo con /tasks, y luego vuelve a ejecutar /tui fullscreen o /tui default
  • Cannot switch renderers in this session: la sesión tiene restricciones que Claude Code no puede pasar al proceso reiniciado. Antes de v2.1.234, Claude Code reiniciaba de todos modos y la sesión relanzada se ejecutaba sin ellas
En el mensaje de restricciones, la parte entre paréntesis nombra las restricciones que encontró Claude Code:
Cada motivo que el mensaje puede mostrar entre paréntesis:
  • launch flags: a custom system prompt, a tool allowlist, or restricted settings: iniciaste la sesión con un flag que Claude Code no vuelve a pasar al proceso reiniciado. Estos flags incluyen --system-prompt, --system-prompt-file, --append-system-prompt-file, una lista de herramientas permitidas con --tools, --setting-sources y --permission-prompt-tool
  • permission rules set for this session only: una actualización de permisos de un hook o de un llamador del SDK agregó reglas de denegación o de consulta con el destino session. Las reglas de permiso limitadas a la sesión no provocan el rechazo. Un reinicio las descarta, y Claude Code vuelve a pedir permiso en su lugar
  • ask-before-running rules with no command-line form: una actualización de permisos de un hook o de un llamador del SDK agregó reglas de consulta junto con las reglas que Claude Code vuelve a pasar como --allowed-tools y --disallowed-tools. No existe ningún flag para las reglas de consulta
  • permission rules a command line cannot carry intact y added directories a command line cannot carry intact: una actualización de permisos agregó una regla o una ruta de directorio a mitad de la sesión. La línea de comandos del proceso reiniciado no puede transmitir su texto como el mismo valor
Qué hacer:
  • En una sesión iniciada sin esas restricciones, ejecuta /tui fullscreen, o /tui default para volver al anterior. Claude Code guarda allí el ajuste tui

Claude Code couldn’t restart

Cuando este mensaje dice que tu conversación está guardada, la conversación está en el disco y puedes retomarla donde se detuvo. Claude Code se estaba reiniciando a sí mismo, por ejemplo para activar o desactivar el renderizado de pantalla completa después de que ejecutaste /tui, y no pudo iniciar el nuevo proceso, así que salió con el estado 1:
Cuando el reinicio no tenía ninguna conversación que volver a abrir, por ejemplo porque /tui fue tu primera entrada en una sesión nueva, el mensaje dice Claude Code couldn't restart. Start Claude Code again. Qué hacer:
  • Vuelve a ejecutar claude en tu shell. Si el mensaje decía que tu conversación está guardada, ejecuta /resume en la nueva sesión y selecciona la conversación. Si no está en la lista, amplía el selector de sesiones
  • Si los reinicios siguen fallando, inicia Claude Code desde tu shell con claude --debug-file claude-debug.log. Si falla un reinicio desde esa sesión, claude-debug.log, en el directorio desde el que la iniciaste, registra una línea Failed to relaunch: con el error del sistema operativo. Incluye esa línea cuando informes el problema

No se pudo abrir Claude Desktop

Ejecutaste /desktop o su alias /app en una sesión, o claude --desktop en tu shell, y falló el comando del sistema que Claude Code usa para abrir Claude Desktop. Después de /desktop, la sesión permanece en la terminal; claude --desktop imprime el mensaje sin el prefijo Error: y termina con el estado 1. El texto entre paréntesis nombra el comando que falló, con su estado de salida y la primera línea de su salida de error cuando los produjo. En macOS ese comando es open, como en este ejemplo; en Windows es rundll32:
Qué hacer:
  • Abre Claude Desktop tú mismo y luego vuelve a ejecutar /desktop o claude --desktop
  • Para leer la salida de error completa del comando que falló, activa el registro de depuración con /debug y vuelve a ejecutar /desktop, o ejecuta claude --desktop --debug-file <path>, y luego revisa el registro de depuración
Antes de v2.1.285, el mensaje terminaba con Open Claude Desktop and run /desktop again. Antes de v2.1.275, era Failed to open Claude Desktop. Please try opening it manually. y no indicaba qué había fallado.

/terminal-setup dejó sin cambios tu keymap de Zed

Ejecutaste /terminal-setup en Zed, y Claude Code no pudo completar la actualización de tu keymap.json de Zed, así que dejó el archivo como estaba. Cada mensaje nombra la ruta de tu keymap y termina con el bloque de atajo de teclado que debes agregar tú mismo:
La primera línea del mensaje nombra la causa:
  • Couldn't read your Zed keymap, so it was left unchanged.: Claude Code no pudo leer el archivo, por ejemplo debido a los permisos del archivo
  • Your Zed keymap isn't a readable list of keybindings, so it was left unchanged.: el archivo se leyó correctamente, pero no se interpreta como un array de bloques de atajos de teclado, incluso permitiendo comentarios // y comas finales
  • Couldn't back up your Zed keymap; not modifying it.: Claude Code no pudo copiar el archivo a una copia de seguridad .bak junto a él, así que no cambió nada
  • Couldn't update your Zed keymap, so it was left unchanged.: el resultado combinado no se verificó como un keymap válido que contenga el atajo, así que Claude Code lo descartó en lugar de escribirlo. Un bloque de atajo de teclado con una clave duplicada puede causar esto
Qué hacer:
  • Copia el bloque del mensaje en el array de nivel superior de tu keymap.json, en la ruta que indica el mensaje
  • Para isn't a readable list of keybindings, corrige el error de sintaxis, o haz que el valor de nivel superior del archivo sea un array, y luego vuelve a ejecutar /terminal-setup
Antes de v2.1.247, /terminal-setup no podía interpretar un keymap de Zed que usara comentarios // o comas finales, y reemplazaba todo el archivo solo con su propio atajo mientras informaba que el atajo estaba instalado. Para restaurar un keymap que una versión anterior reemplazó, usa el archivo de copia de seguridad .bak descrito en Ingresar prompts de varias líneas.

Los informes de uso de skills no están disponibles en esta conexión

Ejecutaste /skill-doctor a través de Remote Control, desde tu teléfono o navegador. Claude Code no envía el informe de uso de skills a través de Remote Control y responde con este mensaje en su lugar:
Qué hacer:
  • Ejecuta /skill-doctor en la terminal de la máquina donde se ejecuta la sesión, o ejecuta allí claude -p "/skill-doctor"

Los estilos de salida personalizados no se pueden seleccionar a través de Remote Control

Ejecutaste /output-style desde la aplicación móvil o la web a través de Remote Control, o el comando llegó en un mensaje retransmitido a la sesión. Como ese turno puede no provenir del propietario de la cuenta, Claude Code solo lista y selecciona estilos integrados en él, y agrega este aviso cada vez que el comando lista los estilos o no reconoce el nombre que proporcionaste. El nombre de un estilo personalizado recibe la misma respuesta que un nombre que no existe:
Qué hacer:
  • Elige un estilo integrado, por ejemplo /output-style concise
  • Para usar un estilo personalizado, establece outputStyle en el archivo .claude/settings.local.json del proyecto, o ejecuta /output-style <style> en la propia terminal de la sesión si tiene una

Los estilos de salida se guardan en la configuración local, que esta sesión no carga

Intentaste cambiar de estilo de salida con /output-style <style> o /config outputStyle=<style> en una sesión cuyas fuentes de configuración excluyen local. Algunos ejemplos son una sesión del Agent SDK cuyo settingSources omite "local" y una sesión de la CLI iniciada con un valor de --setting-sources que omite local. Ambos comandos guardan el estilo en .claude/settings.local.json, un archivo que esa sesión nunca vuelve a leer, así que Claude Code se niega en lugar de escribir un ajuste que no tendría efecto:
Qué hacer:
  • Agrega local a las fuentes de configuración de la sesión y vuelve a cambiar de estilo
  • Establece la clave outputStyle en un archivo de configuración que la sesión sí cargue, como .claude/settings.json en el proyecto o ~/.claude/settings.json. En el SDK de TypeScript, establece outputStyle dentro del objeto settings en línea; consulta Activar un estilo de salida

/recap solo se ejecuta cuando lo pides tú mismo

La solicitud de /recap no provino de tu propia entrada. Llegó en un mensaje retransmitido a la sesión desde un hilo de Slack, Teams o de un proyecto, o en un prompt que envió una rutina u otro programa. Un mensaje retransmitido recibe el aviso incluso cuando lo escribiste tú mismo. Claude Code no puede saber si un mensaje retransmitido o automatizado proviene de la persona cuya cuenta ejecuta la sesión, así que responde con este aviso en lugar de un resumen:
Un /recap que pasas a claude -p, o que tu propia aplicación del Agent SDK envía a una sesión que inició, cuenta como tu propia entrada. Qué hacer:

Errores de plugins

Estos errores provienen de la configuración de plugins y marketplace. Para problemas de plugins que no producen uno de los mensajes en esta página, como una URL de marketplace que no carga o un plugin que se instala pero no aparece, consulte Solución de problemas de plugins.

plugin eval is currently in early access

Ejecutó claude plugin eval o claude plugin eval init y salió con código 1 con uno de estos mensajes antes de hacer nada:
El primer mensaje significa que su compilación es anterior a v2.1.269, la primera versión donde el comando está disponible en general. El segundo significa que Anthropic ha desactivado el comando del lado del servidor; nada en su máquina lo vuelve a activar. Qué hacer:
  • Ejecute claude --version, luego claude update, y ejecute el comando nuevamente en una sesión nueva. Consulte los requisitos para plugin evals
  • Si ve el segundo mensaje en una compilación actual, intente nuevamente más tarde después de otro claude update

Marketplace is registered from an untrusted source

El marketplace está registrado bajo un nombre que está reservado para marketplaces oficiales de Anthropic, pero su fuente registrada no es un repositorio de GitHub de anthropics. Claude Code vuelve a verificar los nombres reservados cada vez que carga o actualiza un marketplace, por lo que el marketplace y los plugins instalados desde él dejan de cargarse. Antes de v2.1.205, una entrada registrada antes de que su nombre se reservara seguía cargándose.
Para un marketplace cuya fuente no es un repositorio de GitHub o una URL de Git, como un directorio local, la oración del medio dice can only be used with GitHub sources from the 'anthropics' organization en su lugar. claude plugin marketplace add ejecuta la misma verificación y rechaza un nombre reservado con Failed to add marketplace: seguido de la misma oración de nombre reservado. Qué hacer:
  • Si el marketplace ya está registrado, ejecute claude plugin marketplace remove <name>, luego agréguelo nuevamente desde el repositorio oficial github.com/anthropics
  • Si publica un marketplace de terceros que utilizó el nombre antes de que se reservara, cámbielo de nombre y pida a los usuarios que lo vuelvan a agregar desde su fuente
  • Consulte la lista de nombres reservados en Marketplace schema

Marketplace name is another spelling of a reserved name

El nombre del marketplace no es en sí mismo un nombre reservado, pero Claude Code lo trata como otra ortografía de uno. Nombres reservados enumera qué ortografías cuentan como un nombre reservado. Claude Code rechaza tal nombre cuando agrega el marketplace:
Cuando un marketplace ya está registrado bajo tal nombre, su entrada deja de cargarse, y /plugin, claude plugin install, y claude plugin update advierten:
Cuando el nombre requeriría entrecomillado de shell, la negativa en tiempo de adición dice This marketplace's name is another spelling of "<reserved>", a reserved marketplace name. It is not exactly the reserved name it appears to be. Qué hacer:
  • Cambie el nombre del marketplace a un nombre que no deletree un nombre reservado y agréguelo nuevamente
  • Para la advertencia de entrada ignorada, ejecute el comando claude plugin marketplace remove que proporciona, o elimine la entrada de ~/.claude/plugins/known_marketplaces.json

Claude Code refuses the marketplace name

Un marketplace registrado cuyo nombre suplanta un marketplace oficial de Anthropic según las reglas que esa sección enumera. Si un marketplace fue registrado bajo tal nombre antes de que la verificación lo bloqueara, el marketplace y los plugins instalados desde él dejan de cargarse, porque Claude Code verifica el nombre cada vez que lee el catálogo del marketplace. Cuando el nombre imita uno oficial, claude plugin list y la pestaña Errors de /plugin informan cada plugin afectado con un mensaje que comienza:
Para un nombre que imita, el error del marketplace en sí dice Claude Code refuses this marketplace's name: it looks like one of Anthropic's own en su lugar. claude plugin marketplace add rechaza cualquier nombre que suplante con Marketplace name impersonates an official Anthropic/Claude marketplace. Antes de v2.1.282, claude plugin list y /plugin informaban los plugins de un nombre que imita como fallidos al cargar también, sin nombrar el nombre del marketplace como la causa. Qué hacer:
  • Para conservar un marketplace que un archivo de configuración declara en línea con "source": "settings", cámbiale el nombre antes de eliminar el nombre anterior, porque eliminar el marketplace también borra su entrada de tus archivos de configuración. Claude Code v2.1.292 o posterior enumera estos pasos en el mensaje:
    1. En cada archivo de configuración que incluya el marketplace en extraKnownMarketplaces, asigna a la clave de la entrada y a su source.name un mismo nombre nuevo en ASCII simple que no parezca oficial. Si un administrador agrega el marketplace mediante la configuración administrada de tu organización, el administrador realiza este paso
    2. Ejecuta claude plugin marketplace remove <old-name>, o elimina el nombre anterior en la pestaña Marketplaces de /plugin. Esto también desinstala sus plugins y elimina sus datos, opciones y secretos
    3. Inicia Claude Code de nuevo, en la carpeta del proyecto si el archivo es un archivo de configuración de un proyecto. Luego instala los plugins desde el marketplace renombrado
  • Para conservar cualquier otro marketplace, espera hasta que su mantenedor lo renombre y luego ejecuta claude plugin marketplace update <name>
  • Para eliminar el marketplace, ejecuta claude plugin marketplace remove <name>. Esto también desinstala los plugins instalados desde el marketplace y elimina sus datos, opciones y secretos
  • Si publica el marketplace, cámbielo de nombre en su marketplace.json; los usuarios luego actualizan el marketplace en lugar de eliminarlo

Marketplace is already added from a different source

Indicaste una nueva fuente de marketplace con --marketplace <source> en el comando de instalación, en una sesión o desde tu shell. El catálogo que Claude Code obtuvo de esa fuente tiene el mismo nombre que un marketplace que ya agregaste desde una fuente diferente. Claude Code mantiene el marketplace existente en lugar de reemplazarlo, y el plugin no se instala.
Qué hacer:
  • Si el marketplace que ya agregó es el que desea, instale desde él por nombre: /plugin install <plugin>@<name>
  • Para cambiar a la nueva fuente, ejecute /plugin marketplace remove <name>, luego reintente la instalación

Plugin command references user_config in a shell command

Un hook de plugin, monitor, o comando MCP headersHelper hace referencia a una opción de plugin ${user_config.KEY}, y la cadena sustituida se pasaría a un shell. Un valor configurado que contenga $(...), comillas invertidas o ; se ejecutaría como código allí, por lo que Claude Code se niega a iniciar el componente en lugar de sustituir el valor. La verificación se ejecuta en la plantilla de comando, por lo que el error aparece incluso cuando aún no se ha configurado ningún valor. Antes de v2.1.207, el valor se sustituía en el comando del shell. La redacción depende de qué superficie hizo referencia a la opción. Un hook de forma de shell informa:
Un monitor informa:
Un headersHelper de MCP informa:
Qué hacer:
  • Para un hook, agregue una matriz args para que se ejecute en forma exec, donde cada ${user_config.KEY} se convierte en un argumento sin shell en el medio. O elimine la referencia y lea la variable de entorno $CLAUDE_PLUGIN_OPTION_<KEY> dentro del script
  • Para un monitor, elimine la referencia y haga que el script del monitor lea el valor de un archivo de configuración
  • Para un headersHelper, mueva ${user_config.KEY} al campo headers del servidor, que no se analiza con shell, o lea el valor dentro del script del helper

Plugin archive integrity check failed

La entrada del marketplace del plugin utiliza una fuente archive con un pin sha256, y el resumen del archivo descargado no coincide con el pin. Claude Code rechaza la instalación, por lo que nada cambia en la caché de plugins. La falta de coincidencia tiene tres causas posibles:
  • El archivo en la URL cambió después de que el autor calculó el pin
  • El autor ingresó el resumen incorrecto en la entrada del marketplace
  • La URL sirve un archivo diferente al que el autor fijó
Qué hacer:
  • Si publica el plugin, recalcule el resumen del archivo exacto que sirve la URL, por ejemplo con shasum -a 256 my-plugin.zip, o Get-FileHash -Algorithm SHA256 my-plugin.zip en PowerShell, y actualice el sha256 en la entrada del marketplace
  • Si instala el plugin, ejecute /plugin marketplace update <name> para actualizar el catálogo en caso de que la entrada se haya corregido, luego reintente la instalación
  • Si los resúmenes aún no coinciden después de una actualización, pregunte al propietario del marketplace qué archivo fijaron antes de instalar

Path escapes plugin directory

Un componente de plugin cuya ruta está declarada en el plugin.json del plugin o en su entrada de marketplace, se resuelve fuera del directorio del plugin. Claude Code descarta esa ruta y carga el resto del plugin. El nombre del componente en el mensaje, como commands o hooks, nombra el campo que declaró la ruta.
En la salida del comando claude plugin, el mismo error dice Path escapes plugin directory: ./../shared.md (commands). Claude Code rechaza tanto una ruta que apunta fuera del plugin tal como está escrita, como ../shared-utils, como un enlace simbólico que conduce fuera del plugin y no es uno que las reglas de enlace simbólico del marketplace permitan. Para un enlace simbólico, el mensaje también dice dónde se resuelve la ruta:
En macOS y Linux, Claude Code también rechaza una ruta de componente que contenga una barra invertida en cualquier lugar, incluso cuando la ruta permanece dentro del plugin. Un plugin cuyas rutas de componentes utilizan separadores de estilo Windows se carga en Windows y activa este rechazo en las otras plataformas:
Antes de v2.1.251, Claude Code cargaba una ruta commands declarada en una entrada de marketplace incluso cuando apuntaba fuera del directorio del plugin. Antes de v2.1.257, la verificación solo miraba la ortografía de la ruta, no dónde conducía un enlace simbólico. Qué hacer:
  • Mueva el archivo referenciado dentro del directorio del plugin y apunte la ruta a él con una ruta relativa ./
  • Si la ruta es un enlace simbólico a un archivo fuera del plugin, reemplace el enlace simbólico con una copia del archivo
  • Si el mensaje dice que la ruta contiene una barra invertida, escriba la ruta con barras diagonales, por ejemplo ./commands/deploy.md
  • Para compartir archivos con otros plugins en el mismo marketplace, vincúlelos con un enlace simbólico dentro del directorio del plugin, siguiendo las reglas de enlace simbólico

Path could not be checked

Claude Code le preguntó al sistema operativo si existe una ruta de plugin y obtuvo un error que no sea “no encontrado”, por lo que no carga lo que la ruta nombra. Cuánto del plugin se carga depende de qué ruta falló: No ve este error para una ruta que no existe en absoluto. En /plugin, el error aparece bajo el plugin y nombra la ruta y el código que devolvió el sistema operativo:
En claude plugin list, el mismo error dice Path not found: /home/user/my-plugin/skills (skills, ELOOP). Las causas que producen este error incluyen:
  • ELOOP: un enlace simbólico en la ruta apunta a sí mismo o forma un bucle
  • EIO o ESTALE: la ruta está en un montaje de red que está roto o obsoleto
  • EACCES: uno de los directorios por encima de la ruta le niega permiso para atravesarlo
Qué hacer:
  • Reemplace un enlace simbólico que apunta a sí mismo con una carpeta real, o elimínelo
  • Si la ruta está en un montaje de red, remonte el recurso compartido
  • Si el código es EACCES, restaure su permiso de ejecución en los directorios por encima de la ruta
  • Ejecute /reload-plugins después de corregir la ruta, o reinicie Claude Code, para cargar el plugin o componente
Antes de v2.1.265, Claude Code trataba una carpeta de componentes predeterminada que no podía verificar como ausente y cargaba el plugin sin ese componente, sin error.

Marketplace entry path does not stay inside the marketplace directory

La entrada de marketplace del plugin declara una ruta de fuente que Claude Code no puede resolver a una ubicación dentro del directorio del marketplace en sí, por lo que el plugin no se instala ni se carga. La negativa cubre:
  • Una ruta de entrada que es absoluta, sube fuera del marketplace con .., o está escrita como una ruta de red
  • En macOS y Linux, una ruta de entrada que contiene una barra invertida en cualquier lugar después del ./ inicial
  • Una entrada en un marketplace obtenido de una fuente remota, como git o una URL, que alcanza su destino a través de un enlace simbólico que se resuelve fuera del directorio del marketplace
  • Una entrada relativa en un marketplace agregado desde una URL directa a su marketplace.json: Claude Code descarga solo ese archivo, por lo que no existen archivos de plugin locales para que la ruta nombre. Consulte Plugins with relative paths fail in URL-based marketplaces
claude plugin install informa la negativa así:
Cuando la entrada de un plugin ya instalado falla la misma verificación, claude plugin list muestra el plugin como failed to load con:
Qué hacer:
  • Si mantiene el marketplace, escriba la source de la entrada como una ruta relativa simple con barras diagonales, como ./plugins/my-plugin, y mantenga cualquier enlace simbólico que cruce apuntado dentro del directorio del marketplace
  • Si agregó el marketplace desde una URL directa, las entradas relativas no pueden resolverse. Pida al autor del marketplace que use otra fuente de plugin, o agregue el marketplace desde su repositorio de git en su lugar

Failed to load marketplace configuration

Claude Code mantiene los marketplaces de plugins que ha agregado en un archivo de registro en ~/.claude/plugins/known_marketplaces.json. Un comando de plugin que necesita el registro, como claude plugin install, falla con uno de dos mensajes cuando Claude Code no puede usar el archivo:
  • Failed to load marketplace configuration: el archivo no es JSON válido, o no se puede leer. Un archivo vacío falla de esta manera también.
  • Marketplace configuration file is corrupted: el archivo es JSON válido pero su contenido no coincide con el esquema del registro.
Con un archivo vacío, claude plugin install informa:
Antes de v2.1.246, claude plugin install no informaba esta falla. Qué hacer:
  • Abra ~/.claude/plugins/known_marketplaces.json y repare el JSON, o corrija las entradas que el mensaje nombra como no coincidentes con el esquema del registro
  • Si no puede repararlo, elimine el archivo o reemplace su contenido con {}, luego vuelva a agregar cada marketplace con claude plugin marketplace add <source>. Claude Code vuelve a registrar los marketplaces que su configuración de usuario o administrada declara en extraKnownMarketplaces la próxima vez que lo inicie en una carpeta que haya confiado.

Plugin is required by your organization

Ejecutó claude plugin disable, o utilizó la pestaña Installed de /plugin, para desactivar un plugin sincronizado desde claude.ai que su organización marca como requerido:
Claude Code no guarda nada y el plugin permanece habilitado. Cuando intenta desactivar un plugin del que depende un plugin requerido, Claude Code rechaza de la misma manera, con un mensaje que nombra el plugin requerido que lo necesita. Qué hacer:
  • Pida a un administrador de su organización claude.ai que cambie el estado requerido del plugin en claude.ai

Plugin was not uninstalled

Ejecutó claude plugin uninstall, o eligió Uninstall en la pestaña Installed de /plugin, y la desinstalación se detuvo con un mensaje que comienza "<plugin>" was not uninstalled:. Si el texto después de ese dos puntos comienza con installed_plugins.json en lugar de nombrar un archivo de configuración, la causa es contenido en installed_plugins.json que esta versión de Claude Code no puede leer. Para esa forma, consulte installed_plugins.json holds a record this version can’t read. Cuando Claude Code eliminó la entrada del plugin de enabledPlugins y leyó los archivos de configuración de ese ámbito nuevamente, ya sea el plugin seguía activado allí, o un archivo que podría activarlo no se pudo leer o verificar. Eliminar las opciones guardadas del plugin, secretos y datos mientras una entrada de configuración podría activarlo nuevamente los perdería, por lo que la desinstalación se detiene en su lugar: el plugin permanece instalado y nada que guardó se elimina.
El medio del mensaje nombra el archivo y la causa:
  • it is still switched on in <file>, although the settings change reported no error: la escritura de configuración informó éxito pero la entrada aún está allí cuando se lee el archivo nuevamente
  • it is still switched on in <file>, and the settings change failed (<error>): el archivo no se pudo guardar, por la razón entre paréntesis
  • <file> is there and could not be read: el archivo existe pero no se pudo leer como configuración, por ejemplo porque no es JSON válido, por lo que aún puede activar el plugin
  • <file> (not read: it is on a network path or is a link to one, or could not be checked): Claude Code no leyó el archivo de configuración del proyecto o local porque el archivo, o la carpeta .claude que lo contiene, es un enlace que conduce a una ubicación de red, o porque no pudo examinar esa ruta
claude plugin uninstall sale con código 1, y con --json el resultado lleva failureCode: "settings_still_on". /plugin muestra el mismo mensaje. Qué hacer:
  • Siga la última oración del mensaje: repare o reemplace el archivo de configuración que nombra, o elimine la entrada del plugin de enabledPlugins en ese archivo usted mismo, luego ejecute la desinstalación nuevamente

Errores de herramientas

Estos errores provienen de las llamadas a herramientas de Claude. Claude corrige la mayoría de los errores de herramientas por sí solo. Cuando uno requiere un cambio de tu parte, la lista Qué hacer de ese error indica qué cambiar.

No such tool available

Claude llamó a una herramienta con un nombre que no está en la lista de herramientas de la sesión. Claude Code devuelve el error a Claude como resultado de la llamada a herramienta, y el turno continúa. Cuando Claude Code puede determinar por qué falta la herramienta, agrega una oración después del nombre de la herramienta que da la razón o nombra la herramienta a la que debe llamar en su lugar, como en la segunda línea:
Justo después de reanudar una sesión, un servidor MCP todavía puede estar en su primer intento de conexión cuando Claude llama a una de sus herramientas. Claude Code entonces espera al servidor y devuelve este error si la herramienta aún no está disponible cuando termina la espera. Antes de v2.1.284, una llamada así fallaba de inmediato en lugar de esperar. Una llamada cuyo nombre de herramienta Claude Code recortó a 200 caracteres también falla con este error. Qué hacer:
  • Si ocurre una vez, no necesitas hacer nada. Claude lee el error y el turno continúa.
  • Si las llamadas a las herramientas de un servidor MCP siguen fallando con este error, ejecuta /mcp en la sesión o claude mcp list en tu shell para revisar el estado del servidor, y vuelve a conectar un servidor fallido desde /mcp. En el Agent SDK, consulta Manejo de errores.

Agent would be spawned with zero tools

Cada entrada en la lista tools del subagente no coincidió con ninguna herramienta utilizable, por lo que Claude Code se negó a lanzar el subagente: sin herramientas, no podía actuar. El mensaje agrupa tus entradas por lo que salió mal:
  • Unrecognized: la entrada no coincide con ningún nombre de herramienta, generalmente un error tipográfico como Grpe para Grep.
  • Not available to subagents: la entrada nombra una herramienta real que los subagentes no pueden usar. Los subagentes en segundo plano mantienen un conjunto de herramientas integradas más pequeño, por lo que una entrada que solo un subagente en primer plano puede usar termina aquí cuando el subagente se ejecutaría en segundo plano, que es lo predeterminado. Si enumeras Agent, el mensaje lo reporta bajo el siguiente grupo en su lugar.
  • Matched no tools in this session: la entrada es válida pero ninguna herramienta en la sesión actual coincide con ella en este momento, como mcp__github__* sin servidor MCP de GitHub conectado, o Agent para un subagente en el límite de profundidad.
Omitir el campo tools nunca activa este rechazo. Si dejas la lista tools vacía, o disallowedTools elimina cada entrada en ella, Claude Code también omite el rechazo y lanza el subagente sin herramientas. Antes de v2.1.208, el subagente se lanzaba sin herramientas y podía devolver un resultado vacío o confuso.
Qué hacer:

File is covered by a Read deny rule

La herramienta Edit o Write fue llamada en una ruta coincidida por una regla de denegación Read, incluyendo la creación de un nuevo archivo en esa ruta. Ambas herramientas cambian contenido que Claude debe poder leer de nuevo, por lo que Claude Code rechaza la llamada antes de cualquier acceso a archivos. NotebookEdit no está cubierto por reglas de denegación Read. Antes de v2.1.228, la regla bloqueaba solo la herramienta Edit, y antes de v2.1.208, solo una regla de denegación Edit bloqueaba ediciones.
Cuando Claude Code rechaza la herramienta Write, el mensaje termina con and cannot be written en su lugar. Qué hacer:
  • Si Claude debe poder cambiar el archivo, elimina o reduce la regla de denegación Read en /permissions o en la configuración
  • Si el archivo debe permanecer intacto, mantén la regla y agrega una regla de denegación Edit para la misma ruta para bloquear también la herramienta NotebookEdit

Path cannot contain null bytes

El argumento de ruta o patrón de una llamada a herramienta de archivo contenía un byte nulo, que los sistemas de archivos y las herramientas de búsqueda no pueden aceptar. Read, Write, Edit, NotebookEdit, Glob y Grep verifican esto, y el mensaje nombra la herramienta y el argumento:
La llamada a herramienta falla, Claude ve el error, y el turno continúa. Qué hacer:
  • Nada de tu parte: el error se devuelve a Claude como el resultado de la herramienta, y el mensaje en sí le dice a Claude que elimine el byte nulo e intente de nuevo
Antes de v2.1.281, un byte nulo en una ruta de Read, Write, Edit o NotebookEdit terminaba todo el turno con un error que nombraba Path contains null bytes, y la herramienta nunca se ejecutaba.

subagent_type is required

Claude llamó a la herramienta Agent sin un subagent_type, y esta sesión no tiene un subagente de propósito general como alternativa. Ese es el caso en dos configuraciones: Qué hacer:
  • Generalmente nada: el mensaje enumera los subagentes que la sesión sí tiene, por lo que Claude puede reintentar con uno de ellos
  • Si Claude sigue fallando, agrega general-purpose a la lista de permitidos tools: Agent(...), o quita la definición de CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS
Antes de v2.1.235, la misma llamada fallaba con Agent type 'general-purpose' not found.

Memory index is over its read limit

Claude escribió en el índice de memoria automática MEMORY.md y lo dejó por encima de uno de sus límites de lectura: 200 líneas o 25KB. La escritura fue exitosa, pero solo las primeras 200 líneas o 25KB, lo que ocurra primero, se cargan al inicio de una sesión, por lo que todo lo que está más allá del límite se descarta cada vez que se lee el índice. Antes de v2.1.210, un índice que excedía el límite se truncaba silenciosamente en la siguiente carga sin ninguna señal al momento de la escritura.
Solo el contenido que se carga cuenta para los límites. El frontmatter YAML y los comentarios HTML a nivel de bloque se eliminan antes de que se cargue el índice, por lo que se excluyen de la medición. Antes de v2.1.211, Claude Code medía el archivo sin procesar, y el frontmatter o los comentarios podían activar este error incluso cuando el contenido cargado cabía. Claude Code entrega el error a Claude después de la escritura en lugar de imprimirlo como un banner en tu terminal, por lo que puede que solo lo notes en la transcripción. Cuando la escritura de Claude acerca el archivo a un límite sin cruzarlo, Claude Code devuelve un recordatorio más suave para compactar el índice en lugar de este error. Qué hacer:
  • Permite que Claude reescriba MEMORY.md, o pídele que lo haga: mantener una línea por entrada, mover los detalles a archivos de tema y combinar o descartar entradas obsoletas
  • Para recortar el índice tú mismo, consulta Auditar y editar tu memoria

pkill pattern matches the Claude Code process

Un comando pkill en una llamada a la herramienta Bash usó un patrón, típicamente con -f, que coincide con el propio proceso de Claude Code, por lo que Claude Code rechaza el comando en lugar de permitir que termine la sesión. Claude Code prueba el patrón con pgrep antes de ejecutar pkill y lo rechaza cuando su propio ID de proceso está en el resultado. La verificación se ejecuta solo en Linux; en macOS, pkill se ejecuta sin modificaciones. Antes de v2.1.214, el comando se ejecutaba, y un patrón coincidente mataba la sesión de Claude Code a mitad del turno.
El rechazo aparece en el resultado de la herramienta Bash en lugar de como un banner en tu terminal, y Claude generalmente ajusta el comando por sí solo. Qué hacer:
  • Reduce el patrón para que coincida solo con el proceso previsto, por ejemplo la ruta completa del binario de destino en lugar de una subcadena corta
  • Para detener procesos iniciados por el shell actual, usa pkill -P $$ con el patrón, lo que limita la coincidencia a los procesos hijos del propio shell

Failed to write to a teammate’s inbox

Claude Code no pudo escribir un mensaje en el archivo de buzón de un compañero de equipo bajo ~/.claude/teams/{team-name}/inboxes/, por lo que el destinatario no recibió nada. La escritura falla cuando Claude Code no puede crear o actualizar el archivo, por ejemplo porque el disco está lleno, el directorio no tiene permisos de escritura, u otro agente mantiene el bloqueo del buzón durante demasiado tiempo. Antes de v2.1.224, Claude Code reportaba el mensaje como enviado incluso cuando la escritura fallaba. El error aparece en el resultado de la herramienta del agente remitente en lugar de como un banner en tu terminal, y su texto le dice a Claude que intente de nuevo:
Los mensajes estructurados del protocolo de equipo de agentes fallan de la misma manera, y el error nombra el mensaje no entregado: cuando Claude Code no puede escribir una aprobación de plan, un rechazo de plan, una solicitud de apagado o un rechazo de apagado, el error dice Failed to write the <message> to <name>'s inbox — nothing was sent. La plan approval en esa lista es la decisión del líder que aprueba el plan de un compañero; el envío del plan del compañero es el mensaje separado plan approval request. Ese mensaje y otros dos mensajes de protocolo tienen su propio texto de mensaje y consecuencia:
  • Failed to write the plan approval request to the lead's inbox — plan not submitted; try again: el plan del compañero nunca llegó al líder, y el compañero permanece en modo plan hasta que un reenvío tenga éxito
  • The permission request could not be delivered to the team lead (mailbox write failed): la solicitud de permiso del compañero nunca llegó al líder, por lo que nadie aprobó la llamada a herramienta
  • The confirmation could not be written to team-lead's inbox.: la aprobación del apagado en sí tuvo efecto y el compañero sale; solo falta la confirmación al líder
Cuando tú mismo envías un mensaje a un compañero, escribiendo @name seguido del mensaje en la sesión del líder, la misma falla aparece como una notificación, Couldn't write to @name's inbox — message not sent. Try again., y Claude Code mantiene tu texto en el cuadro del prompt para que puedas enviarlo de nuevo. Qué hacer:
  • Pide al remitente que reenvíe el mensaje; la contención por el bloqueo del buzón es transitoria y se resuelve al reintentar
  • Verifica el espacio libre en disco y comprueba que ~/.claude/teams y los archivos bajo él tengan permisos de escritura para tu usuario

Teammate’s agent definition was not restored

Claude envió un mensaje a un compañero de equipo de agentes detenido, y Claude Code lo reactivó sin volver a aplicar la definición de subagente desde la que fue generado. El aviso sigue al informe de reanudación en el resultado de la herramienta del agente remitente y nombra la razón. Cuando el archivo de definición provenía de una carpeta sin confianza guardada, dice:
La verificación se aplica a una definición en el directorio .claude/agents/ del proyecto o de un directorio --add-dir, y aceptar el diálogo de confianza para una carpeta principal no la satisface. Qué hacer:
  • Ejecuta claude en la carpeta que nombra el registro de depuración y acepta el diálogo de confianza. La definición se vuelve a aplicar la próxima vez que Claude Code reactive al compañero; no necesitas reiniciar la sesión del líder
  • O establece la entrada hasTrustDialogAccepted en true en ~/.claude.json, usando la clave exacta projects["<path>"] que imprime el registro de depuración

Message too large for cross-session delivery

El mensaje entre sesiones de Claude a otra de tus sesiones en esta máquina era demasiado largo para enviarse. Claude Code lo rechazó, y la sesión receptora no recibió nada. El rechazo aparece en el resultado de la herramienta de la sesión remitente, no como un banner en tu terminal. Nombra ambos tamaños y cómo hacer que el mensaje quepa:
Reenviar el mismo texto falla de la misma manera. Qué hacer:
  • Pide a Claude que resuma el mensaje, o que ponga el contenido voluminoso en un archivo y envíe la ruta del archivo
  • Pide a Claude que divida el contenido en varios mensajes más cortos
Antes de v2.1.235, Claude Code reportaba un mensaje de tamaño excesivo como enviado. La sesión receptora lo descartaba sin leerlo.

Too many messages to this session just now

Claude envió una ráfaga rápida de mensajes entre sesiones a una de tus sesiones en esta máquina, y la ráfaga alcanzó lo que la bandeja de entrada de esa sesión acepta. Claude Code rechazó el siguiente envío, y la sesión receptora no recibió nada de él. El rechazo aparece en el resultado de la herramienta de la sesión remitente, no como un banner en tu terminal:
Qué hacer:
  • Generalmente nada: Claude agrupa el contenido restante en un mensaje, o espera antes de enviar más
  • Si tú mismo provocaste la ráfaga, pide a Claude que combine lo que queda en un único mensaje
Antes de v2.1.236, Claude Code reportaba estos envíos como enviados. La sesión receptora los descartaba sin leerlos.

Cross-session message was dropped at the recipient session’s inbox

Claude envió un mensaje entre sesiones a otra de tus sesiones en esta máquina, y la bandeja de entrada de esa sesión lo descartó antes de que Claude en esa sesión lo leyera. La línea nombra al destinatario y, cuando el destinatario dio una razón, agrega la razón después de un guion:
Una línea puede cubrir varios mensajes descartados. En ese caso comienza en plural, por ejemplo Cross-session messages (12) were dropped. Para encontrar a qué sesión pertenece una dirección, compárala con la fila Peer address que /status muestra en cada sesión. Después del guion, la línea da una o más de estas razones:
  • its queue of undelivered peer messages was full: el destinatario ya tenía tantos mensajes no entregados de otras sesiones como su cola permite
  • you sent faster than that session accepts: los mensajes de la sesión remitente llegaron más rápido de lo que el destinatario acepta de un solo remitente
  • it repeated your previous message: el mensaje era idéntico a uno que la sesión remitente envió a este destinatario poco antes
  • a relay loop between sessions was cut: el mensaje continuaba una cadena de sesiones enviándose mensajes entre sí, y la cadena había pasado por el destinatario demasiadas veces o se había vuelto demasiado larga
Qué hacer:
  • Asume que el destinatario nunca vio los mensajes descartados. Claude Code le dice lo mismo a Claude, y le indica que incluya cualquier cosa que aún importe en un mensaje posterior en lugar de reenviar de inmediato
  • Si tus sesiones se envían actualizaciones frecuentes entre sí, pide a Claude que envíe menos mensajes y más grandes, como un informe cuando una sesión termina su trabajo
  • Para a relay loop between sessions was cut, escribe tú mismo la siguiente instrucción en una de las sesiones. Un mensaje que Claude envía en respuesta a tu propio prompt comienza una nueva cadena
Antes de v2.1.238, la sesión remitente no recibía ningún informe cuando la bandeja de entrada del destinatario descartaba un mensaje.

Refusing to send a cross-session message

Antes de que Claude Code escriba un mensaje entre sesiones a otra de tus sesiones en esta máquina, verifica que el socket de bandeja de entrada de la sesión de destino sea el endpoint al que se dirigió el mensaje. Cuando una verificación falla, Claude Code rechaza el envío en la sesión remitente, y la sesión de destino no recibe nada. Para un mensaje que envía Claude, el rechazo aparece en el resultado de la herramienta de la sesión remitente:
El texto después de Refusing to send: nombra la verificación que falló:
  • reply target is a symlink: hay un enlace simbólico en la ruta del socket de la sesión de destino. Claude Code no entrega a través de él, porque un enlace allí podría redirigir el mensaje a un endpoint que la sesión de destino no creó.
  • cannot vet reply target: Claude Code no pudo inspeccionar la ruta de destino en absoluto, por ejemplo porque leerla falló con un error de permisos.
Qué hacer:
  • Generalmente nada: las verificaciones evitan que un mensaje llegue a un endpoint distinto de la sesión a la que se dirigió, y no se envió nada
  • Si reply target is a symlink se repite para una sesión, verifica qué creó un enlace en la ruta del socket de esa sesión, que se muestra en su /status bajo Peer address
Claude Code verifica las reglas de permisos de una ruta de archivo, y luego confirma esa resolución nuevamente cuando la herramienta abre el archivo o inicia la búsqueda. Cuando no puede confirmar que la ruta aún conduce a la ubicación que la verificación aprobó, Claude Code rechaza la operación en lugar de seguirla. El rechazo aparece en el resultado de la herramienta:
Cada rechazo nombra su razón:
  • its symlink resolution changed after permission was checked: un enlace simbólico a lo largo de la ruta, o en una raíz de búsqueda de Grep o Glob, fue reemplazado entre la verificación de permisos y la operación. En un rechazo de lectura, la frase entre paréntesis nombra qué comparación falló.
  • its parent-directory symlink resolution changed after permission was checked: un directorio por el que pasa la ruta de escritura ya no se resuelve a la ubicación aprobada
  • where it leads on disk could not be determined (a link on the way could not be examined, or the links do not resolve): Claude Code no pudo seguir la ruta hasta una ubicación final en el disco, por ejemplo porque los enlaces simbólicos en ella forman un bucle
  • it is a symbolic link. Write to the link's target path instead: hay un enlace simbólico en la propia ubicación de escritura solicitada, por ejemplo un CLAUDE.md que es un enlace simbólico a AGENTS.md; el mensaje dirige a Claude al destino del enlace
  • Refusing to write through symlink: <path>. Resolve the symlink and pass the real target path explicitly.: la misma condición detectada cuando otro escritor abre el archivo, como una escritura a un .mcp.json que es un enlace simbólico
  • Refusing to write into symlinked directory: <path>: el directorio que contiene el archivo es en sí mismo un enlace simbólico, por ejemplo el directorio .claude/ de un proyecto enlazado a otra ubicación
  • a path one of its Read deny rules is written through changed while the search was being prepared. Retry.: una regla de denegación Read para la búsqueda nombra una ruta que pasa a través de un enlace simbólico, y ese enlace cambió mientras Claude Code estaba preparando la búsqueda
  • it could not be opened (EACCES) — it is unreadable, or is being replaced concurrently.: la raíz de búsqueda existe pero no pudo abrirse; el código entre paréntesis es el error del sistema operativo
  • its permission check expired before it ran (too many concurrent file operations). Retry.: Claude Code desalojó el registro de aprobación bajo muchas operaciones de archivo simultáneas antes de que la herramienta lo usara; reintentar ejecuta una verificación de permisos nueva
  • ripgrep was found only by name on PATH, and a search outside the working directory cannot apply your Read deny rules in that configuration: Claude Code no pudo resolver el binario rg a una ruta absoluta, por lo que rechaza búsquedas fuera del directorio de trabajo en lugar de ejecutar una que tus reglas de denegación no cubran
Qué hacer:
  • Generalmente nada: el rechazo llega a Claude como el resultado de la herramienta, y la operación rechazada no se ejecuta
  • Si un rechazo de enlace simbólico se repite en una ruta, encuentra qué sigue reescribiendo un enlace allí, como una herramienta de compilación o un observador de archivos, o pide a Claude que use la ruta resuelta del archivo en lugar de la enlazada
  • Si este rechazo aparece para cada archivo mientras Claude Code se ejecuta en Windows dentro de un AppContainer o un sandbox de token restringido, actualiza a v2.1.265 o posterior
  • Si un rechazo de lectura aparece en macOS para un archivo que nada está reescribiendo, como una captura de pantalla arrastrada al prompt, actualiza a v2.1.273 o posterior
  • Para el rechazo de ripgrep, instala ripgrep con tu administrador de paquetes para que rg se resuelva a una ruta absoluta en PATH, o mantén las búsquedas dentro del directorio de trabajo
Antes de v2.1.251, Claude Code volvía a verificar la resolución de una ruta solo para escrituras de archivo, por lo que un enlace reemplazado después de la verificación de permisos podía redirigir una lectura o búsqueda a una ubicación diferente sin ningún mensaje. De estos, solo los rechazos de escritura de directorio principal, a través de enlace simbólico y de directorio enlazado simbólicamente aparecen en versiones anteriores. Antes de v2.1.280, el rechazo where it leads on disk could not be determined no aparecía.

Task output swap refused

Claude Code guarda la salida de cada comando Bash en un archivo bajo su directorio temporal. Cada vez que abre uno de estos archivos, verifica que la ruta aún conduzca al archivo que creó, sin ningún enlace simbólico, enlace duro adicional o directorio movido que la redirija. Este mensaje significa que esa verificación falló, por lo que Claude Code rechazó la operación en lugar de escribir o leer salida a través de esa ruta. El mensaje aparece en el resultado de la herramienta Bash:
El texto entre paréntesis nombra la verificación que falló. Razones como output symlink was re-pointed, output file identity changed y not a regular file reportan todas la misma condición: algo en la ruta de salida o a lo largo de ella ya no es el archivo que Claude Code creó. Solo algunas razones incluyen una oración To recover:. Si la verificación falla mientras un comando aún se está ejecutando, Claude Code detiene el comando, y su resultado reporta:
Qué hacer:
  • Actualiza a v2.1.260 o posterior. Las versiones anteriores a veces mostraban este mensaje cuando no había ningún enlace ni directorio movido
  • Reinicia Claude Code con CLAUDE_CODE_TMPDIR configurado en un directorio nuevo
  • O revisa el directorio de tu proyecto bajo el directorio temporal de Claude Code, /private/tmp/claude-501/-Users-you-my-project en el mensaje de ejemplo. Si esa ruta es un enlace simbólico, o un directorio que no debería estar allí, elimina el enlace o directorio en sí en lugar del destino del enlace, y reinicia Claude Code
  • Si el rechazo se repite, un proceso está reemplazando, enlazando o eliminando entradas bajo el directorio temporal de Claude Code mientras la sesión se ejecuta. Configura CLAUDE_CODE_TMPDIR en un directorio que nada más administre y reinicia

Disk quota or temp filesystem is full

Claude Code guarda la salida de cada comando Bash y PowerShell en un archivo bajo su directorio temporal. Cuando un comando sale con un código distinto de cero y sin ninguna salida, Claude Code verifica si el sistema de archivos que contiene ese archivo se quedó sin espacio o sin inodos, o si tu cuota de disco en él está agotada. Si es así, aparece un diagnóstico en el resultado del comando en lugar de la salida vacía:
El mensaje nombra lo que se agotó:
  • Your disk quota is full ... (EDQUOT): tu propia cuota en ese sistema de archivos está agotada. Una cuota puede estar llena mientras el sistema de archivos aún muestra espacio libre
  • The filesystem with Claude Code's temp directory ..., or your disk quota on it, is full (ENOSPC): el sistema de archivos, o tu cuota en él, no tiene espacio restante
  • Command output was lost: the temp filesystem at ... is full o ... is out of inodes: al sistema de archivos casi no le queda espacio libre, o se está quedando sin inodos
Qué hacer:
  • Elimina los archivos que ya no necesites en el sistema de archivos que contiene el directorio temporal de Claude Code. Para EDQUOT, elimina archivos que cuenten para tu propia cuota. Para out of inodes, elimina muchos archivos en lugar de unos pocos grandes, ya que cada archivo ocupa un inodo sin importar su tamaño
  • O reinicia Claude Code con CLAUDE_CODE_TMPDIR configurado en un directorio de un sistema de archivos con espacio
  • Luego pide a Claude que ejecute el comando de nuevo. La salida que imprimió se perdió, no se truncó

File is not valid UTF-8

Claude usó la herramienta Edit o NotebookEdit en un archivo cuyos bytes no se decodifican como UTF-8, y Claude Code rechazó el cambio. No se escribió nada, por lo que el archivo quedó como estaba. Esas herramientas guardan el archivo completo de nuevo como UTF-8, lo que habría convertido cada byte que no pudieran decodificar en el carácter de reemplazo U+FFFD. El mensaje aparece en el resultado de la herramienta:
Un archivo que debería estar en UTF-8 también recibe este mensaje cuando contiene aunque sea una sola secuencia de bytes no válida, porque la verificación cubre los bytes del archivo en su conjunto. Qué hacer:
  • Para mantener el archivo en su codificación actual, deja que Claude haga el cambio con un comando de shell que lea y escriba el archivo en esa codificación, como le indica el mensaje
  • Para seguir editando el archivo con la herramienta Edit, conviértelo a UTF-8, o corrige los bytes no válidos en un archivo que debería estar en UTF-8, y luego pide a Claude que haga la edición de nuevo
Antes de v2.1.296, Edit y NotebookEdit aplicaban una edición así y guardaban cada byte que no podían decodificar como U+FFFD. En esas versiones, actualiza Claude Code.

The source file is not valid UTF-8 text

Claude intentó publicar un artefacto desde un archivo cuyos bytes no se decodifican como texto, o cuyo texto ya contiene el carácter de reemplazo U+FFFD, por lo que Claude Code rechazó la publicación antes de cargar nada. El mensaje aparece en el resultado de la herramienta Artifact y nombra la primera posición a corregir:
Claude Code decodifica el archivo como UTF-8, o como UTF-16 cuando comienza con una marca de orden de bytes UTF-16 little-endian. Cuando un archivo UTF-16 así no se decodifica, el primer mensaje nombra UTF-16 y aun así te indica que reescribas el archivo como UTF-8. Cuando hay más posiciones después de la nombrada, el mensaje agrega un conteo como (+2 more) después de la posición. Qué hacer:
  • Generalmente nada: Claude reescribe el archivo y publica de nuevo
  • Si el archivo es uno que escribiste o exportaste, guárdalo de nuevo como UTF-8, y reemplaza cada U+FFFD con el carácter que una edición, pegado o conversión anterior perdió
  • Para mostrar un U+FFFD intencional en la página, escríbelo como &#xFFFD; en el HTML en lugar del carácter literal
Antes de v2.1.267, Claude Code cargaba un archivo así sin verificarlo, y era el servidor el que rechazaba la publicación.

Not published: that file is on a network share

Claude intentó publicar un artefacto desde un archivo en una ruta que nombra un host de red:
  • En Windows, una ruta \\server\share que no está bajo una unidad de red asignada que hayas pasado al iniciar con --add-dir
  • En macOS o Linux, una ruta de montaje automático como /net/<host>/page.html
Resolver una ruta así contacta al host que nombra, y en Windows ese contacto puede enviar tus credenciales al host. Claude Code se niega a publicar el archivo y no lo lee. El rechazo aparece en el resultado de la herramienta Artifact:
Qué hacer:
  • Nada, si no necesitas ese archivo exacto: el mensaje le indica a Claude que publique un archivo de las propias carpetas de la sesión en su lugar
  • Para publicar ese archivo exacto, cópialo en una carpeta de un disco local y vuelve a pedirlo
  • En Windows, para permitir que Claude publique directamente desde el recurso compartido, asígnalo a una letra de unidad y pasa la unidad al iniciar Claude Code. En PowerShell, por ejemplo, ejecuta net use Z: \\server\share y luego claude --add-dir Z:\. Claude podrá entonces publicar archivos desde esa unidad. Agregar la unidad a mitad de la sesión con /add-dir no es suficiente.
  • En macOS o Linux, monta el recurso compartido en un directorio como uno bajo /mnt o /Volumes, y publica desde esa ruta en lugar de la ruta de montaje automático

Reading a local file from outside the connected folders in a Cowork session

En una sesión de Cowork que se ejecuta en tu máquina en la aplicación Claude Desktop, Claude nombró un archivo local para un artefacto. Claude Code no pudo confirmar que el archivo sea un archivo simple dentro de las carpetas conectadas de la sesión: la ruta se encuentra fuera de esas carpetas, pasa a través de un enlace simbólico, o está escrita de una manera que puede nombrar un archivo diferente al que parece. Leer un archivo así requiere tu aprobación, y en una sesión que no puede mostrarte la tarjeta de aprobación, como una configurada para omitir todas las aprobaciones, Claude Code rechaza la lectura. El rechazo aparece en el resultado de la herramienta Artifact; cuando el archivo no pudo examinarse en absoluto, nombra esa falla en su lugar:
Qué hacer:
  • Generalmente nada: el mensaje le dice a Claude que use un archivo simple dentro de las carpetas conectadas en su lugar
  • Para poner ese archivo exacto en el artefacto, cópialo en una de las carpetas conectadas de la sesión como un archivo normal, no un enlace simbólico, y vuelve a pedirlo

WebFetch cannot fetch localhost

Claude llamó a WebFetch con una URL cuyo nombre de host no tiene punto, como http://localhost:3000 o un nombre de intranet simple como http://wiki/. WebFetch rechaza estas URL antes de hacer cualquier solicitud:
Qué hacer:
  • Generalmente nada: el mensaje dirige a Claude a curl a través de la herramienta Bash, que puede llegar a servidores locales y de intranet
Antes de v2.1.268, WebFetch reportaba estas URL con un error genérico Invalid URL.

WebFetch domain safety check failed

Antes de obtener una URL, WebFetch envía el nombre de host de la URL a api.anthropic.com para verificarlo contra la lista de bloqueo de seguridad de dominios de Anthropic. Si la verificación no se puede completar, WebFetch no puede confirmar que el dominio sea seguro, por lo que no obtiene la página y el resultado de la herramienta contiene uno de estos mensajes en su lugar:
  • rate-limited: el endpoint de verificación respondió con HTTP 429. El mensaje le dice a Claude que continúe sin la página y que lo intente de nuevo como máximo una vez más tarde. Claude Code no almacena en caché una verificación fallida, por lo que una obtención posterior de ese dominio ejecuta la verificación de nuevo. Si las sesiones en tu red encuentran esto a menudo, puedes omitir la verificación con skipWebFetchPreflight: true en la configuración.
  • Unable to verify: la solicitud de verificación falló, agotó el tiempo de espera u obtuvo otro estado de error. Si tu red bloquea api.anthropic.com, agrega ese dominio a la lista de permitidos, u omite la verificación con skipWebFetchPreflight: true en la configuración.
Antes de v2.1.286, el mensaje de rate limit decía The safety check for domain example.com is temporarily rate-limited (too many domain checks from this network). Retry after about a minute; retrying sooner will fail the same way.. Antes de v2.1.285, una verificación afectada por el rate limit se reportaba con el mensaje Unable to verify en su lugar.

Errores de sesión en segundo plano

Las sesiones en segundo plano se ejecutan sin su propia terminal interactiva, por lo que los comandos que necesitan una se comportan de manera diferente allí. Estos mensajes aparecen en la transcripción de una sesión en segundo plano, en la terminal que se conecta a una, en la sesión o shell desde la que haces el envío, o, para las entradas de protección de worktree a continuación, en cualquier sesión aislada en un worktree o que ejecute un subagente aislado en worktree; cuando un mensaje es específico de una superficie, su entrada lo indica.

Comandos rechazados en una sesión en segundo plano

Los comandos que abren un diálogo interactivo no pueden hacerlo mientras no hay terminal conectada a una sesión en segundo plano. /install-github-app, la lista de configuración /mcp y las acciones de autenticación en el menú del servidor MCP responden con un mensaje. Para /install-github-app y la lista de configuración /mcp, la sesión también aparece bajo Needs input en agent view para que puedas encontrarla, conectarte y ejecutar el comando nuevamente. Mientras una terminal está conectada, estos comandos funcionan normalmente. Antes de v2.1.216, la sesión no aparecía bajo Needs input después de que /install-github-app o la lista de configuración /mcp se rechazara. En v2.1.213 a v2.1.215, los comandos seguían funcionando mientras una terminal estaba conectada, y el mensaje de rechazo te indicaba que te conectaras y ejecutaras el comando nuevamente. De v2.1.208 a v2.1.212, Claude Code los rechazaba incluso mientras una terminal estaba conectada, con un mensaje como Can't open MCP settings in a background session; en esas versiones, ejecuta el comando desde una sesión claude normal en su lugar, o actualiza. Antes de v2.1.208, abrían su diálogo dentro de la sesión en segundo plano. Solo en v2.1.208, Claude Code también rechazaba el selector /model en una sesión en segundo plano, y /upgrade imprimía la URL de actualización en lugar de abrir un navegador. La redacción nombra el comando. La lista de configuración /mcp reporta:
Qué hacer:
  • Conéctate a la sesión desde agent view y ejecuta el comando nuevamente
  • O usa la forma que el mensaje nombra, como /mcp reconnect <server>, /mcp enable o /mcp disable, que funcionan sin conectarse

Escritura o comando bloqueado porque la ruta no se puede resolver de forma segura

Claude se refirió a un archivo o directorio de trabajo mediante una escritura de ruta que el protector de aislamiento de worktree no puede resolver a una única ubicación verificable. El protector verifica escrituras y directorios de trabajo de comandos en cualquier sesión aislada en un worktree, interactiva o en segundo plano, y en subagentes aislados en worktree. Resuelve enlaces simbólicos antes de verificar que la operación no llegue al checkout compartido, y cuando la resolución falla, bloquea la operación en lugar de permitir que llegue allí. El mensaje nombra las formas de ruta que rechaza y cómo reintentar:
Un comando bloqueado reporta la misma causa para su directorio de trabajo y termina con re-run the command from its direct symlink-free path. Antes de v2.1.217, el protector comparaba las escrituras de ruta sin resolver enlaces simbólicos, por lo que estas escrituras no se bloqueaban y una escritura enrutada a través de un enlace simbólico podía llegar al checkout compartido. Qué hacer:
  • Generalmente nada: el mensaje completo va a Claude como un error de herramienta, y Claude reintenta con la ruta directa que nombra. Para una edición de archivo bloqueada, la vista de conversación muestra solo una línea corta Error editing file; el mensaje completo aparece en la vista de transcripción, que abres con Ctrl+O. Un comando bloqueado lo imprime en su salida.
  • Si el bloqueo se repite en el mismo archivo, la ruta probablemente pasa por un enlace simbólico incluido en un commit cuyo destino contiene .., como docs/current -> ../README.md; pide a Claude que edite el archivo de destino por su ruta real en lugar de a través del enlace

Escritura o comando bloqueado porque la ruta nombra una ubicación de red

Claude se refirió a un archivo o directorio de trabajo mediante una ruta que nombra una unidad que no está en tu máquina, un recurso compartido UNC como \\server\share\file o una ruta de automontaje /net, mientras que el checkout de la sesión está en un disco local. El mismo protector de aislamiento de worktree no puede verificar que tal ruta se mantenga fuera del checkout compartido, por lo que bloquea la operación. Aislar la sesión en un worktree no levanta el bloqueo. El mensaje nombra la forma de ruta a usar en su lugar:
Un comando bloqueado reporta la misma causa para su directorio de trabajo y termina con re-run the command from its local, plainly-spelled path. Antes de v2.1.217, el protector comparaba solo el texto de la ruta, por lo que referirse a un archivo dentro del checkout mediante una ruta UNC o /net no se bloqueaba. Qué hacer:
  • Generalmente nada: Claude reintenta con la escritura local que el mensaje solicita

Comando bloqueado por las verificaciones de aislamiento de worktree

Claude ejecutó un comando Bash, PowerShell o Monitor en una sesión aislada en un worktree, y Claude Code lo rechazó por una de estas razones:
  • El comando se ejecutaría en el checkout principal o en otro worktree. El mensaje dice que su directorio de trabajo resolved to the shared checkout o is in a different worktree.
  • Un comando Bash o Monitor apunta git al checkout principal.
  • Claude Code no puede verificar a partir del texto de un comando Bash o Monitor que cualquier git que ejecute el comando se mantenga dentro del worktree. Un comando que nunca nombra git aún puede ser rechazado por esta razón, porque expandir una indirección de variable como ${!name} o ejecutar una sustitución de función Bash como ${ command; } produce un valor en tiempo de ejecución que en sí mismo puede ser un comando.
El mensaje dice is isolated in the worktree <path>, but this command, seguido de la razón, como en el caso de un comando cuyo texto Claude Code no pudo verificar:
Qué hacer:
  • Git apuntado al checkout principal, o texto de comando que no se puede verificar: nada. Claude lee el mensaje y reescribe el comando de la manera que su oración final solicita. Si un comando que pediste sigue siendo rechazado por una expansión en su texto, escribe el valor marcado literalmente y ejecuta git como su propio comando simple desde dentro del worktree
  • Para actuar en el checkout principal a propósito, ejecuta el comando tú mismo en una terminal fuera de la sesión

Esta sesión no tiene transcripción guardada

Te conectaste a una sesión que moviste a segundo plano con ← o /background y que se detuvo antes de ejecutar un turno propio. Claude Code no pudo encontrar la conversación desde la que la moviste, por lo que la sesión no tiene nada que reanudar. El mensaje termina con el comando claude respawn para esta sesión:
Abrir la fila de la misma sesión en agent view muestra Press enter again to restart this session fresh debajo de la lista en su lugar, y un segundo Enter en la fila reinicia la sesión con una conversación vacía. Qué hacer:
  • Para iniciar la sesión detenida desde cero, ejecuta claude respawn <id> con el ID del mensaje, o presiona Enter dos veces en su fila en agent view
  • Si la sesión sí terminó una respuesta y aún ves este rechazo en una versión anterior a v2.1.214, una carpeta ilegible en ~/.claude/projects podía hacer que el escaneo de transcripciones no encontrara la conversación guardada; actualiza a v2.1.214 o posterior, que tolera carpetas ilegibles durante el escaneo

Esta sesión se está ejecutando en otra terminal

Abriste la fila de una sesión detenida en agent view, y su conversación guardada ya está abierta en otro proceso activo de Claude Code en esta máquina, por lo que Claude Code se niega a iniciar un segundo proceso que escribiría en la misma transcripción. El mensaje que ves depende de qué mantiene la conversación:
  • running in another terminal: una terminal mantiene la conversación, por ejemplo una donde la reanudaste con claude --resume o /resume. La fila también muestra Open in a terminal.
  • already open in another running Claude session: otro proceso no interactivo de Claude Code la mantiene, por ejemplo un proceso de sesión en segundo plano para la misma conversación que aún no ha salido.
Qué hacer:
  • Continúa la conversación en el proceso que la tiene abierta, o sal de ese proceso y abre la fila nuevamente
Antes de v2.1.248, solo existía el rechazo already open in another running Claude session: una conversación reanudada en una terminal no contaba como abierta, y abrir la fila iniciaba un segundo proceso de Claude Code que escribía en la misma conversación.

La conversación guardada de esta sesión ya no está en el disco

Abriste una sesión en segundo plano que terminó mientras el servicio en segundo plano estaba apagado, y la limpieza de transcripciones ha eliminado desde entonces su conversación guardada, por ejemplo después de que la máquina estuvo apagada durante semanas. Abrir una fila así normalmente reanuda su conversación guardada. Sin nada que reanudar, Claude Code se niega en lugar de volver a ejecutar el prompt original de la sesión sin preguntar:
claude attach <id> imprime este texto. En agent view, el pie de página es más corto y termina con ctrl+x deletes the row. Qué hacer:
  • Ejecuta claude rm <id> para eliminar la fila. Cuando se aplica uno de los casos conservados, claude rm conserva la fila y el worktree en su lugar e indica la razón
  • Para ejecutar el prompt original de la sesión nuevamente como una conversación nueva, ejecuta claude respawn <id>
Antes de v2.1.248, abrir una fila así volvía a ejecutar el prompt original de la sesión en lugar de rechazarlo, trayendo de vuelta al primer plano una tarea de hace semanas.

El worktree tiene commits que no se han enviado a ningún lugar

Intentaste eliminar una sesión en segundo plano cuyo worktree contiene commits que Claude Code no puede confirmar que estén guardados en otro lugar. Claude Code conserva el worktree y la fila de la sesión en lugar de destruir los commits sin que los veas. claude rm nombra la rama y los commits no enviados, e indica cómo proceder:
Cuando Claude Code no puede resumir los commits, la línea de detalle dice The worktree has unpushed commits en su lugar. En agent view, la fila de la sesión muestra not deleted con la misma razón. Los commits en un remoto no bloquean la eliminación. Tampoco los commits en la copia local de la rama predeterminada de tu remoto origin, siempre que esa rama esté activa en tu checkout principal, es decir, el propio directorio del repositorio en lugar de un worktree. Qué hacer:
  • Para conservar los commits, envía la rama del worktree, o fusiónala en la rama predeterminada activa en tu checkout principal, y luego elimina la sesión nuevamente
  • Para descartar los commits, ejecuta el comando claude rm <id> --discard-unpushed que imprimió el mensaje, o presiona Ctrl+X dos veces nuevamente en la fila de la sesión en agent view. Esto elimina la sesión y el worktree junto con su rama, los commits no enviados y cualquier cambio sin commit. Si el worktree ha ganado un commit desde el rechazo, Claude Code lo conserva nuevamente y muestra el estado actualizado
  • Cuando el mensaje dice que el worktree también está registrado por otra sesión terminada, eliminar nuevamente no lo descarta: envía los commits y luego elimina la sesión nuevamente
Antes de v2.1.268, claude rm ponía el resumen de commits en la propia línea kept. Cuando claude rm no podía resumir los commits, la línea kept decía worktree has commits that are not pushed anywhere en lugar del resumen. Antes de v2.1.260, el mensaje no nombraba la rama ni los commits, y eliminar nuevamente se rechazaba de la misma manera: eliminar la sesión sin enviar los commits significaba eliminar el worktree tú mismo con git worktree remove --force <path> y luego ejecutar claude rm <id> nuevamente. Antes de v2.1.248, la rama predeterminada activa en tu checkout principal no contaba: una rama que ya habías fusionado allí seguía activando este rechazo hasta que sus commits llegaran a un remoto.

El proceso host de la terminal murió

La terminal de cada sesión en segundo plano se ejecuta en un proceso host bajo el servicio en segundo plano, y ese proceso murió mientras el servicio aún mantenía su conexión, por lo que no se pudo acceder a la sesión. En Linux y WSL, el servicio en segundo plano verifica cada proceso host cada pocos segundos, marca la sesión como fallida cuando el proceso ha salido pero su conexión con el servicio nunca se cerró, y muestra la razón en su fila en agent view:
Desde el shell, claude attach <id> reinicia una sesión ya marcada como fallida por un host muerto, y en caso contrario imprime la causa y sale:
La conversación se guarda en cualquier caso. Una fila que ejecuta un comando de shell muestra en cambio terminal host process died — its output is gone; the command was not run again, y claude attach imprime This command's terminal host process died — its output is gone and the command was not run again. Claude Code nunca vuelve a ejecutar el comando por ti. Qué hacer:
  • En agent view, presiona Enter en la fila fallida; la sesión se reinicia en un nuevo proceso host y la conversación se reanuda
  • Desde el shell, ejecuta claude attach <id> nuevamente. Claude Code imprime Session <id>'s terminal host died — restarting it on a fresh one… y vuelve a abrir la sesión
  • No puedes reiniciar una fila de comando de shell de esta manera; envía el comando nuevamente para volver a ejecutarlo
Antes de v2.1.247, un proceso host muerto podía pasar todas las verificaciones de actividad que ejecutaba el servicio en segundo plano, por lo que abrir la sesión mostraba opening… · esc to cancel indefinidamente y claude attach <id> esperaba sin reportar un error.

La sesión no responde

Abriste una sesión en segundo plano y el servicio en segundo plano aceptó la apertura, pero no llegó ninguna salida durante unos diez segundos, por lo que Claude Code concluye que el proceso que retransmite la terminal de la sesión no puede entregar salida, y termina el intento en lugar de seguir esperando. En agent view, Claude Code ofrece un reinicio en el pie de página:
Desde el shell, claude attach <id> imprime la causa y sale:
Claude Code nunca reinicia por ti una fila que ejecuta un comando de shell, porque un reinicio volvería a ejecutar el comando. Qué hacer:
  • En agent view, presiona Enter nuevamente en la misma fila. Claude Code detiene el proceso que no responde y reinicia la sesión, y la conversación se reanuda. No se detiene nada sin esa segunda pulsación
  • Desde el shell, ejecuta claude stop <id> y luego claude attach <id>
  • Para una fila de comando de shell, presiona Ctrl+X en agent view o ejecuta claude stop <id> para detenerla; envía el comando nuevamente para volver a ejecutarlo

La sesión se detuvo mientras el respawn estaba en curso

Abriste una sesión en segundo plano cuyo proceso no se estaba ejecutando, y mientras Claude Code la reiniciaba, otro proceso de Claude Code la detuvo, por ejemplo claude stop en otra terminal. Claude Code mantiene la sesión detenida:
Abrir una sesión que acabas de enviar, mientras su proceso aún se está iniciando, espera al proceso en su lugar. Antes de v2.1.246, abrirla en ese momento podía detenerla y mostrar este mensaje. Qué hacer:
  • Si no detuviste la sesión, abre su fila nuevamente en agent view o ejecuta claude respawn <id> para reiniciarla
  • Si la detuviste tú mismo, no queda nada por hacer: la sesión permanece detenida

El agente de la sesión ya no está disponible

Reanudaste una sesión que estaba ejecutando un agente personalizado, iniciado con --agent o el ajuste agent, y Claude Code no encontró un agente con ese nombre. Busca primero en el directorio original de la sesión, cuando has confiado en ese espacio de trabajo, y luego en el directorio desde el que reanudas. La sesión se reanuda de todos modos, pero con las herramientas predeterminadas, por lo que las restricciones de herramientas del agente ya no se aplican:
La advertencia nombra solo los directorios en los que Claude Code buscó, y aparece en la conversación reanudada ya sea que despiertes una sesión en segundo plano, ejecutes /resume o claude --resume, o reanudes en modo no interactivo, donde también va a stderr. Las sesiones que usan --input-format stream-json no la muestran, porque el Agent SDK proporciona los agentes después del inicio. Claude Code no guarda la alternativa en la sesión, por lo que la advertencia se repite en cada reanudación hasta que actúes. El agente integrado claude no activa la advertencia, ya que recurrir al conjunto de herramientas predeterminado no cambia nada para él. Antes de v2.1.216, Claude Code continuaba silenciosamente como el agente predeterminado, y la búsqueda cubría solo el directorio desde el que reanudabas, por lo que un agente con alcance de proyecto se perdía en cualquier reanudación desde otro directorio. Qué hacer:
  • Vuelve a crear el archivo del agente en .claude/agents/<name>.md en el proyecto de la sesión, o en ~/.claude/agents/<name>.md para un agente personal, y luego reanuda nuevamente
  • O reanuda con --agent <name> nombrando un agente que sí exista, para ejecutar la sesión como ese agente en su lugar
  • Si el agente tiene alcance de proyecto y no has confiado en el directorio original de la sesión, ejecuta Claude Code allí una vez, acepta el diálogo de confianza y luego reanuda nuevamente

Esta sesión se reinició después de que venciera su siguiente activación de /loop

Un /loop de ritmo propio en una sesión en segundo plano se detuvo. El proceso de la sesión terminó mientras el bucle esperaba su siguiente activación, y esa activación venció antes de que se iniciara el siguiente proceso de la sesión. La activación perdida no se dispara con retraso. El aviso indica cuánto retraso tenía la activación cuando la sesión se reinició:
Antes de v2.1.295, el bucle se detenía en esta situación sin ningún aviso. Qué hacer:
  • Para continuar el bucle, responde a la sesión e indícalo, por ejemplo keep the loop running. Claude lee el aviso junto con tu respuesta y puede programar la siguiente activación
  • Si ya terminaste con el bucle, no hagas nada. Ya se detuvo

Errores del lanzador CLAUDE_CODE_PROCESS_WRAPPER

CLAUDE_CODE_PROCESS_WRAPPER está configurado y su valor no se puede usar, por lo que Claude Code se niega a iniciar el proceso afectado en lugar de ejecutarlo sin el lanzador. Los problemas de configuración se reportan con un mensaje que comienza con el nombre de la variable e indica la razón, por ejemplo:
Un lanzador que se inicia pero sale sin reemplazarse a sí mismo con Claude Code hace fallar la sesión que estaba iniciando, y la fila de la sesión en agent view reporta que el lanzador must exec, not daemonize, seguido de lo que el lanzador haya impreso. Una sesión que no puede iniciarse o comunicarse con el servicio en segundo plano debido al lanzador reporta el problema del lanzador como la razón dentro de Couldn't reach the background service (...). Qué hacer:
  • Configura la variable con la ruta absoluta de un ejecutable que termine llamando a exec "$@". Consulta el contrato del lanzador para ver el contrato completo
  • Revisa /status, que muestra el comando de lanzamiento resuelto en su entrada Self-exec y advierte cuando el servicio en segundo plano en ejecución no coincide con él, o ejecuta claude daemon status desde un shell
  • Después de corregir el valor en el bloque env de la configuración, reinicia el servicio en segundo plano con claude daemon stop --any para que el siguiente envío inicie uno envuelto por el lanzador

EUNKNOWN al iniciar una sesión en segundo plano

Windows se negó a iniciar un programa con un código de error que no tiene nombre estándar, por lo que el fallo aparece como EUNKNOWN. La causa habitual es una política de restricción de software, como Group Policy o AppLocker, que bloquea el programa que se está iniciando. El error aparece cuando inicias una sesión en segundo plano con /background o claude --bg:
En algunas cuentas el mensaje dice daemon en lugar de background service. En una instalación con npm, un EUNKNOWN que aparece mientras npm install -g @anthropic-ai/claude-code está reemplazando el binario tiene la misma causa que EACCES durante una reinstalación y desaparece cuando reintentas después de que la instalación termina. Claude Code inicia el servicio en segundo plano a través de PowerShell para que el servicio sobreviva al cierre de la terminal, usando PowerShell 7 cuando está instalado y Windows PowerShell 5.1 en caso contrario. Cuando ninguno de los dos PowerShell puede ejecutarse, Claude Code inicia el servicio directamente, por lo que una política que bloquea solo PowerShell no causa este error. Antes de v2.1.212, Claude Code usaba solo Windows PowerShell 5.1 para iniciar el servicio, por lo que cualquier máquina donde Group Policy bloqueaba PowerShell 5.1 fallaba con Couldn't start the session — EUNKNOWN: unknown error, uv_spawn, incluso con PowerShell 7 instalado. Qué hacer:
  • Si el mensaje dice Couldn't start the session, actualiza a v2.1.212 o posterior. En versiones anteriores también puedes ejecutar primero claude daemon run en una terminal aparte y luego iniciar la sesión en segundo plano nuevamente. Ese comando ejecuta el servicio en segundo plano en primer plano en la terminal, por lo que el servicio dura solo mientras esa terminal permanezca abierta.
  • Si una instalación con npm estaba reemplazando el binario, espera a que termine y luego inicia la sesión en segundo plano nuevamente
  • Si el error aparece en v2.1.212 o posterior sin que se esté ejecutando ninguna instalación con npm, consulta con tu administrador de Windows si una política de restricción bloquea el ejecutable de Claude Code
  • Si el servicio en segundo plano se detiene cuando cierras la terminal, Claude Code lo inició sin PowerShell. Instala PowerShell 7, o pide a tu administrador que desbloquee PowerShell, para que el servicio pueda sobrevivir a la terminal.

EACCES al iniciar una sesión en segundo plano

Claude Code no pudo ejecutar su propio binario para iniciar el servicio en segundo plano que aloja las sesiones en segundo plano. En una instalación con npm, esto generalmente significa que npm install -g @anthropic-ai/claude-code estaba reemplazando el binario en ese momento, ya sea que lo ejecutaras tú o el actualizador automático. El error aparece cuando abres una sesión desde agent view:
Cuando inicias una sesión con /background o claude --bg, la misma razón aparece dentro de Couldn't reach the background service (...). Durante el mismo periodo de reinstalación el error puede nombrar otro código, como ENOENT o ENOEXEC, o EUNKNOWN o EPERM en Windows; un EUNKNOWN que persiste tras varios reintentos tiene una causa diferente. En una instalación con npm, Claude Code espera a que la reinstalación termine y reintenta por su cuenta: hasta diez segundos, y hasta dos minutos mientras una instalación de Claude Code con npm siga visiblemente en ejecución en la máquina, lo que cubre el caso de otro proceso de Claude Code que descarga una actualización. Cuando la instalación supera esa espera, el fallo nombra la actualización en lugar del código de error sin más:
Antes de v2.1.257, la espera terminaba a los diez segundos en todos los casos, por lo que este error aparecía mientras otro proceso de Claude Code aún estaba descargando una actualización. Antes de v2.1.246, Claude Code fallaba de inmediato, sin esperar. Qué hacer:
  • Espera unos segundos y luego abre la sesión o haz el envío nuevamente. Cuando el mensaje dice que Claude Code se está actualizando, reintenta después de que la actualización termine.
  • Si el error persiste sin que se esté ejecutando ninguna instalación con npm, tu usuario no puede ejecutar el binario instalado. Revisa sus permisos y los de su directorio, o reinstala Claude Code.

El servicio en segundo plano salió antes de estar disponible

El proceso que Claude Code inició como el servicio en segundo plano salió antes de aceptar conexiones, por lo que Claude Code no pudo abrir tu sesión. Cuando el servicio imprimió un error antes de salir, la razón entre paréntesis indica el código de salida o la señal y la primera línea que imprimió el servicio, que nombra lo que lo detuvo:
Cuando abres una sesión desde agent view, la misma razón aparece después de Couldn't start the background service —. Cuando el servicio no imprimió nada antes de salir, el mensaje dice nothing on stderr en su lugar. Claude Code reporta el fallo con la línea de error del servicio. Antes de v2.1.246, el fallo aparecía solo después de una espera de 45 segundos, como background service did not become reachable within 45s, sin la línea de error del servicio. Dos razones citadas tienen causas conocidas:
  • Error: claude native binary not installed.: una instalación con npm estaba reemplazando el binario de Claude Code en ese momento, por lo que el servicio ejecutó el marcador de posición de npm en su lugar. Reintenta después de que la instalación termine; si la línea persiste sin ninguna instalación en ejecución, completa la instalación con npm. Antes de v2.1.257, una autoactualización con npm en macOS producía este fallo en cada inicio durante el periodo de instalación.
  • nothing on stderr con código de salida 1, en cada inicio, en Windows: daemon.lock nombra un proceso al que Claude Code no puede enviar señales ni demostrar que ya no existe, por lo que cada nuevo servicio concluye que otro mantiene el bloqueo y sale. Un bloqueo cuyo escritor Claude Code puede demostrar que ya no existe se reemplaza automáticamente y no produce este fallo. Cuando el fallo se repite en cada inicio, elimina ~/.claude/daemon.lock y luego abre la sesión o haz el envío nuevamente. Antes de v2.1.257, un bloqueo así impedía cada inicio hasta que eliminaras el archivo.
Qué hacer:
  • Si el mensaje cita una línea, corrige lo que nombra y luego abre la sesión o haz el envío nuevamente. El siguiente intento vuelve a iniciar el servicio
  • Ejecuta claude daemon status para verificar si hay un servicio en ejecución ahora

El directorio de trabajo ya no existe al iniciar una sesión en segundo plano

El directorio en el que iniciaste una sesión en segundo plano se eliminó mientras la sesión se estaba iniciando. Claude Code no inicia la sesión, y el mensaje nombra el directorio faltante:
Antes de v2.1.257, la sesión parecía iniciarse y luego se mostraba en agent view como una fila fallida con la misma razón. Antes de v2.1.281, este mensaje también aparecía cuando el directorio ya no existía antes de que iniciaras la sesión. Ese caso reporta could not be resolved on disk. Qué hacer:
  • Vuelve a crear el directorio que nombra el mensaje, o haz el envío desde un directorio que exista, y luego inténtalo de nuevo

Espacio de trabajo no confiable al enviar una sesión en segundo plano

Iniciaste o reiniciaste una sesión en segundo plano en un directorio en el que no has confiado, y el diálogo de confianza del espacio de trabajo no pudo aparecer para preguntarte. Claude Code no inicia la sesión:
Desde una terminal en el propio directorio de la sesión, el mismo comando muestra el diálogo de confianza en su lugar e inicia la sesión una vez que aceptas. Este mensaje aparece donde no puede mostrarse ningún diálogo, como en un script, o cuando reinicias una sesión desde un directorio distinto al suyo. Dos variantes nombran una causa diferente:
  • The home directory is trusted one session at a time: el directorio de la sesión es tu directorio home. Claude Code nunca guarda la confianza para el directorio home, por lo que haber aceptado el diálogo allí en una sesión anterior no cuenta.
  • <path> could not be resolved on disk: Claude Code no pudo encontrar el directorio de la sesión en el disco.
Antes de v2.1.286, en Windows, este mensaje también podía aparecer en un directorio en el que ya habías confiado, si su registro de confianza se había guardado con la ruta en mayúsculas y minúsculas diferentes. Actualiza a v2.1.286 o posterior. Qué hacer:
  • Ejecuta claude en el directorio que nombra el mensaje y acepta el diálogo de confianza, y luego ejecuta el comando nuevamente
  • Para el mensaje del directorio home, ejecuta el comando desde una terminal en tu directorio home para que el diálogo pueda aparecer, o inicia la sesión desde un directorio de proyecto en su lugar
  • Para el mensaje could not be resolved on disk, vuelve a crear el directorio, o inicia una nueva sesión desde un directorio que exista

Errores de wrapper e IDE

Estos errores provienen del programa que inició Claude Code para usted, como una extensión de IDE o una aplicación del Agent SDK, en lugar de provenir de Claude Code en sí.

El proceso de Claude Code salió con código N

El proceso claude subyacente salió con un código distinto de cero. El código de salida por sí solo no indica qué falló: el error real está en la propia salida del proceso, que el wrapper añade cuando la capturó y de lo contrario mantiene en sus registros.
En Windows, la compilación nativa puede salir con código 4294967295 justo después de que se completa un turno. Cuando esa salida llega a un límite de turno, sin mensaje esperando y sin tarea de fondo ejecutándose, la extensión de VS Code cierra la sesión silenciosamente en lugar de mostrar este error. Su siguiente mensaje reanuda la conversación. Antes de v2.1.273, la extensión mostraba el error para esa salida en cada límite de turno, aunque nada se perdiera. Qué hacer:
  • En VS Code, siga el enlace Ver registros de salida que se muestra con el error para ver el fallo subyacente
  • En una aplicación del Agent SDK, capture el error alrededor de su bucle de mensajes. Las entradas bajo Salida del proceso CLI cubren lo que su código recibe en cada lenguaje de SDK.
  • Ejecute claude en una terminal en el mismo proyecto. El fallo generalmente se reproduce allí con su mensaje de error real, que luego puede buscar en esta página.
  • Ejecute claude doctor en una terminal para verificar la instalación y la configuración

No se pudo localizar la CLI de Claude en PATH

La extensión de VS Code muestra este error en Windows cuando abre Claude Code en la terminal integrada, el shell de la terminal es PowerShell y la extensión no puede encontrar el ejecutable claude instalado en PATH. La extensión se niega a iniciar Claude Code hasta que encuentre el claude instalado en PATH.
Qué hacer:
  • Abra una nueva ventana de PowerShell fuera de VS Code y ejecute where.exe claude. Si no imprime una ruta, la CLI no está en su PATH: agregue su directorio de instalación siguiendo Verifique su PATH. Si imprime una ruta, la entrada proviene de su perfil de PowerShell o de un cambio de PATH que VS Code aún no ha recogido; los próximos dos pasos cubren esos casos.
  • Establezca la entrada de PATH como una variable de entorno de usuario o sistema, no en su perfil de PowerShell. La extensión no ejecuta su perfil, por lo que una edición de PATH que vive solo allí nunca la alcanza.
  • Reinicie VS Code después de cambiar PATH. La extensión verifica el PATH que VS Code capturó al inicio, por lo que un cambio de PATH solo tiene efecto después de un reinicio.

La conexión a Claude Code terminó antes de que este mensaje se completara

La extensión de VS Code envió su mensaje al proceso claude, y la conexión terminó sin un error antes de que el proceso lo reconociera o lo completara. La extensión no puede saber si el mensaje fue procesado, por lo que le pide que lo envíe de nuevo:
Qué hacer:
  • Envíe el mensaje de nuevo. El siguiente mensaje inicia un nuevo proceso claude que reanuda la conversación.
  • Si se repite, ejecute claude en una terminal en el mismo proyecto. Un fallo que sigue terminando el proceso generalmente se reproduce allí con su mensaje de error real.

Advertencias y errores de Rewind

Estos mensajes provienen de una restauración de código /rewind. Restored the code, but skipped N files es una advertencia que indica que Claude Code omitió algunas rutas. No files were restored es un error que significa que no restauró nada.

Restored the code, but skipped files

Una restauración de código /rewind omitió una o más rutas rastreadas en lugar de escribir o eliminar a través de ellas. Claude Code omite una ruta cuando:
  • es, o se convirtió en, un enlace simbólico, enlace duro u otro archivo no regular
  • su directorio cambió desde el punto de control
  • su copia de seguridad no se puede leer de forma segura
Las rutas omitidas mantienen su contenido actual. Antes de v2.1.216, /rewind escribía y eliminaba a través de enlaces en rutas rastreadas, y no informaba de una restauración parcial.
Qué hacer:
  • Identifique qué archivos se omitieron para poder manejar cada uno con los pasos a continuación. El mensaje solo proporciona un recuento; el registro de depuración en ~/.claude/debug/<session-id>.txt nombra cada ruta omitida mientras se ejecuta la restauración, así que active el registro de depuración con /debug antes de su próxima restauración. En macOS o Linux, puede encontrar los enlaces directamente: find . -type l para enlaces simbólicos y find . -type f -links +1 para archivos con enlaces duros.
  • Si un archivo omitido es un enlace que creó a propósito, como un archivo de configuración administrado por un gestor de dotfiles o un archivo con enlace duro por herramientas como pnpm, la restauración dejó su contenido intacto. Para deshacer los cambios de la sesión en él, pida a Claude que revierta la edición o edite el archivo usted mismo
  • Si no creó el enlace, inspeccione la ruta antes de confiar en su contenido

No files were restored

Claude Code muestra este mensaje cuando restaura código con /rewind y no puede restaurar ninguno de los archivos en ese punto de control. Para cada archivo, falta la copia de seguridad que Claude Code guardó antes de editarlo, o Claude Code no pudo escribir o eliminar el archivo.
Claude Code elimina las copias de seguridad de una sesión en el barrido de retención, por defecto aproximadamente 30 días después de que la sesión guardara una por última vez. Si reanuda una sesión después de eso, /rewind aún enumera sus puntos de control, pero la restauración a uno de ellos puede fallar con este error. Si el mensaje también dice N paths were skipped for link safety, consulte Restored the code, but skipped files para esas rutas. Cuando bifurca una sesión, por ejemplo con --fork-session o /branch, Claude Code copia las copias de seguridad de la sesión original en la bifurcación. Cuando Claude Code no puede copiar una copia de seguridad, por ejemplo porque el disco está lleno, esa copia de seguridad falta en la bifurcación. La restauración a un punto de control que la necesita puede fallar con este error. Qué hacer:
  • Deshaga los cambios de otra manera: pida a Claude que revierta sus ediciones, o restaure los archivos desde el control de versiones. Cuando las copias de seguridad desaparecen, ejecutar /rewind nuevamente falla de la misma manera.
  • Si Claude Code no pudo escribir o eliminar un archivo, corrija lo que bloquea la escritura, como los permisos de archivo, luego ejecute /rewind nuevamente.
  • Para mantener las copias de seguridad más tiempo en futuras sesiones, aumente cleanupPeriodDays.
Antes de v2.1.260, Claude Code omitía silenciosamente los archivos cuyas copias de seguridad faltaban, y la restauración parecía tener éxito.

Advertencias de guardado de sesión

Claude Code muestra estas advertencias en una línea persistente debajo del cuadro de entrada cuando no está guardando la transcripción de su sesión. La sesión sigue funcionando de cualquier forma; las advertencias le indican que la sesión puede faltar en --resume más adelante.

Las escrituras de transcripción están fallando

Claude Code guarda la transcripción en disco mientras trabaja, y sus escrituras en el archivo de transcripción están fallando. El mensaje nombra la causa con el código de error subyacente, por ejemplo un disco lleno:
La advertencia aparece en diferentes puntos dependiendo del error:
  • En el primer fallo para condiciones que no se resuelven por sí solas: un disco lleno, una cuota de disco excedida, un sistema de archivos de solo lectura, una ruta que supera el límite de longitud del sistema de archivos, o, en macOS y Linux, un error de permiso
  • Después de fallos repetidos que abarcan al menos un minuto para todo lo demás, incluidos errores de permiso en Windows, donde un escaneo antivirus puede fallar una única escritura que luego tiene éxito al reintentar
Antes de v2.1.217, Claude Code descartaba las escrituras fallidas sin una advertencia, y un --resume posterior que faltaban mensajes recientes era el primer signo. Qué hacer:
  • Corrija la condición que nombra el código de error: libere espacio en disco para ENOSPC; aumente o borre la cuota para EDQUOT; restaure el acceso de escritura a la ubicación de la transcripción para EACCES, EPERM, o EROFS
  • La advertencia se borra por sí sola en la siguiente escritura exitosa; no se necesita reiniciar
  • Los mensajes enviados mientras se mostraba la advertencia aún pueden faltar cuando reanude la sesión más adelante

El guardado de transcripción está desactivado porque CLAUDE_CODE_SKIP_PROMPT_HISTORY está configurado

Esta sesión comenzó con CLAUDE_CODE_SKIP_PROMPT_HISTORY configurado, por lo que Claude Code no escribe transcripción ni historial de indicaciones para ella:
La variable es una exclusión intencional para sesiones de scripts efímeros, pero también puede llegar a una sesión a través de un perfil de shell, un script contenedor, o un proceso padre que la exportó. Qué hacer:
  • Si configuró la variable a propósito, no se necesita ninguna acción; el aviso confirma que la sesión no aparecerá en --resume, --continue, o en el historial de flecha hacia arriba
  • Si no lo hizo, elimine la variable del shell o script que inicia claude, luego inicie una nueva sesión. Los mensajes de la sesión actual no se guardan retroactivamente.

El guardado de transcripción está desactivado debido a un marcador CLAUDE_CODE_CHILD_SESSION heredado

Claude Code establece CLAUDE_CODE_CHILD_SESSION en los subprocesos que genera, y trata una sesión interactiva que lo hereda como anidada: Claude Code no guarda transcripción para ella, por lo que las sesiones que Claude mismo inicia no llenan su lista de --resume. Este aviso significa que su sesión actual heredó el marcador:
El aviso es esperado cuando ejecutó claude desde dentro de otra sesión de Claude Code; señala una clasificación errónea cuando el marcador se filtró a través de un intermediario de larga duración, por ejemplo una terminal, sesión de screen, o lanzador que una sesión de Claude Code originalmente inició. Dentro de tmux, Claude Code detecta un marcador que llegó a través del entorno global del servidor tmux y sigue guardando, por lo que este aviso no aparece para ese caso. Qué hacer:
  • Si inició esta sesión desde dentro de otra sesión de Claude Code a propósito, no se necesita ninguna acción
  • Si esta es una sesión de nivel superior, salga y reinicie con CLAUDE_CODE_FORCE_SESSION_PERSISTENCE=1 configurado. El guardado se aplica desde el reinicio, por lo que los mensajes enviados antes no se guardan.
  • Para corregir futuros lanzamientos desde la misma terminal o lanzador, elimine CLAUDE_CODE_CHILD_SESSION de su entorno

Advertencias de configuración

Claude Code escribe la mayoría de estos mensajes en stderr, no en la conversación, y escribe la mayoría de ellos al iniciar. Una entrada lo indica cuando su mensaje aparece en otro lugar, como en el registro de depuración o como un aviso de inicio en la vista de conversación, o en otro momento, como la línea de diagnóstico de modelo no reconocido en el momento de la solicitud.

Claude Code se cerró después de un error de interfaz irrecuperable

Claude Code imprime este mensaje cuando se cierra porque su interfaz de terminal encontró un error del que no puede recuperarse, en cualquiera de los renderizadores. La segunda oración aparece solo cuando el error ocurrió mientras el renderizador de pantalla completa se estaba iniciando:
Qué hacer:
  • Inicie Claude Code de nuevo. Para retomar la conversación, ejecute claude --resume en el mismo directorio.
  • Si el mensaje menciona el renderizador de pantalla completa, Fullscreen rendering dice qué hace el siguiente inicio, que depende de cómo activó la pantalla completa, y cómo intentar pantalla completa de nuevo o mantener el renderizador clásico.
Antes de v2.1.236, Claude Code se cerraba sin imprimir un mensaje después de este tipo de error.

Las descripciones de agentes superan el límite de 15.0k tokens

Claude Code muestra esta advertencia como un aviso de inicio en la vista de conversación en lugar de en stderr. Las descripciones combinadas de sus subagentes, excepto las integradas, superan 15,000 tokens según las estima Claude Code. Cada agente cuenta su nombre más su frontmatter description. Claude Code carga cada agente independientemente de si el total supera el límite, por lo que la advertencia no cambia lo que se carga.
Qué hacer:
  • Acorte el frontmatter description de sus archivos de agente, o pida a Claude que los recorte por usted.
  • Elimine los archivos de agente que ya no utiliza.

Hook needs quotes around a path with a space

Esta notificación en la vista de conversación significa que el script de un hook no se ejecutó porque su ruta tiene un espacio y no está entre comillas. Ese hook es un hook asyncRewake en forma de shell. En su command, un intérprete como python3 va seguido de un marcador de posición de ruta sin comillas, y la ruta resuelta contiene un espacio. La notificación comienza con el nombre del evento del hook y nombra el script:
Qué hacer:
  • En el command del hook que ejecuta el script que nombra la notificación, encierra la ruta entre comillas dobles. En un archivo JSON, escríbelo como "command": "python3 \"${CLAUDE_PLUGIN_ROOT}/hooks/check.py\"".

Instruction file not loaded

Este aviso en la vista de conversación de una sesión interactiva significa que un archivo de memoria que existe no se cargó. Hay una restricción de lectura vigente.
El paréntesis nombra el motivo, por ejemplo:
  • a Read deny rule covers it: una regla deny de Read coincide con la ruta del archivo tal como está escrita o con el destino al que lleva un enlace en ella
  • it's read from outside your working directories, where reads are blocked: el archivo se resuelve fuera de los directorios de trabajo mientras permissions.blockReadsOutsideWorkingDirectories está activado
  • where it leads couldn't be worked out: por ejemplo, el archivo es un enlace que lleva de vuelta a sí mismo, directamente o a través de otros enlaces
Cuando el propio archivo de memoria de un subdirectorio no se puede cargar mientras Claude trabaja con archivos allí, las mismas líneas aparecen en la conversación durante el turno. Cuando se retienen más archivos de los que nombran las líneas, una línea final cuenta el resto, como and 3 more instruction files not loaded. Qué hacer:
  • Nada, si la restricción es intencionada: la sesión se ejecuta sin las instrucciones de ese archivo.
  • Para cargar un archivo retenido porque a Read deny rule covers it, elimina o acota esa regla. Luego inicia una nueva sesión.
  • Para cargar un archivo retenido porque it's read from outside your working directories, where reads are blocked, muévelo a él o al destino de su enlace dentro de los directorios de trabajo. Luego inicia una nueva sesión.
  • Para cargar un archivo retenido porque where it leads couldn't be worked out, comprueba si el archivo es un enlace que lleva de vuelta a sí mismo. Si lo es, apunta el enlace a un archivo que exista o pon un archivo normal en su lugar. Luego inicia una nueva sesión.
Antes de v2.1.292, el aviso nombraba el archivo al final de la misma línea, después del motivo.

Una skill, comando o flujo de trabajo no se cargó porque su nombre está reservado

Una carpeta de skill, un frontmatter name, un archivo o subcarpeta en .claude/commands/, o un flujo de trabajo guardado utiliza el nombre anthropic-skills o un nombre que comienza con anthropic-skills:. Claude Code reserva ese nombre para skills sincronizadas desde claude.ai y no carga ese elemento. Claude Code muestra esta advertencia como un aviso de inicio en la vista de conversación en lugar de en stderr:
El aviso nombra qué cambiar para el primer elemento que rechazó: una carpeta o archivo para renombrar, una línea name: para editar, o un flujo de trabajo para renombrar. Cuando se rechazó más de un elemento, el aviso termina con un recuento como · 2 more, y el registro de depuración nombra cada uno. Qué hacer:
  • Renombre el elemento que nombra el aviso, o edite la línea name: a la que apunta, luego reinicie la sesión.
Antes de v2.1.282, Claude Code cargaba skills y comandos con estos nombres.

Skill or command name refused

Este aviso de inicio significa que Claude Code rechazó el nombre de al menos un skill o comando personalizado, por lo que no se cargó o se cargó sin su campo name:
  • No cargado: Claude Code rechazó el nombre con el que se conoce un skill o comando, como el nombre de su directorio o el nombre o subcarpeta de un archivo de comando. No aparece en el menú / y Claude no puede invocarlo. Su línea en el registro de depuración dice <name> is not offered.
  • Campo name ignorado: Claude Code rechazó el name del frontmatter de un skill. El skill se sigue cargando, pero el menú / no muestra el valor de name y escribirlo no invoca el skill. Su línea en el registro de depuración dice <name value> is not shown for <skill>.
Qué hacer:
  • Inicia Claude Code con claude --debug desde tu shell y busca [names] en el registro de depuración. Cada nombre que cuenta el aviso tiene una línea ahí. La línea representa algunos caracteres ocultos como códigos, como \u{200B} para un espacio de ancho cero, para que puedas ver dónde están.
  • Elimina los caracteres que un nombre de skill no puede contener renombrando la carpeta o el archivo o editando la línea name:, o acorta un nombre que supere los 256 caracteres. Luego reinicia la sesión, a menos que el archivo esté en un directorio en el que Claude Code detecta cambios. Para un skill de un plugin que no escribiste, pide al autor del plugin que lo renombre.

El espacio de trabajo no ha sido confiable

Claude Code encontró reglas permissions.allow o entradas permissions.additionalDirectories en el archivo .claude/settings.json o .claude/settings.local.json del proyecto y no las aplicó, porque las reglas de permiso del proyecto requieren confianza del espacio de trabajo. El recuento, el nombre de la configuración y el archivo nombrado en el mensaje varían según su configuración. Las reglas deny y ask no se ven afectadas.
Qué hacer:
  • Ejecute claude en el directorio y acepte el diálogo de confianza. Project allow rules and workspace trust dice qué carpeta cubre esa aceptación.
  • En modo no interactivo con -p no se muestra ningún diálogo. Establezca la entrada hasTrustDialogAccepted en ~/.claude.json usando la clave exacta projects que imprime el mensaje.
  • Si el mensaje menciona .claude/settings.local.json e inició Claude Code fuera de un repositorio git o en su directorio de inicio, actualice a v2.1.200 o posterior. Las versiones 2.1.196 a 2.1.199 trataban su propio .claude/settings.local.json como suministrado por el repositorio en esos espacios de trabajo. En v2.1.207 y posterior, actualizar no es suficiente fuera de un repositorio git si no ha confiado en la carpeta: determinar que una carpeta no está dentro de un repositorio ejecuta git, y Claude Code ejecuta esa verificación solo después de que acepte el diálogo de confianza, así que use el primer paso. Su directorio de inicio y cualquier otro directorio de configuración están exentos y no esperan el diálogo. Consulte Project allow rules and workspace trust.

El directorio de trabajo es una ruta de red

Claude Code no agrega rutas de red como directorios de trabajo. Buscar una ruta de red puede contactar al host que nombra, y en Windows ese contacto puede enviar al host sus credenciales, por lo que Claude Code rechaza la ruta sin buscarla. Ve este mensaje cuando ejecuta /add-dir con tal ruta, o como una advertencia al iniciar. Cuando aparece al iniciar, Claude Code se inicia sin ese directorio.
Las rutas que Claude Code rechaza de esta manera incluyen:
  • Recursos compartidos UNC como \\server\share
  • Rutas de montaje automático como /net/<host>, a menos que hayas iniciado Claude Code desde un directorio bajo el montaje automático de ese host. Las lecturas bajo ese montaje automático siguen pasando por la verificación de rutas de red.
  • Rutas locales que alcanzan una ubicación de red a través de un enlace simbólico o unión
Las letras de unidad asignadas y las rutas \\wsl$ no cuentan como rutas de red. Qué hacer:
  • En Windows, asigne el recurso compartido a una letra de unidad, por ejemplo con net use Z: \\server\share, y pase la unidad al iniciar con claude --add-dir Z:\.
  • En macOS o Linux, monte el recurso compartido en una ruta local y agregue esa ruta en su lugar.
  • Si la ruta está en permissions.additionalDirectories, elimínela del archivo de configuración que la enumera.
Antes de v2.1.257, Claude Code aceptaba una ruta de red accesible como directorio de trabajo.

La configuración remota administrada no se pudo cargar

Su sesión es elegible para configuración administrada por servidor, pero Claude Code no pudo obtenerla o no pudo aplicar lo que el servidor devolvió, por lo que muestra esta advertencia en sesiones interactivas. La causa entre paréntesis nombra lo que falló, como network error, request timed out o authentication rejected (401). La causa no setting in the server response could be applied as written significa que el servidor respondió pero ninguna de las configuraciones que devolvió pasó validación. Antes de v2.1.282, esta causa decía server returned invalid settings. El resto de la línea dice qué política ejecuta la sesión:
  • Configuración almacenada en caché de una obtención anterior exitosa: Claude Code ejecuta la sesión en esa política almacenada en caché, excepto las variables de entorno retenidas, y la línea dice using cached policy.
  • Sin caché: Claude Code ejecuta la sesión sin configuración administrada por servidor, y la línea dice no remote policy applied.
Qué hacer:
  • Actúe sobre la causa que nombra el mensaje: para una causa de red, verifique que esta máquina pueda alcanzar api.anthropic.com; para una causa de autenticación, verifique su inicio de sesión con /status
  • Para no setting in the server response could be applied as written, pida a su administrador que corrija la configuración en el servidor
  • Ejecute /status o claude doctor para el diagnóstico completo
Antes de v2.1.248, Claude Code reportaba una obtención de configuración fallida solo en el registro de depuración.

La configuración administrada no fue aprobada

La configuración administrada por servidor de su organización incluye configuración que necesita su aprobación, y usted rechazó el diálogo de aprobación de seguridad, por lo que Claude Code se cierra sin aplicarla:
Qué hacer:
  • Inicie Claude Code de nuevo y apruebe el diálogo para continuar bajo la configuración de su organización. Un diálogo rechazado no se recuerda, por lo que aparece de nuevo en el siguiente inicio.
  • Si no está seguro acerca de una configuración que enumera el diálogo, pregunte a quien mantenga la configuración administrada de su organización antes de aprobar

La configuración administrada bloquea el modelo predeterminado

Su configuración administrada de la organización bloquea el modelo al que se resuelve la opción Predeterminada y cada modelo al que podría reducirse. Una sesión que comenzaría en la opción Predeterminada se cierra al iniciar en lugar de ejecutar un modelo bloqueado. Qué mensaje ve depende de la configuración que lo bloquea. Cuando una lista deniedModels lo bloquea, el mensaje dice:
Cuando una lista availableModels con availableModelsMatch establecido en "exact" la omite, el mensaje dice:
Qué hacer:
  • Si administra la configuración, agregue un modelo que sus usuarios puedan ejecutar a availableModels, o estreche las entradas deniedModels que bloquean cada alternativa. Block specific models or versions describe cómo la opción Predeterminada se reduce
  • Si no las administra, envíe el mensaje a su administrador. Sus propios archivos de configuración no pueden ampliar una lista availableModels o deniedModels administrada

La configuración administrada no permite este proveedor de API

Su configuración administrada de la organización establece una lista allowedProviders, y el proveedor de API de la sesión no está en ella o la sesión usa un endpoint que no está fijado de la manera que esa entrada requiere. Claude Code se niega al iniciar, antes de un inicio de sesión, o cuando la sesión contacta a continuación la API. El mensaje comienza con los proveedores permitidos:
Cuando la lista está vacía, el mensaje dice en su lugar:
Cuando cada entrada no es reconocida, el paréntesis dice en su lugar (allowedProviders lists only unrecognized entries). Qué hacer:
  • Siga los pasos To continue: del mensaje
  • Si administra la configuración, las líneas del mensaje que comienzan con Admins: nombran la entrada a agregar o el valor a fijar, y la entrada allowedProviders dice qué bloque env de qué fuente puede fijarlo

El servidor MCP está bloqueado por la política administrada empresarial

Seleccionó Reconnect en un servidor en /mcp, o activó un servidor deshabilitado allí, y una configuración que restringe servidores MCP bloquea ese servidor. Claude Code se niega a conectarlo y muestra:
Cualquiera de estas configuraciones puede producir el mensaje: Qué hacer:
  • Verifique sus propios archivos de configuración de usuario y proyecto para una de estas configuraciones y cámbiela o elimínela
  • Si ninguna de sus propias configuraciones explica el bloqueo, pregunte a su administrador qué configuración administrada bloquea el servidor
Antes de v2.1.257, Reconnect y re-habilitar en /mcp podían conectar un servidor que una actualización de política a mitad de sesión bloqueó.

El nombre del servidor MCP está reservado

Este mensaje nombra uno de tus servidores MCP, cuyo nombre está entre los que Claude Code reserva, como los nombres de sus servidores integrados:
Qué hacer:
  • Renombra el servidor donde lo defines, por ejemplo de workspace a my-workspace
  • Para otros nombres reservados que debes evitar, consulta MCP configuration warnings

El documento de configuración administrada no se pudo analizar

Su organización implementa configuración administrada, y uno de los documentos implementados está presente pero no se puede analizar como un objeto JSON, por lo que Claude Code se cierra con código 1 al iniciar en lugar de ejecutarse sin la política que lleva el documento. La línea nombra la fuente fallida antes del mensaje:
La fuente es una de:
  • La ruta del archivo managed-settings.json o un archivo drop-in bajo managed-settings.d
  • El perfil de preferencias administradas de macOS, per-user managed preferences o device-level managed preferences
  • El valor del registro de Windows, Registry: HKLM\SOFTWARE\Policies\ClaudeCode\Settings
Find entries Claude Code dropped enumera lo que hace que cada fuente sea no analizable. Claude Code se niega a iniciar incluso cuando otra fuente de administrador entrega una política válida. Ve este error en sesiones interactivas, claude -p, sesiones del SDK de agente, sesiones en segundo plano, y la mayoría de subcomandos, claude doctor incluido. El rechazo falla cerrado a propósito: la configuración en un documento que Claude Code no puede analizar no se puede aplicar, e iniciar de todas formas ejecutaría sesiones sin los controles de la organización. Un problema de esquema en un documento analizable no produce este error. Find entries Claude Code dropped cubre qué hace Claude Code con uno. Cuando existe un directorio managed-settings.d/ pero no se puede enumerar, Claude Code reporta Managed settings drop-in directory could not be read: seguido del error subyacente en su lugar. Find entries Claude Code dropped cubre cuándo una falla de lectura se cierra al iniciar. Qué hacer:
  • Si administra la máquina, corrija el documento nombrado para que se analice como un objeto JSON, o elimine el archivo, perfil o valor del registro. Un managed-settings.json vacío cuenta como {} y no bloquea el inicio.
  • Si no lo hace, pida a su administrador que corrija el documento implementado. Nada en sus propios archivos de configuración causa o borra este error.

No se pudo leer la configuración de política administrada

Su organización implementa configuración administrada, y una de las fuentes implementadas existe pero no se pudo leer, por una razón como un error de E/S en lugar de que el sistema operativo niegue la lectura. Sin otra fuente de administrador suministrando una política, Claude Code se cierra al iniciar en lugar de ejecutarse sin la política que la fuente puede llevar:
En el mismo estado, los flujos de inicio de sesión, las solicitudes de API de una sesión que ya se está ejecutando, y el servidor claude gateway se rechazan con una variante de la primera línea que nombra allowedProviders. Una lectura que el sistema operativo negó, como en un archivo de solo raíz, no produce esta salida: la sesión se inicia sin las políticas de esa fuente. Para una fuente que no se puede analizar, Claude Code se cierra con un mensaje diferente que nombra la fuente. Qué hacer:
  • Si administra la máquina, corrija el problema que nombra la línea Detail: para que la fuente implementada se pueda leer, o elimine la fuente
  • Si no lo hace, envíe el mensaje a su administrador. Nada en sus propios archivos de configuración causa o borra este error
Antes de v2.1.285, solo las sesiones que iniciaron sesión con credenciales de claude.ai o Claude Console se cerraban con este mensaje, y una lectura que el sistema operativo negó también lo produjo.

Managed settings contain invalid entries, including PreToolUse/PermissionRequest hooks that are NOT loaded

Este bloque de stderr de una ejecución -p significa que una fuente de configuración administrada contiene una entrada de hook que Claude Code no puede cargar. Ese hook no se ejecuta, y cuando una línea indica que el campo hooks de la fuente se ignora, no se ejecuta ninguno de los hooks de esa fuente. Cada línea nombra la fuente, el campo cuando lo hay, y el problema, como un type de hook desconocido o un hook declarado fuera de la clave hooks:
Qué hacer:
  • Si administras la fuente, corrige o elimina cada entrada que enumera el bloque. Hook configuration muestra la forma que Claude Code espera bajo hooks.
  • Si la fuente de una línea es parent managed settings, la aplicación que inició Claude Code pasó esa entrada como configuración principal, así que repórtalo al desarrollador de esa aplicación
  • De lo contrario, envía el bloque a tu administrador
Antes de v2.1.300, una ejecución -p enumeraba este caso bajo el encabezado Managed settings failed to load; policies from the failed source are NOT in effect:.

otelHeadersHelper falló

Claude Code muestra esta advertencia como una notificación en la interfaz de terminal, una vez por sesión interactiva, cuando el script otelHeadersHelper falla o imprime salida que no cumple con los requisitos del script. Mientras el script sigue fallando, las exportaciones fallan y su backend de telemetría no recibe nada de la sesión. El texto después de See /status: dice qué falló, como el código de salida del script seguido de su salida de error:
Qué hacer:
  • Ejecute /status para leer el detalle de la falla.
  • Corrija el script para que salga 0 dentro de 30 segundos e imprima un objeto JSON de valores de encabezado de cadena en stdout. Consulte requisitos del script.
  • Si su organización implementa el script a través de configuración administrada, pida a quien la mantenga que lo corrija.
En modo no interactivo con -p, la misma falla aparece en stderr como otelHeadersHelper failed (OpenTelemetry export headers unavailable): <error> en su lugar.

headersHelper no ejecutado

Claude Code conectó un servidor MCP con solo sus headers estáticos y omitió el headersHelper del servidor, porque el asistente es un comando de shell y la carpeta no tiene confianza guardada. Una carpeta obtiene confianza guardada cuando establece su entrada en ~/.claude.json a mano o, fuera de su directorio de inicio, cuando acepta el diálogo de confianza para ella en una sesión interactiva. Consulte Trust a folder before its headersHelper runs para ver a qué servidores se aplica esta verificación. Claude Code escribe esta línea en modo no interactivo solo, una vez por servidor. En una sesión interactiva escribe el mismo rechazo en el registro de depuración en su lugar.
La clave projects que imprime el mensaje es la carpeta en la que Project allow rules and workspace trust dice que Claude Code basa la confianza. Aceptar el diálogo de confianza para una carpeta padre no satisface la verificación, y una sesión -p o SDK tampoco la satisface. Qué hacer:
  • Ejecute claude en la carpeta que nombra el mensaje, acepte el diálogo de confianza, luego ejecute su comando -p o SDK de nuevo
  • Establezca la entrada hasTrustDialogAccepted en ~/.claude.json usted mismo, usando la clave exacta projects que imprime el mensaje
  • Si inició la sesión en su directorio de inicio, trabaje desde un directorio de proyecto en el que haya confiado. Cuando acepta el diálogo de confianza en su directorio de inicio, Claude Code mantiene esa confianza solo para la sesión actual.

Regla Tool(content) malformada

Una regla de permiso en uno de sus archivos de configuración no tiene la forma Tool o Tool(content), por ejemplo porque el texto sigue al paréntesis de cierre o falta uno de los paréntesis. Claude Code omite la regla y la enumera en el diálogo de configuración no válida cuando se inicia una sesión interactiva, y en la salida de claude doctor:
Qué hacer:
  • En el archivo de configuración listado con el mensaje, reescriba la regla para que termine en su paréntesis de cierre, por ejemplo Bash(ls *) en lugar de Bash(ls) x
  • Deja los paréntesis dentro del contenido como están. Son literales, por lo que una regla como Edit(./Finance (2024)/**) es válida sin escapar
Antes de v2.1.260, Claude Code reportaba una regla con paréntesis sin emparejar como Mismatched parentheses.

No coincide con las verificaciones de permiso de archivo

Claude Code encontró una regla de permiso Write, NotebookEdit, MultiEdit o Glob permission rule con una ruta en uno de sus archivos de configuración, en configuración administrada, o en un valor de bandera --allowedTools, --disallowedTools o --settings. Verifica permisos de archivo solo contra reglas Edit y Read, por lo que nunca consulta una regla de ruta que nombre una de las otras herramientas de archivo. Mantiene la regla y no cambia nada más; la advertencia nombra la regla, su fuente entre paréntesis, y el reemplazo a escribir:
Qué hacer:
  • Reemplace las reglas Write(path), NotebookEdit(path) y MultiEdit(path) heredadas con Edit(path). Las reglas Edit cubren todas las herramientas de edición de archivos.
  • Excepto en --allowedTools, donde Claude Code acepta una regla Glob sin advertencia, reemplace las reglas Glob(path) con Read(path).
  • Corrija la regla en la fuente que nombra la advertencia entre paréntesis: una ruta de archivo de configuración, o la bandera misma para --allowed-tools y --disallowed-tools. Una ruta claude-settings-<hash>.json que no existe en el disco representa un valor --settings en línea. Corrija el JSON que pasa a esa bandera.
  • Deje las reglas de nombre de herramienta simple como Write o Glob solas. Claude Code las coincide en el nivel de herramienta y no advierte sobre ellas.
  • Si la fuente dice managed policy settings, reenvíe la advertencia a quien mantenga su configuración administrada, ya que no puede borrarla usted mismo.
En una sesión en segundo plano o con --output-format json o stream-json, Claude Code escribe la advertencia en el registro de depuración en lugar de stderr, por lo que la salida leída por máquina se mantiene limpia. Ejecute con --debug para capturarla en ~/.claude/debug/<session-id>.txt. Antes de v2.1.210, Claude Code aceptaba estas reglas sin una advertencia.

Tiene un comodín antes del resto del comando

Claude Code encontró una regla de permiso Bash allow cuyo * viene antes de una palabra posterior que determina cuál es el comando, como Bash(git * main) o Bash(git -C * status *), en uno de sus archivos de configuración, en configuración administrada, o en un valor de bandera --allowedTools o --settings. El * coincide con cualquier texto, incluidas opciones insertadas en esa posición: Bash(git * main) también aprueba git -c core.fsmonitor=<script> diff main, donde -c hace que git ejecute un programa que nombra el comando. Wildcard patterns muestra las reglas de coincidencia. La advertencia existe para que pueda estrechar una regla cuyo comodín es más amplio de lo que pretendía. Claude Code mantiene la regla y no cambia nada sobre cómo coincide; la advertencia nombra la regla y su fuente entre paréntesis:
Qué hacer:
  • Reemplace el * antes del subcomando con el valor exacto que significa: Bash(git checkout main) en lugar de Bash(git * main).
  • Mueva cada * después del subcomando: Bash(git status *) en lugar de Bash(git -C * status *). Escriba una regla por subcomando que desee permitir.
  • Corrija la regla en la fuente que nombra la advertencia entre paréntesis: una ruta de archivo de configuración, o la bandera --allowed-tools misma. Una ruta claude-settings-<hash>.json que no existe en el disco representa un valor --settings en línea. Corrija el JSON que pasa a esa bandera.
  • Si la fuente dice managed policy settings, reenvíe la advertencia a quien mantenga su configuración administrada, ya que no puede borrarla usted mismo.
En una sesión en segundo plano o con --output-format json o stream-json, Claude Code escribe la advertencia en el registro de depuración en lugar de stderr, por lo que la salida leída por máquina se mantiene limpia. Ejecute con --debug para capturarla en ~/.claude/debug/<session-id>.txt. Antes de v2.1.246, Claude Code aceptaba estas reglas sin una advertencia.

Denying Bash also turns off the PowerShell tool

Eliminaste toda la herramienta Bash, por ejemplo con --disallowedTools Bash o con una regla deny Bash o Bash(*) sin más en uno de tus archivos de configuración. En Windows con Git Bash instalado, denegar Bash también desactiva la herramienta PowerShell, por lo que la sesión se inicia sin ninguna herramienta de shell. Claude Code imprime esta advertencia al iniciar:
Qué hacer:
  • Para que Claude use PowerShell, establece CLAUDE_CODE_USE_POWERSHELL_TOOL en 1 en tu entorno o en el bloque env de un archivo de configuración, como muestra Enable the PowerShell tool. La herramienta PowerShell permanece entonces activada junto con tu regla deny de Bash.
  • Para bloquear comandos concretos en lugar de toda la herramienta, reemplaza la entrada Bash sin más por reglas acotadas como Bash(git push *) en el mismo archivo de configuración o flag. Claude conserva la herramienta Bash, y la herramienta PowerShell permanece desactivada hasta que también establezcas la variable o agregues una regla de permisos PowerShell acotada.
En una sesión en segundo plano o con --output-format json o stream-json, Claude Code escribe la advertencia en el registro de depuración en lugar de stderr. Ejecuta con --debug para capturarla en ~/.claude/debug/<session-id>.txt. Antes de v2.1.287, Claude Code desactivaba la herramienta PowerShell de la misma manera sin imprimir ninguna advertencia.

crossSessionInbound debe ser uno de accept, hold, refuse

Un archivo de configuración establece crossSessionInbound en un valor que Claude Code no reconoce, como el error tipográfico "reject". La segunda oración de la advertencia depende de qué archivo contiene el valor; en un archivo de usuario, proyecto, local o --settings dice:
En configuración administrada, Claude Code trata el valor no reconocido como refuse, el valor más restrictivo, y la advertencia dice que los mensajes entre sesiones se rechazan hasta que un administrador lo corrija. Para cómo la retención se combina con valores en sus otros archivos de configuración, consulte crossSessionInbound. Qué hacer:
  • Establezca la clave en "accept", "hold" o "refuse", o elimínela
  • Cuando la advertencia nombra configuración administrada, pida al administrador que corrija el valor
Antes de v2.1.248, Claude Code ignoraba un valor no reconocido sin advertencia.

ANTHROPIC_FOUNDRY_RESOURCE debe ser un nombre de recurso de Foundry

Estableciste ANTHROPIC_FOUNDRY_RESOURCE en algo distinto de un nombre de recurso de Microsoft Foundry sin más, como la URL del endpoint o su nombre de host. Claude Code rechazó el valor antes de enviar una solicitud. El mensaje aparece en lugar de la respuesta de Claude, no como una advertencia de inicio:
Qué hacer:
  • Establece ANTHROPIC_FOUNDRY_RESOURCE solo con el nombre del recurso y reinicia Claude Code. Para el endpoint https://my-resource.services.ai.azure.com/anthropic, el nombre es my-resource.
  • Para indicar en su lugar la URL completa del endpoint, establece ANTHROPIC_FOUNDRY_BASE_URL con la URL y elimina ANTHROPIC_FOUNDRY_RESOURCE, luego reinicia Claude Code. Claude Code acepta solo una de las dos variables.

El límite de 200K no se aplica

Estableció CLAUDE_CODE_DISABLE_1M_CONTEXT=1, que normalmente hace que auto-compaction mantenga sesiones en modelos de contexto 1M en una ventana de 200K, pero ningún umbral de compactación limita esta sesión a o por debajo de 200K, por lo que la conversación puede crecer más allá.
Claude Code aplica el límite de 200K por su cuenta para cada modelo que reconoce como teniendo una ventana nativa de 1M, y para ID de modelo que no reconoce compacta en la ventana que asume. La advertencia aparece cuando otra configuración derrota esa aplicación: Qué hacer:
  • Establezca CLAUDE_CODE_AUTO_COMPACT_WINDOW=200000, o la configuración autoCompactWindow a 200000, para que auto-compaction compacte en el límite de 200K
  • Si el mensaje nombra un ID de modelo que esta versión no reconoce, ejecute claude update. Una versión que reconoce el ID como un modelo de contexto 1M aplica el límite sin configuración adicional.
  • Si desea que la sesión use la ventana completa del modelo en su lugar, desestablezca CLAUDE_CODE_DISABLE_1M_CONTEXT; la advertencia reporta solo que el límite de 200K no se aplica
En una sesión en segundo plano o con --output-format json o stream-json, Claude Code escribe la advertencia en el registro de depuración en lugar de stderr.

ID de modelo no reconocido en una solicitud

Claude Code envió una solicitud para un ID de modelo que su versión de Claude Code no reconoce, y no encontró ninguna entrada modelOverrides que asigne ese ID a un modelo que sí reconoce. Claude Code aún envía la solicitud con el ID como lo configuró, y no se cierra ni cambia de modelo.
En un script o arnés que lee stderr, coincida con el prefijo [claude-code:unrecognized_model]. Después del prefijo y un espacio, Claude Code escribe un objeto JSON de una línea. Claude Code puede agregar campos a él en una versión posterior, así que ignore cualquier campo que no espere. Escribe al menos estos dos:
  • model: la cadena del modelo como la configuró
  • query_source: la ruta de solicitud que usó el modelo. Claude Code reporta sdk para una ejecución -p y un valor que comienza con agent: para un subagente.
Claude Code escribe la línea en uno de dos lugares, dependiendo de cómo la ejecute:
  • En modo no interactivo con -p, Claude Code la escribe en stderr bajo cada --output-format, para que pueda analizar stdout sin filtrar la línea
  • En una sesión interactiva o una sesión en segundo plano, Claude Code la escribe en el registro de depuración en su lugar; ejecute con --debug para capturarla en ~/.claude/debug/<session-id>.txt
Claude Code escribe la línea una vez por cadena de modelo por proceso. Escribe una línea separada para cada ID no reconocido adicional, como uno que un subagente o funcionalidad en segundo plano usa. Claude Code no escribe la línea para ID de proveedor que resuelve a un modelo que reconoce, como ID de Amazon Bedrock us.anthropic.claude-..., ID de plataforma de agente de Google Cloud con un sufijo de versión @, y nombres de implementación de Microsoft Foundry que contienen un ID de modelo Claude. Claude Code verifica el modelo detrás de un ARN de perfil de inferencia de aplicación de Amazon Bedrock en lugar del ARN mismo. No escribe ninguna línea para un ARN que no puede resolver, como uno mal escrito. Qué hacer:
  • Si estableció el ID a propósito, como un alias de LLM gateway, agregue una entrada modelOverrides a su archivo de configuración con el ID como su valor. Use un ID de modelo Anthropic como la clave, no un alias de familia como opus. Para my-proxy-model de la línea de ejemplo, agregue esta entrada:
    Claude Code entonces trata my-proxy-model como claude-opus-4-6 y deja de escribir la línea.
  • Si el ID nombra un modelo más nuevo que su versión de Claude Code, ejecute claude update
  • Si el ID es un error tipográfico, corrígalo en cualquiera de los lugares donde puede establecer un modelo o variables de alias que lo contiene. Si query_source comienza con agent:, corrígalo donde establece el modelo del subagente en su lugar.
Antes de v2.1.233, Claude Code no escribía ninguna línea cuando enviaba una solicitud para un ID de modelo que no reconocía.

Las entradas allow del sandbox se ignoran bajo un bloqueo administrado

Esta advertencia en /status y claude doctor significa que la configuración administrada establece allowManagedReadPathsOnly o allowManagedDomainsOnly, por lo que las entradas allowRead o allowedDomains del archivo que nombra no se aplican:
Para el bloqueo de red, la advertencia nombra sandbox.network.allowedDomains y allowManagedDomainsOnly, y dice only allowed domains (and WebFetch domain rules) from managed settings are honored. Qué hacer:
  • No es necesario que actúes ante la advertencia
  • Si necesitas esas rutas o dominios y la configuración administrada de tu organización establece el bloqueo, pide a tu administrador que los agregue a esa configuración. La advertencia permanece hasta que también elimines las entradas del archivo nombrado.
  • Para quitar la advertencia, elimina las entradas del archivo nombrado. En un archivo que compartes, como el .claude/settings.json de un proyecto, puedes dejar las entradas para los compañeros de equipo que no tienen el bloqueo y dejar que la advertencia siga apareciendo.

Archivos de máscara de sandbox obsoletos dejados por una sesión eliminada

claude doctor imprime esta advertencia en sus diagnósticos, y /status enumera la misma línea. Aparece en Linux y WSL2 cuando sandboxing está habilitado con aislamiento del sistema de archivos activado. Mientras se ejecuta un comando en sandbox, el sandbox mantiene una negación de escritura en un archivo que aún no existe creando un marcador de posición de lectura de 0 bytes de solo lectura allí, y lo elimina después. Una sesión eliminada antes de que se ejecute esa limpieza, por ejemplo por SIGKILL, deja los marcadores de posición atrás. Las sesiones posteriores los vinculan de solo lectura de nuevo en cada inicio, por lo que una escritura de configuración como guardar “Sí, y no preguntar de nuevo” falla donde uno se sienta.
Qué hacer:
  • Cierre cualquier otra sesión de Claude Code ejecutándose en ese proyecto, luego elimine cada archivo listado con rm. La advertencia nombra hasta tres archivos y cuenta el resto, así que reejecutar claude doctor después de eliminar hasta que la advertencia ya no aparezca. Un marcador de posición que el sandbox de otra sesión aún está usando es una parte viva de la protección de escritura de esa sesión
  • Si una opción de permiso que guardó con “Sí, y no preguntar de nuevo” no se mantuvo, guárdela de nuevo después de eliminar el marcador de posición
Antes de v2.1.257, claude doctor no marcaba estos archivos; las versiones anteriores dejan los mismos marcadores de posición atrás cuando se elimina una sesión.

Las respuestas parecen de menor calidad que lo habitual

Si las respuestas de Claude parecen menos capaces de lo que espera pero no se muestra ningún error, la causa suele ser el estado de la conversación en lugar del modelo en sí. Claude Code no cambia silenciosamente las versiones del modelo. Puede cambiar a un modelo de respaldo en estos casos:
  • Un --fallback-model configurado toma el control después de un error de disponibilidad, solo para ese turno, con un aviso en la transcripción
  • Una verificación de inicio de Amazon Bedrock o de la plataforma de agentes de Google Cloud encuentra su modelo predeterminado no disponible, o su cuenta pierde acceso a él durante la sesión
  • El respaldo automático de modelo en Fable 5.1, Fable 5, Opus 5.5, Sonnet 5.5 y Opus 5 mueve la sesión al modelo de respaldo de la categoría marcada, cuando esa categoría tiene uno, y muestra un aviso en la transcripción
La verificación de selección de modelo a continuación detecta el segundo y tercer caso; el primero aparece como un aviso de transcripción en lugar de un cambio de /model. La configuración del modelo explica cuándo se aplica cada respaldo. Verifique estos primero:
  • Selección de modelo: ejecute /model para confirmar que está en el modelo que espera. Una opción anterior de /model o una variable de entorno ANTHROPIC_MODEL pueden tenerlo en un modelo más pequeño del que pretendía.
  • Nivel de esfuerzo: ejecute /effort para verificar el nivel de razonamiento actual y auméntelo para depuración difícil o trabajo de diseño. Los valores predeterminados varían según el modelo, así que verifique antes de asumir que está por debajo del máximo. Consulte Ajustar nivel de esfuerzo para los valores predeterminados por modelo y el atajo ultrathink.
  • Presión de contexto: ejecute /context para ver qué tan llena está la ventana. Si está cerca de la capacidad, ejecute /compact en un punto natural o /clear para comenzar de nuevo. Consulte Explorar la ventana de contexto para ver cómo auto-compact afecta los turnos anteriores.
  • Instrucciones obsoletas: los archivos CLAUDE.md grandes u obsoletos y las definiciones de herramientas MCP consumen contexto y pueden dirigir las respuestas. La verificación /doctor marca archivos de memoria de gran tamaño y extensiones no utilizadas, y /context muestra el uso de tokens de herramientas MCP. Antes de v2.1.205, /doctor abría una pantalla de diagnósticos que marcaba archivos de memoria de gran tamaño y definiciones de subagentes.
Cuando una respuesta sale mal, retroceder generalmente funciona mejor que responder con correcciones. Presione Esc dos veces o ejecute /rewind para retroceder antes del turno incorrecto, luego reformule el mensaje con más especificidades. Corregir en el hilo mantiene el intento incorrecto en contexto, lo que puede anclar respuestas posteriores a él. Consulte Checkpointing. Si la calidad aún parece incorrecta después de verificar lo anterior, ejecute /feedback y describa qué esperaba versus qué obtuvo. La retroalimentación enviada de esta manera incluye la transcripción de la conversación, que es la forma más rápida para que Anthropic diagnostique una regresión real. Consulte Reportar un error si /feedback no está disponible en su entorno. Si Claude advierte sobre una inyección de mensaje sospechosa, o rechaza una solicitud debido a una inyección sospechada, y el texto que nombra la advertencia es contexto que Claude Code agrega a la conversación automáticamente en lugar de contenido de archivo o web, ejecute claude update e intente de nuevo. Si la advertencia se repite después de actualizar, repórtela en lugar de pegar el contenido marcado nuevamente en el mensaje. Antes de v2.1.201, Sonnet 5 rechazaba algunas solicitudes de la misma manera.

Reportar un error

Para errores de componentes que esta página no cubre, consulte la guía relevante: Si un error no aparece aquí o la corrección sugerida no ayuda:
  • Ejecute /feedback dentro de Claude Code para enviar la transcripción y una descripción a Anthropic. El comando también ofrece abrir un problema de GitHub rellenado previamente. El envío a Anthropic requiere autenticación. En Amazon Bedrock, Google Cloud’s Agent Platform, Microsoft Foundry y otros proveedores de terceros, o cuando no hay credenciales de Anthropic configuradas, /feedback guarda un archivo local que puede enviar a su representante de cuenta de Anthropic en su lugar.
  • Ejecute claude doctor desde su shell para un diagnóstico de solo lectura de su instalación, o ejecute la verificación /doctor dentro de Claude Code para encontrar y solucionar problemas de configuración
  • Consulte status.claude.com para incidentes activos
  • Busque problemas existentes en GitHub