happyin.work / blog

English · Русский · Español · Deutsch · Português (Brasil) · 简体中文 · 日本語

Adónde van las sesiones de escritorio de Claude Code cuando cambias de cuenta

Autora: Anastasiia Butova, ingeniera de ComfyUI y modelos de difusión, Belgrado · publicado 2026-04-30 · actualizado 2026-09-23

Traducción de la versión en inglés: English

Uso varias cuentas de Claude, porque existen los límites semanales y, cuando una cuenta llega al suyo, paso a la siguiente. Cada cambio reconstruye la lista de sesiones en la app de escritorio de Claude Code, y las sesiones de la cuenta anterior desaparecen de la ventana, aunque no del disco. En abril, esta máquina tenía unas 710 sesiones repartidas en seis carpetas de cuenta, unos 49 MB de historial, y la app mostraba 69. Este post explica dónde están físicamente las sesiones, los cuatro scripts que escribí para encontrarlas y restaurarlas, lo que decidí no automatizar, y por qué mi solución real a largo plazo es un archivo de handoff en mi propio repositorio. Revisado en septiembre de 2026 con correcciones y con lo que ha pasado con esas sesiones desde entonces.

Dónde viven las sesiones

En macOS, la app de escritorio guarda cada sesión en ~/Library/Application Support/Claude/claude-code-sessions/<accountId>/<orgId>/local_<sid>.json. En Windows, la misma estructura está bajo %APPDATA%\Claude\claude-code-sessions\. Nada de esto está documentado. En abril, la documentación de escritorio decía que cada conversación es una sesión con su propio historial de chat, carpeta de proyecto y cambios de código, y no decía nada sobre dónde se guarda.

El nombre de la carpeta sale del JavaScript empaquetado en la app: en .vite/build/index.js, la línea 771 contiene const $6t="claude-code-sessions". La persona que reportó el issue #29373 había encontrado la misma línea, y la carpeta estaba en mi máquina. La app carga las sesiones solo de la carpeta de la cuenta activa, así que las sesiones de todas las demás cuentas siguen intactas en disco e invisibles en la ventana. Un script rápido sobre las carpetas dio esto:

[372ac280…] sessions=4    size=2K     last=2026-04-13  → a test account
[4d1f33a2…] sessions=330  size=44M    last=2026-04-08  → the main archive (abandoned)
[a4ea2866…] sessions=83   size=4.5M   last=2026-04-10  → archive
[a9e945b6…] sessions=83   size=252K   last=2026-04-26  → recent parallel
[be2110e2…] sessions=69   size=203K   last=2026-04-29  → ACTIVE RIGHT NOW
[c53acc1e…] sessions=141  size=244K   last=2026-04-26  → recent parallel

Seis cuentas, no las cuatro de las que estaba segura. Simplemente me había olvidado de dos antiguas, y la más olvidada de ellas, 4d1f33a2, contenía el archivo principal: 44 MB, 330 sesiones, cinco meses de trabajo.

Corrección, septiembre de 2026. El texto de abril decía 715 sesiones y 48 MB. La tabla de arriba suma 710 sesiones y unos 49 MB, así que aquí se usan esas cifras.

Nadie oficial respondía

Conté al menos diez issues en GitHub sobre esto, siete de ellos activos el 30 de abril. El #48511, abierto el 15 de abril, se titula literalmente "session history lost when switching accounts". El #26452, abierto desde febrero, tenía 40 comentarios y ni uno solo de una cuenta marcada como miembro, propietario o colaborador del repositorio. Revisé a mano cada comentario: cuarenta quejas que caían en el vacío.

Actualización, septiembre de 2026. El #48511 se cerró como "not planned" el 24 de mayo, tras un periodo de inactividad. La gente siguió comentando después del cierre, y entre junio y septiembre se enlazaron en el hilo tres scripts de la comunidad para cambiar de cuenta o recuperar sesiones. El #26452 sigue abierto, ahora con 53 comentarios, y sigue sin ninguno de un miembro del repositorio.

