Cómo reanudar sesiones y ver historial en Claude Code
Aprenda a retomar sesiones de Claude Code usando comandos por nombre o selector. Localice los archivos de historial en texto plano almacenados localmente en su equipo.
Cómo reanudar una sesión de Claude Code
Para reanudar una sesión de Claude Code, ejecute claude --continue para la conversación más reciente en el directorio actual, o claude --resume para elegir una anterior de una lista. Desde dentro de una sesión que ya está en ejecución, el comando /resume le permite cambiar a una conversación diferente sin salir. Las formas abreviadas son -c y -r.
claude --continue
claude --resume
claude --resume auth-refactorSi ya conoce el nombre de la sesión o su ID, páselo como argumento y Claude Code irá directamente allí sin mostrar el selector.
Todo lo que aparece a continuación coincide con la documentación oficial de sesiones a fecha de agosto de 2026. Claude Code lanza actualizaciones con frecuencia, y los nombres de los flags y los atajos de teclado cambian entre versiones, por lo que debe considerar claude --help y esa página como la fuente de autoridad cuando algo aquí no coincida con lo que muestra su terminal.
Qué es realmente una sesión
Una sesión es una conversación guardada vinculada a un directorio de proyecto. Contiene todo el historial de mensajes, incluidas las llamadas a herramientas que realizó Claude y los resultados que devolvieron dichas llamadas. Claude Code escribe esta información en el disco de forma continua mientras trabaja, no solo al finalizar, por lo que la conversación persiste aunque cierre la terminal o pierda la conexión SSH.
La reanudación restaura algo más que el texto. El historial de la conversación se recupera por completo, junto con el modelo que utilizaba la sesión y el subagente con el que se inició, si utilizó --agent. El modo de permisos también se restaura, con excepciones por motivos de seguridad: los modos plan y bypass-permissions nunca se restauran, por lo que una sesión que estuviera en uno de ellos se reanudará en el modo predeterminado de una sesión nueva.
Algunos elementos no se recuperan porque son flags de inicio y no estados guardados. Los directorios añadidos con --add-dir y opciones como --mcp-config, --settings y --plugin-dir deben volver a especificarse al reanudar. Los archivos de configuración como settings.json se vuelven a leer al iniciar, por lo que no es necesario repetir nada de lo que contengan. Las credenciales siguen la misma lógica: Claude Code determina cómo autenticarse al inicio, a partir de su sesión y su entorno, en lugar de restaurarlas con la conversación. Por ello, una sesión reanudada en un VPS donde se haya colado una ANTHROPIC_API_KEY errónea en el shell provocará el error de clave de API no válida, aunque la ejecución anterior fuera correcta.
Por qué el historial de sesiones es más importante en un VPS
Este es un hecho que suele sorprender. La transcripción se escribe en la máquina donde se ejecutó el agente. No se almacena en su cuenta ni se sincroniza con la nube. Es un archivo en el disco de ese equipo.
Por lo tanto, una sesión que dejó abierta dentro de una ventana de tmux en su VPS no aparece en el selector de su portátil, y una sesión desde su portátil no aparece en el VPS. Nada se mueve entre ellos. Si trabaja como la mayoría de la gente cuando está ejecutando Claude Code en tmux en un VPS, el servidor es donde se acumula su historial de conversaciones real, y el selector que ve localmente muestra un conjunto diferente y mucho más pequeño.
La misma división se aplica entre interfaces. La aplicación de escritorio y la extensión de VS Code mantienen su propio historial de sesiones, y ninguno de ellos es el historial de la CLI. Claude Code en la web también mantiene el suyo propio. Cowork se encuentra aún más lejos, ejecutándose dentro de un entorno aislado (sandbox) de Anthropic en lugar de en hardware de su propiedad, por lo que si está evaluando Cowork frente a Claude Code, dónde termina la transcripción es parte de la decisión.
Dentro de una misma máquina, la búsqueda es más amplia de lo que podría esperar. claude --resume <session-id> busca primero en el directorio del proyecto actual y sus árboles de trabajo de git, y luego en todos los demás proyectos de esa máquina. La frase que debe recordar es "en esa máquina". Un ID de sesión de otro host no resuelve nada, y Claude Code se lo indicará con No conversation found with session ID: <session-id>.
¿Dónde almacena Claude Code el historial de sesiones?
De forma predeterminada, las transcripciones residen en el directorio de configuración de Claude Code, en una ruta con el formato ~/.claude/projects/<project>/<session-id>.jsonl.
<project> es la ruta de su directorio de trabajo con todos los caracteres no alfanuméricos reemplazados por un guion; por lo tanto, una sesión iniciada en /home/deploy/apps/api se almacena bajo un directorio llamado -home-deploy-apps-api. Si ese nombre convertido superara los 200 caracteres, Claude Code lo trunca y añade un hash de la ruta completa, de modo que el nombre del directorio se mantenga dentro de los límites del sistema de archivos.
El archivo tiene formato JSONL: un objeto JSON por línea, donde cada línea representa un mensaje, el uso de una herramienta o una entrada de metadatos. Es texto legible y su lectura es correcta.
No es correcto crear un analizador (parser) para estos archivos. El formato de las entradas es interno de Claude Code y cambia entre versiones, por lo que cualquier script que lea estos archivos directamente podría fallar tras una actualización. La propia documentación de Anthropic recomienda utilizar /export o las interfaces de script documentadas, lo cual es un consejo acertado precisamente por esa razón.
Dos ajustes modifican este comportamiento. CLAUDE_CONFIG_DIR reubica todo el directorio de configuración, que es el método para alojar las transcripciones en un volumen independiente o cifrado. cleanupPeriodDays en settings.json controla cuánto tiempo se conservan; el valor predeterminado es 30 días, con un mínimo de 1.
Qué contienen realmente esos archivos de transcripción
Cada resultado de una herramienta se registra, lo que significa que una transcripción contiene el contenido de los archivos que Claude leyó y la salida de los comandos que Claude ejecutó. La página de uso de datos de Anthropic lo explica claramente: Claude Code almacena las transcripciones de las sesiones localmente en texto plano en ~/.claude/projects/.
Piense en lo que esto implica en un servidor. Si Claude leyó un archivo .env para determinar por qué un servicio no arrancaba, el contenido de ese archivo ahora reside en un archivo JSONL en su directorio personal. Si un comando imprimió una cadena de conexión, esa cadena también está ahí. No hay ninguna filtración. La transcripción registró lo que sucedió, que es precisamente su propósito, y por eso mismo debe incluirla en su modelo de amenazas.
- Copias de seguridad: una copia de seguridad estándar de
/homeo/rootcopia sus transcripciones a donde sea que se almacenen las copias de seguridad. Añada una exclusión o acepte que copias de sus prompts y del contenido de sus archivos ahora residen en su almacenamiento de copias de seguridad. - Instantáneas e imágenes: una instantánea de un VPS tomada por cualquier motivo contiene todo el directorio. Lo mismo ocurre con una imagen que clone para crear un segundo servidor.
- Otras cuentas en el equipo: verifique los permisos usted mismo con
ls -ld ~/.claude ~/.claude/projectsen lugar de asumir que son restrictivos. - Cargas deliberadas: el comando
/feedbackenvía el historial de la conversación a Anthropic de forma intencionada, y/bugy/shareinforman a través de la misma ruta. Son acciones que usted elige realizar, así que sepa a qué está accediendo antes de confirmar.
Si prefiere que no exista ninguna transcripción, CLAUDE_CODE_SKIP_PROMPT_HISTORY suprime la escritura de transcripciones, y --no-session-persistence las suprime para una única ejecución no interactiva de claude -p. Tenga claro el compromiso antes de configurar cualquiera de las dos. Las transcripciones son lo que lee la función de reanudación, por lo que sin transcripción no hay reanudación.
Cómo encontrar una conversación antigua
Abra el selector con claude --resume, o con /resume desde una sesión en ejecución. Cada fila muestra el nombre de la sesión si lo definió, o un título generado si no lo hizo, además del tiempo transcurrido desde la última actividad, la rama de git y el tamaño del archivo.
El selector realiza búsquedas. Presione /, o simplemente comience a escribir, para filtrar la lista. Los atajos que conviene aprender son los que amplían la búsqueda: Ctrl+A muestra sesiones de todos los proyectos en esta máquina, Ctrl+W muestra todos los worktrees del repositorio actual y Ctrl+B filtra según la rama de git actual. Presione Space para previsualizar el contenido de una sesión antes de seleccionarla, y Ctrl+R para renombrar la que esté resaltada.
Asignar nombres a las sesiones facilita mucho este proceso. Inicie una con claude -n auth-refactor, o ejecute /rename auth-refactor durante la sesión, en el momento en que note que la conversación se ha convertido en un trabajo real. Una sesión con nombre puede reanudarse directamente desde la shell mediante dicho nombre.
Las sesiones sin nombre también reciben un título generado, escrito mediante una petición en segundo plano a un modelo pequeño y rápido que resume su primer prompt. Ese título ayuda a reconocer la fila en el selector, pero no sirve como identificador para reanudar. claude --resume <name> solo coincide con los nombres que usted mismo haya definido.
Búsqueda en transcripciones para localizar la sesión correcta
A veces solo recuerda una frase y nada más. Las transcripciones son texto, así que puede buscarlas.
grep -rl "nftables" ~/.claude/projects/Esto imprime las rutas de las transcripciones que coinciden. El nombre del archivo sin la extensión .jsonl es el ID de la sesión, y claude --resume <session-id> lo acepta. Use grep para determinar qué sesión necesita, luego reanúdela o expórtela para leerla realmente.
Dos advertencias honestas. El contenido está escapado en formato JSON, por lo que una frase que contenga comillas, o una que se haya dividido mediante un salto de línea, podría no coincidir como una cadena literal. Además, una coincidencia dentro del resultado de una herramienta significa que Claude vio ese texto, no que alguien lo haya escrito.
Lectura y exportación de una conversación
/export renderiza la conversación actual como texto plano, con los mensajes y la salida de las herramientas escritos de forma legible en lugar de como JSON. Sin argumentos, abre un menú que ofrece el portapapeles o un archivo. Con un nombre de archivo, /export handover.txt escribe directamente en esa ruta. Esta es la forma correcta de mover una conversación desde un servidor a su equipo local, o de adjuntarla a un ticket.
Para cualquier proceso automatizado, utilice las interfaces diseñadas para ser estables. Los hooks y los comandos de la línea de estado reciben un campo transcript_path como entrada, por lo que un hook SessionEnd puede archivar una transcripción cuando finaliza una sesión. También puede realizar una pregunta a una sesión almacenada sin abrirla:
claude -p --resume <session-id> --output-format json "summarize what we changed" | jq -r '.result'Esto envía un prompt de seguimiento a la conversación antigua y devuelve JSON estructurado. Es una base mucho mejor que analizar un formato JSONL que puede cambiar en la próxima versión.
Cuando empezar de cero es mejor que reanudar
Reanudar recupera todo el historial, y todo el historial es lo que cada solicitud posterior transporta. Una conversación que duró cuatro horas ayer es costosa de continuar hoy, y cómo se acumula el uso de tokens en una sesión larga explica de dónde proviene realmente ese coste.
Claude Code a veces ofrece un punto intermedio. En un plan Pro o Max, reanudar una sesión que ha estado inactiva durante aproximadamente una hora y que contiene más de 100,000 tokens abre un cuadro de diálogo antes de su primer mensaje. La caché de prompts ya ha expirado para entonces, por lo que la siguiente solicitud reprocesa el historial completo una vez, independientemente de la opción que elija.
- Reanudar desde el resumen ejecuta una compactación inmediatamente, por lo que las solicitudes posteriores llevan un resumen en lugar del historial completo. Es más barato por solicitud, y todo lo que el resumen descartó ya no está disponible.
- Reanudar sesión completa tal cual carga la conversación sin cambios, manteniendo cada detalle a un coste por solicitud que escala con el tamaño de la conversación.
Una tercera opción reanuda la sesión por completo y evita que el cuadro de diálogo aparezca en futuras reanudaciones.
La decisión es más sencilla de lo que parece. Reanude cuando lo siguiente que vaya a escribir dependa de lo que ya se ha dicho. Empiece de cero cuando no sea así. La deriva es fácil de detectar una vez que se presta atención: Claude haciendo referencia a un archivo que eliminó hace una hora, o volviendo a discutir una decisión que cerró al principio de la sesión. Eso es contexto obsoleto, y arrastrarlo le cuesta tokens y precisión al mismo tiempo.
Si la parte útil de una conversación antigua es una decisión o un hecho que necesitará de nuevo, no confíe en la reanudación para conservarlo. Escríbalo donde todas las sesiones puedan verlo, que es para lo que sirven los archivos de memoria de Claude Code.
/branch también es útil conocerlo en este caso. Copia la conversación hasta el punto actual y le cambia a la copia, dejando la original intacta y todavía en el selector. Úselo para probar un segundo enfoque sin perder el primero.
Diferencias entre reanudar, compactación y memoria
Estos conceptos se confunden constantemente, ya que resuelven problemas distintos.
Reanudar consiste en recuperar una conversación después de haber salido, reiniciado o cambiado a otra tarea. La compactación trata sobre la ventana de contexto dentro de una conversación activa: /compact reemplaza lo que Claude mantiene en memoria por un resumen, de modo que las peticiones posteriores envíen menos tokens. Si su problema es que la ventana de contexto está llena, la herramienta adecuada es la compactación, y gestión de la ventana de contexto de Claude Code lo explica detalladamente.
La memoria es algo distinto. Los archivos CLAUDE.md y la memoria automática almacenan instrucciones y hechos que se cargan al inicio de cada sesión, por lo que no se trata de una conversación a la que usted regresa. Es información que usted registra para no tener que volver a una sesión anterior.
Si lo que necesita es ejecutar dos conversaciones simultáneamente y que se coordinen, se trata de un mecanismo diferente. Las sesiones de Claude Code pueden enviarse mensajes entre sí mientras ambas están activas, lo cual es un problema distinto a recuperar del disco una sesión del día anterior.
FAQ
¿Dónde almacena Claude Code mi historial de sesiones?
Por defecto, se encuentra en su directorio de configuración, en ~/.claude/projects/<project>/<session-id>.jsonl, donde <project> es la ruta del directorio de trabajo con los caracteres no alfanuméricos reemplazados por guiones. Cada archivo tiene formato JSONL: un objeto JSON por línea para cada mensaje, uso de herramienta o entrada de metadatos. CLAUDE_CONFIG_DIR permite mover el directorio de configuración a otra ubicación, y cleanupPeriodDays en settings.json establece cuánto tiempo se conservan las transcripciones; el valor por defecto es 30 días, con un mínimo de 1.
¿Por qué no puedo ver mi sesión de VPS en el selector de mi portátil?
Porque las transcripciones se escriben en el disco de la máquina donde se ejecutó el agente y no existe sincronización entre máquinas. Una conversación que mantuvo dentro de tmux en su VPS solo existe en el VPS. Retómela allí mediante SSH, o ejecute /export dentro de la sesión y copie el archivo de texto si desea un registro local.
¿Puedo retomar una sesión que inicié en un directorio diferente?
Sí, si dispone de su ID de sesión. claude --resume <session-id> busca primero en el directorio del proyecto actual y sus worktrees de git, y luego en todos los demás proyectos de la misma máquina. Dentro del selector, Ctrl+A amplía la lista a todos los proyectos de la máquina y Ctrl+W la amplía a todos los worktrees del repositorio actual. Si no hay coincidencias, Claude Code informa de No conversation found with session ID: <session-id>.
¿Debo retomar una sesión antigua o iniciar una nueva?
Retome una sesión cuando su próximo mensaje dependa de lo que ya se dijo en esa conversación. Inicie una nueva cuando no sea así, ya que al retomar se recarga todo el historial y cada solicitud posterior lo incluirá. Vigile la deriva: una sesión que sigue haciendo referencia a archivos que ya eliminó contiene contexto obsoleto, y ese contexto le cuesta tokens y precisión en cada turno.
¿Puedo evitar que Claude Code escriba transcripciones en el disco?
Sí. CLAUDE_CODE_SKIP_PROMPT_HISTORY suprime la escritura de transcripciones, y --no-session-persistence las suprime para una única ejecución no interactiva de claude -p. Tenga en cuenta las consecuencias, ya que las transcripciones son lo que lee la función de reanudar, por lo que desactivarlas significa que --continue y --resume no tendrán nada que cargar. Si su preocupación es la ubicación de los archivos y no su existencia, apunte CLAUDE_CONFIG_DIR a un volumen cifrado y reduzca cleanupPeriodDays en su lugar.