Qué cambió el 4 de noviembre
Las notas de la versión v2.1.318 enumeran tres cambios en la forma en que Claude Code informa sobre un inicio de sesión que está a punto de terminar o que ya lo ha hecho.
- Una fecha de finalización legible. La versión "Añadió la fecha en que termina un inicio de sesión de claude.ai almacenado a
claude auth status(loginExpiresAt) y a los resultados JSON declaude -p(credential_expires_at)". - Una advertencia temprana para scripts. También "Añadió una advertencia de una línea en stderr a la salida de texto de
claude -p, comenzando 10 días antes de que termine un inicio de sesión de claude.ai almacenado". - Un fallo más claro. Se "Corrigió el fallo de inicio de sesión cuando un login de claude.ai almacenado alcanza su límite de tiempo: ahora lo indica, y en
claude -pnombra aclaude auth loginyclaude setup-token".
La misma versión corrigió un problema relacionado: "Se corrigieron los trabajos que salían con Not logged in cuando otra terminal o host vuelve a iniciar sesión en la misma cuenta y organización en el mismo home". La página de errores explica la causa para versiones anteriores: "Antes de la v2.1.318, Claude Code eliminaba el inicio de sesión almacenado durante ese inicio de sesión, antes de guardar el nuevo".
Antes de esta versión, la advertencia en la que podías confiar era la del inicio en una sesión interactiva. Ahora, un script o trabajo programado que llame a claude -p también puede ver la fecha y advertirte antes de que el trabajo se detenga.
Qué significa Login expired
La referencia de errores de Anthropic describe el estado con precisión: "Claude Code intentó renovar tu inicio de sesión de claude.ai guardado y el servicio OAuth rechazó el token de actualización almacenado, por lo que Claude Code borró las credenciales guardadas. Después de eso, cada solicitud al modelo se detiene localmente con este mensaje antes de llegar a la API, porque solo /login puede crear nuevas credenciales".
Tres detalles en esa descripción son importantes.
Se aplica al inicio de sesión de claude.ai. Ese es el inicio de sesión que creas con /login para un plan Pro, Max, Ultra, Team o Enterprise. Anthropic añade: "Las sesiones autenticadas con una clave API, CLAUDE_CODE_OAUTH_TOKEN o un proveedor externo no usan el inicio de sesión guardado y nunca ven este mensaje".
Claude Code detiene la solicitud por sí mismo. Las solicitudes al modelo se detienen antes de llegar a la API. Reintentar sin iniciar sesión devuelve el mismo mensaje en cada solicitud.
No es lo mismo que un token revocado. La documentación separa ambos: "Este no es el mismo estado que un token OAuth revocado o expirado. Esos mensajes informan de un rechazo devuelto por la API. El propio Claude Code produce Login expired para un inicio de sesión que ya no pudo renovar, por lo que no envía ninguna solicitud".
El mismo estado en scripts y el SDK
En el modo no interactivo y el Agent SDK, la redacción cambia. Anthropic da el mensaje como Failed to authenticate: OAuth session expired and could not be refreshed, con el código de error estructurado authentication_failed. Busca esta redacción en tus registros en lugar de la interactiva.
Mensajes que parecen similares
Vale la pena distinguir algunos vecinos en la página de errores:
- Not logged in. "No hay ninguna credencial válida disponible para esta sesión". La solución es la misma, pero la causa puede ser una variable de entorno faltante en lugar de un inicio de sesión expirado.
- Anthropic profile login expired. Un mensaje de inicio de sesión expirado que termina con una instrucción para volver a autenticar tu perfil de Anthropic pertenece a una credencial diferente, la que utiliza la CLI
ant. - Account on hold. Cuando la renovación falla porque la propia cuenta está suspendida, Anthropic dice que Claude Code muestra un mensaje separado en su lugar.
La advertencia que recibes antes de que expire
La guía de autenticación de Anthropic describe la señal previa: "Cuando el inicio de sesión que creaste con /login está a tres días de expirar, Claude Code muestra una advertencia al inicio: Your login expires in 3 days · run /login to renew".
Esa advertencia no detiene nada. En palabras de Anthropic, "La advertencia es informativa y nunca bloquea una solicitud: la autenticación sigue funcionando hasta que el inicio de sesión realmente expira". También solo aparece para el inicio de sesión de claude.ai. La guía dice que no se muestra "cuando un proveedor de nube, ANTHROPIC_API_KEY, ANTHROPIC_AUTH_TOKEN o apiKeyHelper suministra la credencial".
Puedes comprobar el estado tú mismo. Ejecuta /status. Cuando el inicio de sesión guardado es tu credencial activa y ya no se puede renovar, la documentación dice que la fila Login indica Expired — log in again, junto con la organización y el correo electrónico guardados para ese inicio de sesión. Fuera de una sesión, claude auth status ahora incluye la fecha de finalización como loginExpiresAt.
Qué se detiene mientras tu sesión está cerrada
Cada solicitud al modelo en esa sesión
Debido a que cada solicitud al modelo se detiene localmente, Claude no puede responder hasta que vuelvas a iniciar sesión. La sesión permanece abierta y tus turnos anteriores siguen en pantalla.
Sesiones que se ejecutan sin ti
Este es el caso que Anthropic destaca. "Renovar temprano es más importante para las sesiones que se ejecutan sin supervisión. Una sesión en segundo plano en vista de agente o una sesión de Remote Control que sobreviva al inicio de sesión deja de progresar una vez que la credencial expira y no puede recuperarse hasta que vuelvas a iniciar sesión".
Si dejas sesiones en segundo plano funcionando durante la noche, o manejas una sesión desde tu teléfono a través de Remote Control, un inicio de sesión que expira es el punto donde se detienen. Nuestra guía sobre la vista de agente de Claude Code explica cómo esas sesiones en segundo plano comparten el contexto de tu proyecto.
Scripts y trabajos programados
Un trabajo de claude -p iniciado con el login de claude.ai se detiene con el mensaje no interactivo mencionado anteriormente. A partir de la v2.1.318, la advertencia de stderr te da diez días de aviso, y el resultado JSON incluye credential_expires_at para los scripts que quieran verificarlo.
Qué permanece en tu máquina
La credencial expirada y tu trabajo se almacenan en lugares diferentes.
Tu inicio de sesión. La sección de credenciales de Anthropic dice que en macOS, "las credenciales se almacenan en el Keychain cifrado de macOS"; en Linux, están en ~/.claude/.credentials.json. Eso es lo que borra el fallo de renovación.
Tus transcripciones de sesión. La documentación de sesiones de Anthropic dice: "Claude Code almacena las sesiones en ~/.claude/projects/<cwd-codificado>/*.jsonl". La página de errores describe el borrado de credenciales, no de estos archivos. Después de volver a iniciar sesión, /resume y --continue los leen como antes. Nuestra guía para encontrar el historial de sesiones de Claude Code explica la estructura de carpetas.
Tu memoria automática. La documentación de memoria la ubica en el mismo directorio de configuración: "Cada proyecto tiene su propio directorio de memoria en ~/.claude/projects/<proyecto>/memory/". Nuestra guía sobre la memoria automática de Claude Code cubre lo que se carga desde allí al inicio de una sesión.
Tus instrucciones y ajustes. Los archivos CLAUDE.md y settings.json también son archivos, en tu repositorio y en tu directorio de configuración.
Una advertencia sobre las transcripciones: la guía del directorio .claude dice "Las transcripciones y el historial no están cifrados en reposo. Los permisos de archivos del SO son la única protección". Esto es cierto tanto si has iniciado sesión como si no.
Vuelve a iniciar sesión con la misma cuenta
La solución que da Anthropic es corta: "Ejecuta /login para volver a iniciar sesión. Reintentar sin iniciar sesión muestra el mismo mensaje en cada solicitud".
Inicia sesión con la cuenta a la que pertenecen las sesiones. Iniciar sesión con una cuenta diferente en el mismo directorio de configuración cambia la credencial pero mantiene las mismas carpetas locales, por lo que esa cuenta recogerá tus sesiones y memoria automática. Las sesiones en la nube están vinculadas a tu cuenta de claude.ai, lo cual es otra razón para usar la misma; nuestra guía sobre por qué Claude Code olvida entre máquinas cubre lo que las sesiones en la nube llevan y lo que no.
Si has iniciado sesión desde otra ventana de Claude Code, es posible que no necesites hacer nada en la que está detenida. La página de errores dice que si inicias sesión "en otra ventana de Claude Code que use el mismo directorio de configuración, una sesión interactiva que muestre este mensaje comenzará a usar ese inicio de sesión por sí sola".
Cuando reanudas una sesión antigua después de iniciar sesión, la primera solicitud puede tener que volver a leer mucho contexto. Nuestra guía sobre la advertencia de uso al reanudar explica cuándo Claude Code advierte sobre eso y qué hacer en su lugar.
Para automatización: una credencial que no depende del inicio de sesión del navegador
El consejo de Anthropic para ejecuciones no interactivas es iniciar sesión una vez de forma interactiva en el mismo entorno y luego volver a ejecutar el comando. "Para la 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 ".
El token de larga duración tiene sus propios límites. La guía de autenticación lo describe como "un token OAuth de un año" y añade: "Solo puede realizar solicitudes al modelo, por lo que no puede establecer sesiones de Remote Control ni obtener conectores de claude.ai". También dice que el comando "no guarda el token en ningún lugar", por lo que debes guardarlo tú mismo, por ejemplo, en el almacén de secretos de tu sistema de CI.
Recuerda el orden de las credenciales si añades una de estas. La lista de precedencia de Anthropic coloca a ANTHROPIC_API_KEY y CLAUDE_CODE_OAUTH_TOKEN por delante del inicio de sesión por suscripción de /login, por lo que una clave olvidada en tu perfil de shell puede cambiar qué credencial utiliza una sesión. /status muestra la credencial en uso.
Lo que la gente intenta primero
Reintentar el prompt. La solicitud se detiene antes de llegar a la API, por lo que un reintento devuelve el mismo mensaje.
Reiniciar la sesión. Reiniciar no crea una nueva credencial. Solo lo hace /login, o otra ventana de Claude Code que inicie sesión con el mismo directorio de configuración.
Eliminar la carpeta de configuración para limpiar el login. Eso elimina tus transcripciones de sesión y memoria automática junto con el archivo de credenciales. La solución documentada es /login.
Iniciar sesión con cualquier cuenta que ofrezca el navegador. Si es una cuenta diferente, ahora usará tus sesiones y memoria locales. Verifica /status después de iniciar sesión.
Asumir que la advertencia de inicio bloqueará el trabajo. No lo hace. Es un recordatorio, y el trabajo continúa hasta que el inicio de sesión realmente termina.
La solución: Verifica la fecha, renueva temprano, mantén vivo el trabajo desatendido
Paso 1: Verifica cuándo termina tu inicio de sesión
Ejecuta /status en una sesión, o claude auth status desde una terminal. En la v2.1.318 o posterior, la salida incluye la fecha de finalización. Actualiza Claude Code si no la ves.
Paso 2: Renueva antes de que se ejecute el trabajo desatendido
Si las sesiones en segundo plano, las sesiones de Remote Control o los trabajos programados de claude -p se ejecutarán mientras no estés, ejecuta /login antes de irte en lugar de después de que se detengan. Para trabajos que se ejecutan sin nadie al teclado, usa ANTHROPIC_API_KEY o un token de claude setup-token, dentro de los límites mencionados anteriormente.
Paso 3: Vuelve a iniciar sesión en la misma cuenta y reanuda
Después de que aparezca el error, ejecuta /login con la cuenta a la que pertenecen las sesiones, confírmalo con /status y reanuda con /resume o --continue. Tus transcripciones y memoria automática están donde las dejaste.
Configuración en MemoryLake
Un inicio de sesión expirado es una interrupción corta, pero muestra cuánto de tu contexto de trabajo reside en una sola máquina, en un solo directorio de configuración, detrás de un solo inicio de sesión. Si también cambias de máquina o de herramientas, las decisiones y convenciones en esos archivos se quedan atrás a menos que las copies.
MemoryLake es una capa de memoria para mantener esos hechos en un lugar que tú mantienes, disponible para los asistentes que conectes, como ChatGPT, Claude Code y Codex.
Tú mismo escribes las entradas, con tus propias palabras. No se lee, escribe ni elimina nada de tus sesiones de Claude Code, tu directorio de configuración, tus credenciales, tus archivos CLAUDE.md, tu memoria automática o el almacén de cualquier proveedor. /login, claude auth status y el manejo de credenciales de Claude Code siguen funcionando de la manera en que Anthropic los describe.
Paso 1: Crea una clave API
Inicia sesión y genera una clave desde el panel de control. La clave pertenece a tu espacio de trabajo de MemoryLake y es independiente de tu inicio de sesión de Claude.