Cuatro scripts para encontrar y restaurar sesiones

El conjunto de herramientas son cuatro scripts de Python multiplataforma en mi repositorio público claude-code-config, en skills/operational/desktop-sessions-discovery/:

  • sessions_registry.py, el punto de entrada principal. Lee cada sesión de cada cuenta y genera un único panel HTML autocontenido con búsqueda y ordenación, y lo abre en el navegador. Cada tarjeta muestra el título, la fecha, el número de turnos, el proyecto, el tamaño y un id de sesión seleccionable. La cuenta activa aparece resaltada, y las sesiones ya restauradas se marcan a partir de un diario de migración, ~/.claude/desktop-migrations.jsonl, con un filtro para ocultarlas. Lee tanto el actual claude-code-sessions/ como el antiguo local-agent-mode-sessions/, renombrado en febrero de 2026.
  • sessions_inventory.py, un informe de texto agrupado por cuenta, con un resumen de los proyectos que aparecen en más de una cuenta.
  • sessions_find.py, búsqueda por subcadena en títulos y directorios de trabajo, con filtros por cuenta y ventana temporal.
  • sessions_restore.py, que copia una sesión a la cuenta activa, verifica la copia byte a byte, escribe una entrada en el diario y nunca borra el original. Tras reiniciar la app de escritorio, la sesión aparece en la ventana.

En la práctica, le digo a Claude "muéstrame todas las sesiones de esta máquina para migrar", la skill recoge la frase y se abre el panel. Hago scroll hasta, por ejemplo, una sesión de 392 pasos del archivo abandonado, copio su id, le digo a Claude "restaura estas tres", reinicio la app y las sesiones están ahí. En Mac hay un extra: mdfind -onlyin ~/Library/Application\ Support/Claude/ "colour checker" busca el texto dentro de los archivos de sesión a través de Spotlight. Windows no tiene equivalente, y sessions_find.py hace el mismo trabajo recorriendo los archivos en aproximadamente medio segundo.

Actualización, septiembre de 2026. El texto de abril describía un botón Restaurar en cada tarjeta. Lo había quitado el día antes de publicar, en la versión 3.6.4, porque lo único que hacía era copiar un comando al portapapeles mientras aparentaba hacer más. Ahora cada tarjeta tiene un id de sesión que se copia con triple clic. La misma versión arregló la búsqueda: una consulta corta como "26" antes coincidía con el medio de ids no relacionados, y ahora solo coincide el inicio del id.

Para instalarlo, no lo copiaría a mano. Abre Claude Code en cualquier carpeta y pásale el repositorio:

Take https://github.com/AnastasiyaW/claude-code-config, find the
desktop-sessions-discovery skill in skills/operational/, install it into
~/.claude/skills/, then run sessions_registry.py and show me the dashboard.

Claude clona el repositorio, lee SKILL.md para entender cómo se usa la skill, la copia y la ejecuta. Así funcionan normalmente las skills: le das al agente un conjunto de herramientas y lo aprende como una persona lee un README.

Lo que decidí no hacer

  • Ninguna fusión masiva de las 710 sesiones en la cuenta activa. Una barra lateral con 700 entradas es ilegible, sobre todo con unas cincuenta ejecuciones programadas vacías, como un resumen matinal. Una copia masiva es también justo lo que rechazaría una comprobación de validez más estricta. Una sesión para una tarea funciona mejor.
  • Ninguna migración automática al arrancar. Una herramienta clavada al formato de almacenamiento de hoy se convierte en una calabaza en cuanto cambia el formato. La búsqueda y la restauración selectiva son más seguras que la automatización.
  • Ningún enlace simbólico entre carpetas de cuenta. Mis reglas globales los prohíben: se rompen en el primer cambio de ruta, crean dependencias invisibles y generan errores extraños seis meses después. Solo copiar.
  • Los originales nunca se borran. Tras una restauración, el archivo de origen se queda en su carpeta de cuenta como copia de seguridad, por si una comprobación futura rechaza la copia o hay que repetir la restauración.

