Para onde vão as sessões do Claude Code desktop quando você troca de conta
Autora: Anastasiia Butova, engenheira de ComfyUI e modelos de difusão, Belgrado · publicado em 2026-04-30 · atualizado em 2026-09-23
Tradução da versão em inglês: English
Eu uso várias contas do Claude, porque existem limites semanais, e quando uma conta chega ao limite eu troco para a próxima. Cada troca reconstrói a lista de sessões no app desktop do Claude Code, e as sessões da conta anterior desaparecem da janela, mas não do disco. Em abril, esta máquina tinha cerca de 710 sessões em seis pastas de conta, aproximadamente 49 MB de histórico, e o app mostrava 69 delas. Este post cobre onde as sessões ficam fisicamente, os quatro scripts que escrevi para encontrá-las e restaurá-las, o que deliberadamente não automatizei e por que minha solução real de longo prazo é um arquivo de handoff no meu próprio repositório. Revisado em setembro de 2026, com correções e com o que aconteceu com essas sessões desde então.
Onde as sessões ficam
No macOS, o app desktop guarda cada sessão em ~/Library/Application Support/Claude/claude-code-sessions/<accountId>/<orgId>/local_<sid>.json. No Windows, a mesma estrutura fica em %APPDATA%\Claude\claude-code-sessions\. Nada disso é documentado. Em abril, a documentação do desktop dizia que cada conversa é uma sessão com seu próprio histórico de chat, pasta de projeto e alterações de código, e nada sobre onde ela é guardada.
O nome da pasta sai do JavaScript empacotado no app: em .vite/build/index.js, a linha 771 contém const $6t="claude-code-sessions". O autor da issue #29373 tinha encontrado a mesma linha, e a pasta estava lá na minha máquina. O app carrega sessões apenas da pasta da conta ativa, então as sessões de todas as outras contas continuam intactas no disco e invisíveis na janela. Um script rápido sobre as pastas deu este resultado:
[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 contas, e não as quatro de que eu tinha certeza. Eu simplesmente tinha esquecido duas antigas, e a mais esquecida delas, 4d1f33a2, guardava o arquivo principal: 44 MB, 330 sessões, cinco meses de trabalho.
Correção, setembro de 2026. O texto de abril dizia 715 sessões e 48 MB. A tabela acima soma 710 sessões e cerca de 49 MB, então esses são os números usados aqui.
Ninguém oficial estava respondendo
Contei pelo menos dez issues no GitHub sobre isso, sete delas ativas em 30 de abril. A #48511, aberta em 15 de abril, é literalmente "session history lost when switching accounts". A #26452, aberta desde fevereiro, tinha 40 comentários e nenhum de uma conta marcada como membro, dono ou colaborador do repositório. Eu verifiquei cada comentário à mão: quarenta reclamações em silêncio.
Atualização, setembro de 2026. A #48511 foi fechada como "not planned" em 24 de maio, depois de um período sem atividade. As pessoas continuaram comentando depois do fechamento, e entre junho e setembro três scripts da comunidade para trocar de conta ou restaurar sessões foram linkados na thread. A #26452 continua aberta, agora com 53 comentários, e ainda nenhum de um membro do repositório.
Quatro scripts para encontrar e restaurar sessões
O kit de ferramentas são quatro scripts Python multiplataforma no meu repositório público claude-code-config, dentro de skills/operational/desktop-sessions-discovery/:
sessions_registry.py, o ponto de entrada principal. Ele lê cada sessão de cada conta e gera um único dashboard HTML autocontido, com busca e ordenação, e o abre no navegador. Cada cartão mostra o título, a data, o número de turnos, o projeto, o tamanho e um id de sessão selecionável. A conta ativa fica destacada, e as sessões já restauradas são marcadas a partir de um journal de migração,~/.claude/desktop-migrations.jsonl, com um filtro para escondê-las. Ele lê tanto o atualclaude-code-sessions/quanto o antigolocal-agent-mode-sessions/, renomeado em fevereiro de 2026.sessions_inventory.py, um relatório de texto agrupado por conta, com um resumo dos projetos que aparecem em mais de uma conta.sessions_find.py, busca por substring nos títulos e diretórios de trabalho, com filtros por conta e janela de tempo.sessions_restore.py, que copia uma sessão para a conta ativa, verifica a cópia byte a byte, escreve uma entrada no journal e nunca apaga o original. Depois de reiniciar o app desktop, a sessão aparece na janela.
Na prática, eu digo ao Claude "mostre todas as sessões desta máquina para migração", a skill reconhece a frase e o dashboard abre. Eu rolo até, digamos, uma sessão de 392 passos do arquivo abandonado, copio o id, digo "restaure estas três", reinicio o app, e as sessões estão lá. No Mac existe um bônus: mdfind -onlyin ~/Library/Application\ Support/Claude/ "colour checker" busca o texto dentro dos arquivos de sessão pelo Spotlight. O Windows não tem equivalente, e o sessions_find.py faz o mesmo trabalho percorrendo os arquivos em cerca de meio segundo.
Atualização, setembro de 2026. O texto de abril descrevia um botão Restore em cada cartão. Eu já o tinha removido na véspera da publicação, na versão 3.6.4, porque ele só copiava um comando para a área de transferência enquanto parecia fazer mais do que isso. Agora cada cartão tem um id de sessão que você seleciona com triplo clique e copia. A mesma versão corrigiu a busca: uma consulta curta como "26" costumava casar com o meio de ids não relacionados, e agora só o início de um id casa.
Para instalar, eu não copiaria nada à mão. Abra o Claude Code em qualquer pasta e entregue o repositório a ele:
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.
O Claude clona o repositório, lê o SKILL.md para entender como a skill é usada, a copia e a executa. É a forma normal de funcionamento das skills: você entrega ao agente um kit de ferramentas, e ele aprende como uma pessoa lê um README.
O que deliberadamente não fiz
- Nenhuma fusão em massa das 710 sessões na conta ativa. Uma barra lateral com 700 entradas é ilegível, especialmente com cerca de cinquenta execuções agendadas vazias, como um resumo matinal, no meio. Uma cópia em massa também é exatamente o que uma checagem de validade mais rigorosa rejeitaria. Uma sessão para uma tarefa funciona melhor.
- Nenhuma migração automática na inicialização. Uma ferramenta presa ao formato de armazenamento de hoje vira abóbora no momento em que o formato muda. Busca e restauração seletiva são mais seguras do que automação.
- Nenhum symlink entre pastas de conta. As regras globais que sigo proíbem: eles quebram na primeira mudança de caminho, criam dependências invisíveis e geram bugs estranhos seis meses depois. Só cópia.
- Originais nunca são apagados. Depois de uma restauração, o arquivo de origem permanece na pasta da conta como backup, caso uma verificação futura rejeite a cópia ou a restauração precise ser refeita.
A ferramenta tem data de validade
O armazenamento já mudou de formato uma vez: local-agent-mode-sessions/ virou claude-code-sessions/ em fevereiro (#29373). Uma segunda mudança já estava aparecendo. No relato de um usuário do macOS (#54428, 28 de abril), o Claude Desktop 1.4758.0 estava gravando um bundle de máquina virtual, ~/Library/Application Support/Claude/vm_bundles/claudevm.bundle/, com rootfs.img (10 GB), sessiondata.img e efivars.fd, enquanto o mesmo log mostra sessões ainda sendo carregadas de claude-code-sessions. Uma imagem de disco não é JSON. Se as sessões passarem a morar ali, copiar arquivos local_*.json deixará de funcionar.
Duas outras rachaduras já estavam visíveis em abril. As instalações pela Microsoft Store estão quebradas em separado (#48362): dentro do sandbox MSIX, o rename atômico de local_<sid>.json.tmp para local_<sid>.json falha com EXDEV, porque o sistema de arquivos virtual vê origem e destino como dispositivos diferentes, e assim as sessões nem são salvas. E na #18645, um usuário da CLI relatou que sessões copiadas entre máquinas, que retomavam na versão 2.1.5, deixaram de ser reconhecidas na 2.1.9, e supôs que uma verificação agora bloqueia sessões não criadas na máquina atual. Isso é a CLI, não o app desktop, então é um sinal de alerta, não uma prova. A migração entre contas na mesma máquina ainda funcionava.
Atualização, setembro de 2026. A issue do MSIX foi fechada como "not planned" em junho. O título dela recomenda mudar para o instalador Win32 comum, mas comentários de 24 de abril e 18 de maio dizem que esse caminho acabou: o botão de download agora entrega um pacote MSIX por trás do que parece um instalador Win32. A #54428 também foi fechada como "not planned" em junho. Das oito issues que citei em abril, só uma foi fechada como concluída: a #53717, sobre sessões cujo conteúdo sumiu depois de uma atualização automática no Windows. Ela foi fechada em agosto sem comentário, e uma semana depois um usuário pediu que fosse reaberta.
Por que um handoff é minha estratégia real
A ferramenta de migração resolve o problema de hoje, e eu não esperava que ela sobrevivesse a uma ou duas versões. A Anthropic pode mover as sessões para SQLite, para uma imagem de disco criptografada ou para a nuvem; cada vez, as ferramentas caseiras de restauração quebram. Então a estratégia de longo prazo é outra: um handoff depois de cada sessão importante.
Memória e CLAUDE.md guardam os fatos e as regras do projeto. Eles não respondem "o que eu estava fazendo na última sessão, quais hipóteses verifiquei, em quais becos sem saída bati". Ao fim de cada sessão longa, o Claude escreve .claude/handoffs/YYYY-MM-DD_HH-MM_<session-id>.md dentro do projeto, com seis campos:
- o objetivo da sessão, em uma frase;
- o que foi feito, concretamente: arquivos, testes, números;
- o que não funcionou, com os motivos, que é a parte mais valiosa;
- o estado atual: funcionando, quebrado, bloqueado;
- um próximo passo;
- uma checklist somente leitura para a próxima sessão.
Um arquivo por sessão, nunca sobrescrito, com um INDEX.md apenas de acréscimo ao lado. Uma nova sessão lê cerca de 1.500 tokens de handoff em vez de 50 mil tokens de histórico, e não repete os becos sem saída da sessão anterior.
As duas ferramentas resolvem problemas diferentes. A restauração entra no armazenamento de outra pessoa e depende dele. Um handoff escreve o estado no meu próprio armazenamento, no momento em que eu ainda tenho o contexto na cabeça. A sessão antiga pode se perder por completo, e a nova ainda conhece o objetivo, o trabalho, as falhas e o próximo passo. O lado de coordenação disso, para várias sessões trabalhando ao mesmo tempo, está em o post sobre muitos Claudes num mesmo repositório e em mclaude.
A estrutura de armazenamento decide mais uma coisa. O app desktop separa as sessões por <accountId>/<orgId>/, então um handoff escrito ao lado de uma sessão desktop é invisível para uma sessão de outra conta. A CLI guarda tudo em ~/.claude/projects/<slug>/ independentemente da conta: troque de conta e só .credentials.json muda. Esse é o motivo silencioso pelo qual meu trabalho continua migrando para a CLI.
Atualização, setembro de 2026. O protocolo de handoff cresceu desde abril. Agora os handoffs vão para uma subpasta por projeto,
.claude/handoffs/<project-slug>/, para que um projeto movimentado não empurre para fora aquele ao qual você voltou. Um hook rejeita um handoff sem uma auditoria de encerramento: o pedido está completo, o que foi verificado, quais tarefas relacionadas foram checadas, onde ficam rastreadas as pendentes e por que o trabalho para aqui. E uma nova sessão não abre mais perguntando "retomar ou começar do zero": o pedido atual do usuário vem primeiro, e um handoff relevante é lido silenciosamente. A regra atual érules/session-handoff.md.
O que aconteceu com essas sessões
Adicionado em setembro de 2026, medido na mesma máquina em 23 de setembro.
| Abril de 2026 | Setembro de 2026 | |
|---|---|---|
pastas de conta em claude-code-sessions |
6 | 4 |
| arquivos de sessão | 710 | 522 |
| tamanho | cerca de 49 MB | cerca de 10 MB |
| sessão mais antiga na pasta ativa | não registrada | 6 de junho de 2026 |
Até 6 de junho, todo o armazenamento de sessões tinha sido copiado para um backup de recuperação em outro disco: 1.003 arquivos, 49,9 MB, as mesmas seis pastas de conta. Nada na pasta ativa hoje é mais antigo do que isso: nenhuma das 522 sessões que ela contém foi criada antes de 6 de junho. Então o app não consegue mostrar nenhuma sessão da tabela de abril. Os arquivos delas estão no backup, não em nenhuma pasta que o app lê.
O que sobreviveu foi o que morava nas minhas próprias pastas de projeto. O handoff de 12 de maio no meu projeto de memória de tiles continua nesse projeto e abre hoje, com seu objetivo, o que falhou e o próximo passo (o projeto em si está aqui). Isso é o argumento deste post, testado por acidente. Uma ressalva honesta: esse handoff nunca foi commitado, só o seu índice foi, então sobreviveu porque a pasta foi copiada. Pela minha própria regra, ele deveria estar no git.
Fontes
- #48511: histórico perdido ao trocar de conta; fechada como not planned em maio de 2026.
- #26452: sessões sumidas depois de logout ou reinício; aberta, sem resposta dos membros do repositório até setembro de 2026.
- #48362: EXDEV no MSIX.
- #18645: exportação e importação de sessões entre máquinas; a hipótese da 2.1.9.
- #54428: bundle de VM no macOS 1.4758.0.
- #29373: a renomeação para
claude-code-sessions. - #53717: conteúdo sumido depois de uma atualização no Windows.
- #54723: sessões desaparecendo no meio da conversa no macOS; quem relatou depois a fechou como problema do usuário, uma preferência de arquivamento automático combinada com uma barra lateral filtrada para sessões ativas.
- Documentação do Claude Code desktop (sem caminhos de armazenamento) e a documentação do diretório
.claude(o lado da CLI está documentado). - claude-sync: sincronização entre várias máquinas para a CLI, via R2.
- O kit de ferramentas: desktop-sessions-discovery. Contexto sobre handoffs:
principles/18-multi-session-coordination.mdealternatives/session-handoff.mdno mesmo repositório.
O original em russo foi publicado no Habr.