Paso 2: Sube tus primeras memorias
Comienza con las decisiones y convenciones del proyecto que querrías después de cualquier interrupción: qué hace el código, qué has descartado, qué sigue. Un punto por entrada.

Paso 3: Conecta tu IA y agentes
Conecta Claude Code y cualquier otro asistente que utilices. Las entradas estarán disponibles después de que vuelvas a iniciar sesión, en otra máquina o en otra herramienta.

Qué cambia esto en la práctica
La primera diferencia es el tiempo de advertencia. Con la fecha de finalización en claude auth status y la advertencia de stderr de diez días para claude -p, puedes renovar según tu horario en lugar de enterarte por un trabajo detenido.
La segunda es una respuesta más tranquila al error. El mensaje trata sobre una credencial. Tus sesiones y memoria automática son archivos en el disco, y al iniciar sesión con la misma cuenta vuelven a estar a tu alcance.
La tercera es que hay menos que reconstruir cuando algo más grande cambia, como una nueva máquina o una nueva cuenta. Los hechos en los que confías no están solo en un directorio de configuración.
Mejores prácticas para los inicios de sesión de Claude Code
Lee la fecha de finalización. Usa claude auth status en la v2.1.318 o posterior.
Renueva antes de dejar cosas funcionando. Las sesiones en segundo plano y de Remote Control se detienen al expirar.
Vuelve a iniciar sesión con la misma cuenta. Una cuenta diferente en el mismo directorio utiliza las mismas sesiones y memoria locales.
Usa la credencial adecuada para la automatización. Una clave API o un token de claude setup-token, con sus límites documentados.
Cuidado con las variables de entorno perdidas. Tienen prioridad sobre /login en el orden de las credenciales.
No elimines la carpeta de configuración para arreglar un login. Contiene tus transcripciones y memoria automática.
Protege los archivos de transcripción. No están cifrados en reposo.
Conclusión
Login expired significa que Claude Code no pudo renovar tu inicio de sesión de claude.ai y borró la credencial guardada. Cada solicitud al modelo se detiene localmente hasta que ejecutes /login. Tus transcripciones de sesión, memoria automática y archivos de instrucciones son archivos separados en tu directorio de configuración, y la solución documentada es volver a iniciar sesión.
Lo que añade la v2.1.318 es el aviso: la fecha de finalización en claude auth status, un campo JSON para claude -p y una advertencia en stderr con diez días de antelación. Úsalo para renovar antes de que las sesiones desatendidas y los trabajos programados se detengan, e inicia sesión con la cuenta a la que pertenecen tus sesiones.