계정을 바꿨더니 Claude 세션이 다 사라졌다

다른 계정으로 로그인했더니 Code 탭의 세션 목록이 텅 비었다. 대화는 안 사라졌다. 목록만 계정마다 다른 폴더에 있었다.

도구Claude 데스크톱 앱(Windows)Node.jsPowerShell

증상

나는 Claude 데스크톱 앱의 Code 탭에서 하루 종일 일한다. 사용 한도에 걸리면 다른 계정으로 로그인해서 이어 간다. 그런데 계정을 바꾸자마자 왼쪽 사이드바의 세션 목록이 텅 비었다. 열어 두고 일하던 세션이 전부 없어진 것처럼 보였다.

원래 계정으로 돌아오면 다시 보인다. 그러니까 지워진 건 아니다. 계정마다 다른 목록을 보여 주는 거다. 내가 원한 건 「어떤 계정으로 로그인해도 전에 작업하던 세션이 그대로 보이는 것」이었다.

원인·원리

앱은 세션 목록을 계정·조직 짝마다 따로 저장한다. 윈도우 스토어(MSIX)로 설치한 앱의 위치는 이렇다.

text
%LOCALAPPDATA%\Packages\Claude_<패키지 ID>\LocalCache\Roaming\Claude\
└─ claude-code-sessions\
   └─ <계정 ID>\
      └─ <조직 ID>\
         ├─ local_*.json          ← 세션 하나에 기록 파일 하나
         ├─ deleted_<세션 ID>     ← 지운 세션 표식
         ├─ archived-sessions.idx ← 보관한 세션 색인
         ├─ scheduled-tasks.json  ← 예약 작업
         └─ backlog\

(스토어가 아닌 설치본은 %APPDATA%\Claude\claude-code-sessions\ 아래에 같은 모양으로 있다.)

로그인한 계정 ID와 조직 ID로 폴더를 고르니, 다른 계정으로 들어가면 다른 폴더를 읽는다. 그 폴더가 비어 있으면 목록도 빈다. 그게 전부다.

여기서 흔한 오해 하나. 대화 자체는 사라지지 않는다. 대화 원문은 ~\.claude\projects\ 아래에 있고, 이 폴더는 계정과 상관없이 하나다. 사라진 건 「어떤 대화가 있는지 적어 둔 목록」이지 대화가 아니다. 그래서 목록 파일만 모든 짝 폴더에 똑같이 있으면, 어느 계정으로 들어가도 같은 사이드바가 나온다.

고침

처음엔 폴더들을 하나로 잇는 junction(연결 폴더)을 썼다가 실패했고(아래 「함정」), 지금은 폴더를 똑같이 맞추는 미러 스크립트로 해결했다. 스크립트가 하는 일은 네 가지다.

  1. 짝 폴더(계정 × 조직)를 전부 실제 폴더로 둔다.
  2. 어느 한 폴더에 세션 기록이 생기거나 바뀌거나 지워지면 1~2초 안에 나머지 폴더에도 똑같이 옮긴다. 같은 파일이 폴더마다 다르면 더 최근에 고친 쪽이 이긴다. 지운 세션(deleted_* 표식)은 되살리지 않는다.
  3. 앱이 처음 보는 계정 짝으로 로그인해서 세션 0개를 읽으면, 그 폴더를 채우고 윈도우 알림으로 「껐다 켜기」를 알린다. 재시작은 그 한 번만 필요하다.
  4. 설치할 때 모든 계정 폴더를 통째로 백업하고, 그 뒤로는 기록이 가장 많은 폴더를 매시간 백업해 둔다.

이 스크립트는 PowerShell 한 줄로 설치하는 도구로 만들어 두었다. 순서는 세션 공유 도구 설치하기에 그대로 적었다.

다시 확인

스크립트 상태를 본다.

powershell
node "$env:LOCALAPPDATA\claude-session-share\claude-session-share.mjs" --status

계정 폴더마다 세션 기록 수가 나온다. 모든 줄의 수가 같으면 된 거다.

그다음 다른 계정으로 로그인해서 사이드바를 본다. 처음 쓰는 계정이면 알림이 뜬 뒤 앱을 한 번 껐다 켠다. 같은 목록이 나오면 끝.

함정

  • junction·symlink로 폴더를 이으면 안 된다. 앱이 세션 폴더를 lstat·realpath로 검사해서, 연결 폴더면 쓰기를 거부한다. main.log(%LOCALAPPDATA%\Claude\logs\)에 「Failed to save session … Refusing non-directory at private dir path (symlink/file plant)」가 천 번 넘게 찍혔다. 읽기는 되는 것처럼 보이다가 어느 순간 0개로 읽기도 한다. 나는 이 방식으로 두 시간 동안 만든 세션 21개의 기록이 저장되지 않아서, 대화 원문에서 기록을 다시 만들어 넣어야 했다.
  • 앱은 폴더를 감시하지 않는다. 파일을 채워 넣어도 목록은 앱을 껐다 켜야 바뀐다.
  • 목록이 비어 보이면 main.log에서 「Refusing」과 「Loaded 0 persisted sessions」를 찾는다. 앞엣것은 연결 폴더 문제, 뒤엣것은 처음 보는 계정 짝이다.
  • 공유는 Claude 앱 안에서만이다. 다른 AI 도구에 Claude 대화가 보인다면 그건 이 스크립트가 아니라 그 도구의 「가져오기」 설정이다.