La herramienta tiene fecha de caducidad

El almacenamiento ya cambió de forma una vez: local-agent-mode-sessions/ pasó a ser claude-code-sessions/ en febrero (#29373). Un segundo cambio ya se veía venir. En un reporte de un usuario en macOS (#54428, 28 de abril), Claude Desktop 1.4758.0 escribía un paquete de máquina virtual, ~/Library/Application Support/Claude/vm_bundles/claudevm.bundle/, con rootfs.img (10 GB), sessiondata.img y efivars.fd, mientras el mismo log mostraba que las sesiones seguían cargándose desde claude-code-sessions. Una imagen de disco no es JSON. Si las sesiones se mueven dentro de ella, copiar archivos local_*.json dejará de funcionar.

Ya en abril se veían dos grietas más. Las instalaciones desde Microsoft Store están rotas por separado (#48362): dentro del sandbox MSIX, el renombrado atómico de local_<sid>.json.tmp a local_<sid>.json falla con EXDEV, porque el sistema de archivos virtual ve origen y destino como dispositivos distintos, así que las sesiones ni siquiera se guardan. Y en el #18645, un usuario de la CLI reportó que las sesiones copiadas entre máquinas, que se reanudaban en la versión 2.1.5, dejaron de reconocerse en la 2.1.9, y supuso que ahora una comprobación bloquea las sesiones no creadas en la máquina actual. Eso es la CLI, no la app de escritorio, así que es una señal de alarma y no una prueba. La migración entre cuentas en una misma máquina seguía funcionando.

Actualización, septiembre de 2026. El issue de MSIX se cerró como "not planned" en junio. Su título recomienda cambiar al instalador Win32 normal, pero los comentarios del 24 de abril y del 18 de mayo dicen que esa vía ya no existe: el botón de descarga ahora entrega un paquete MSIX tras lo que parece un instalador Win32. El #54428 también se cerró como "not planned" en junio. De los ocho issues que cité en abril, solo uno se cerró como completado: el #53717, sesiones cuyo contenido desapareció tras una actualización automática en Windows. Se cerró en agosto sin comentario, y una semana después un usuario pidió reabrirlo.

Por qué un handoff es mi estrategia real

La herramienta de migración resuelve el problema de hoy, y no esperaba que sobreviviera a una versión o dos. Anthropic puede mover las sesiones a SQLite, a una imagen de disco cifrada o a la nube; cada vez, las herramientas de restauración caseras se rompen. Así que la estrategia a largo plazo es otra: un handoff después de cada sesión importante.

La memoria y CLAUDE.md guardan los hechos y reglas del proyecto. No responden a "¿qué estaba haciendo en la última sesión, qué hipótesis comprobé, con qué callejones sin salida me topé". Al final de cada sesión larga, Claude escribe en el proyecto .claude/handoffs/YYYY-MM-DD_HH-MM_<session-id>.md con seis campos:

  • el objetivo de la sesión, en una frase;
  • lo que se hizo, concretamente: archivos, pruebas, números;
  • lo que no funcionó, con motivos, que es la parte más valiosa;
  • el estado actual: funcionando, roto, bloqueado;
  • un siguiente paso;
  • una lista de comprobación de solo lectura para la siguiente sesión.

Un archivo por sesión, nunca sobrescrito, con un INDEX.md de solo añadir al lado. Una sesión nueva lee unos 1.500 tokens de handoff en lugar de 50K tokens de historial, y no repite los callejones sin salida de la sesión anterior.

Las dos herramientas resuelven problemas distintos. La restauración entra en el almacenamiento de otro y depende de él. Un handoff escribe el estado en el mío, en el momento en que todavía tengo el contexto en la cabeza. La sesión antigua puede perderse por completo, y la nueva sigue conociendo el objetivo, el trabajo, los fallos y el siguiente paso. La parte de coordinación de esto, para varias sesiones trabajando a la vez, está en el post sobre muchos Claude en un mismo repositorio y en mclaude.

La estructura del almacenamiento decide una cosa más. La app de escritorio separa las sesiones por <accountId>/<orgId>/, así que un handoff escrito junto a una sesión de escritorio es invisible para una sesión de otra cuenta. La CLI guarda todo en ~/.claude/projects/<slug>/ sin importar la cuenta: cambias de cuenta y solo cambia .credentials.json. Esa es la razón silenciosa por la que mi trabajo sigue pasando a la CLI.

Actualización, septiembre de 2026. El protocolo de handoffs ha crecido desde abril. Ahora los handoffs van a una subcarpeta por proyecto, .claude/handoffs/<project-slug>/, para que un proyecto muy activo no desplace al que vuelvo a retomar. Un hook rechaza un handoff sin una auditoría de cierre: ¿la petición está completa?, ¿qué se verificó?, ¿qué tareas relacionadas se comprobaron?, ¿dónde se siguen las pendientes? y ¿por qué el trabajo se detiene aquí? Y una sesión nueva ya no empieza preguntando "¿retomar o empezar de cero?": primero va la petición actual del usuario, y un handoff relevante se lee en silencio. La regla vigente es rules/session-handoff.md.

Qué pasó con esas sesiones

Añadido en septiembre de 2026, medido en la misma máquina el 23 de septiembre.

Abril de 2026 Septiembre de 2026
carpetas de cuenta en claude-code-sessions 6 4
archivos de sesión 710 522
tamaño unos 49 MB unos 10 MB
sesión más antigua en la carpeta activa no registrado 6 de junio de 2026

Para el 6 de junio, todo el almacén de sesiones se había copiado a una copia de recuperación en otro disco: 1.003 archivos, 49,9 MB, las mismas seis carpetas de cuenta. Nada de lo que hay hoy en la carpeta activa es anterior a esa fecha: ninguna de las 522 sesiones que contiene se creó antes del 6 de junio. Así que la app no puede mostrar ni una sola sesión de la tabla de abril. Sus archivos están en la copia, no en ninguna carpeta que lea la app.

Lo que sí sobrevivió fue lo que vivía en mis propias carpetas de proyecto. El handoff del 12 de mayo de mi proyecto de memoria por teselas sigue en ese proyecto y se abre hoy, con su objetivo, lo que falló y el siguiente paso (el proyecto en sí está aquí). Es el argumento de este post, puesto a prueba por casualidad. Una nota honesta: de ese handoff nunca se hizo commit, solo su índice, así que sobrevivió porque se copió la carpeta. Según mi propia regla, debería haber estado en git.

Fuentes

  • #48511: historial perdido al cambiar de cuenta; cerrado como not planned en mayo de 2026.
  • #26452: sesiones perdidas tras cerrar sesión o reiniciar; abierto, sin respuesta de los miembros del repositorio a septiembre de 2026.
  • #48362: EXDEV en MSIX.
  • #18645: exportación e importación de sesiones entre máquinas; la hipótesis de la 2.1.9.
  • #54428: paquete de VM en macOS 1.4758.0.
  • #29373: el renombrado a claude-code-sessions.
  • #53717: contenido perdido tras una actualización en Windows.
  • #54723: sesiones que desaparecen a mitad de conversación en macOS; quien lo reportó lo cerró después como problema del lado del usuario: una preferencia de archivado automático combinada con una barra lateral filtrada a sesiones activas.
  • Documentación de la app de escritorio de Claude Code (sin rutas de almacenamiento) y documentación del directorio .claude (el lado de la CLI está documentado).
  • claude-sync: sincronización entre varias máquinas para la CLI mediante R2.
  • El conjunto de herramientas: desktop-sessions-discovery. Contexto sobre handoffs: principles/18-multi-session-coordination.md y alternatives/session-handoff.md en el mismo repositorio.

El original en ruso se publicó en Habr.

Más artículos

En otras partes del sitio

Anastasiia Butova - ML engineer, Belgrade, Serbia. Email [email protected] · LinkedIn · GitHub · Telegram · Hugging Face