happyin.work / ブログ

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

Claude Code デスクトップ版でアカウントを切り替えると、セッションはどこへ行くのか

著者: Anastasiia Butova, ComfyUI・拡散モデルエンジニア(ベオグラード) · 公開 2026-04-30 · 更新 2026-09-23

英語版からの翻訳: English

私は複数の Claude アカウントを使い分けています。週次の利用上限があるためで、あるアカウントが上限に達したら次のアカウントに切り替えます。切り替えるたびに Claude Code デスクトップアプリのセッション一覧が作り直され、前のアカウントのセッションはウィンドウから消えます。ただしディスクからは消えていません。4月の時点で、このマシンには6つのアカウントフォルダに約710件のセッション、約49 MBの履歴がありましたが、アプリに表示されていたのは69件でした。この記事では、セッションが実際にどこにあるのか、見つけて復元するために書いた4つのスクリプト、意図的に自動化しなかったこと、そして私が長期的に頼っている答え、つまり自分のリポジトリにあるハンドオフファイルについて書きます。2026年9月に、訂正と、その後のセッションの状況を加えて改訂しました。

セッションの保存場所

macOS では、デスクトップアプリは各セッションを ~/Library/Application Support/Claude/claude-code-sessions/<accountId>/<orgId>/local_<sid>.json に保存します。Windows では同じ構造が %APPDATA%\Claude\claude-code-sessions\ の下にあります。これらは文書化されていません。4月の時点でデスクトップ版のドキュメントには、各会話が独自のチャット履歴、プロジェクトフォルダ、コードの変更を持つセッションだと書かれていましたが、保存場所については何も書かれていませんでした。

フォルダ名はアプリに同梱された JavaScript から分かりました。.vite/build/index.js の771行目に const $6t="claude-code-sessions" があります。issue #29373 を報告した人も同じ行を見つけており、私のマシンにもそのフォルダがありました。アプリは有効なアカウントのフォルダからしかセッションを読み込まないため、他のアカウントのセッションはディスク上に残ったままで、ウィンドウには表示されません。フォルダを簡単に調べるスクリプトの結果は次のとおりです。

[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

アカウントは、確信していた4つではなく6つでした。古い2つを忘れていたのです。その中でもいちばん忘れていた 4d1f33a2 に、メインのアーカイブがありました。44 MB、330セッション、5か月分の作業です。

訂正(2026年9月)。 4月の本文では715セッション・48 MBとしていました。上の表を合計すると710セッション・約49 MBになるので、この記事ではそちらの数字を使っています。

公式からの返答はなかった

この件に関する GitHub の issue を少なくとも10件数えました。そのうち7件は4月30日時点で活発でした。#48511 は4月15日に立てられたもので、タイトルはそのまま「session history lost when switching accounts」です。#26452 は2月から開いたままで、コメントは40件ありましたが、リポジトリのメンバー、オーナー、コラボレーターとしてマークされたアカウントからのコメントは1件もありませんでした。全コメントを手作業で確認しました。40件の不満が、沈黙に向かって投げかけられていたのです。

2026年9月の更新。 #48511 は、長期間更新がないまま5月24日に「not planned」としてクローズされました。クローズ後もコメントは続き、6月から9月にかけて、アカウント切り替えやセッション復元のためのコミュニティ製スクリプトが3件、スレッドにリンクされました。#26452 はまだ開いており、コメントは53件に増えています。それでもリポジトリのメンバーからのコメントはありません。

セッションを見つけて復元する4つのスクリプト

ツールキットは、公開リポジトリ claude-code-config にある、クロスプラットフォームの Python スクリプト4本です。場所は skills/operational/desktop-sessions-discovery/ です。

  • sessions_registry.py:メインの入口です。すべてのアカウントからすべてのセッションを読み込み、検索と並べ替えができる自己完結型の HTML ダッシュボードを作って、ブラウザで開きます。各カードには、タイトル、日付、ターン数、プロジェクト、サイズ、選択可能なセッション ID が表示されます。有効なアカウントは強調表示され、すでに復元済みのセッションは移行ジャーナル ~/.claude/desktop-migrations.jsonl からマークされます。非表示にするフィルターもあります。現在の claude-code-sessions/ と、2026年2月に名前が変わった古い local-agent-mode-sessions/ の両方を読みます。

  • sessions_inventory.py:アカウントごとにまとめたテキストレポートです。複数のアカウントに現れるプロジェクトの要約も付きます。

  • sessions_find.py:タイトルと作業ディレクトリを部分一致で検索します。アカウントと期間で絞り込めます。

  • sessions_restore.py:1つのセッションを有効なアカウントにコピーし、コピーをバイト単位で検証し、ジャーナルに記録します。元のファイルは削除しません。デスクトップアプリを再起動すると、そのセッションがウィンドウに表示されます。

実際には、Claude に「移行のためにこのマシンの全セッションを見せて」と頼むと、スキルがその言い回しを拾ってダッシュボードが開きます。たとえば放置したアーカイブにある392ステップのセッションまでスクロールし、そのIDをコピーして、Claude に「この3つを復元して」と頼み、アプリを再起動します。するとセッションが表示されます。Mac には特典があります。mdfind -onlyin ~/Library/Application\ Support/Claude/ "colour checker" を使うと、Spotlight 経由でセッションファイルの中のテキストを検索できます。Windows には同等の機能がないため、sessions_find.py がファイルを順にたどって、約0.5秒で同じことをします。

2026年9月の更新。 4月の本文では、各カードに「Restore」ボタンがあると書いていました。しかし公開の前日、バージョン3.6.4で削除していました。ボタンは実際にはコマンドをクリップボードにコピーするだけなのに、もっと多くのことをするように見えていたからです。今は各カードにセッション ID があり、3回クリックしてコピーできます。同じリリースで検索も直しました。以前は「26」のような短いクエリが無関係な ID の途中にも一致していましたが、今は ID の先頭だけが一致します。

インストールは、手作業でファイルをコピーしないほうがいいと思います。任意のフォルダで Claude Code を開き、リポジトリを渡してください。

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 はリポジトリをクローンし、SKILL.md を読んでスキルの使い方を学び、スキルをコピーして実行します。スキルの通常の使われ方はこれです。エージェントにツールキットを渡すと、人が README を読むのと同じように、エージェントがそれを学びます。

意図的にやらなかったこと

  • 710件すべてを有効なアカウントに一括で統合しない。 サイドバーに700件並ぶと読めません。特に、朝のダイジェストのような空の定期実行が約50件混ざっていると、なおさらです。一括コピーは、より厳しい妥当性チェックなら確実に弾かれるものでもあります。1つのタスクにつき1つのセッションのほうがうまくいきます。

  • 起動時の自動移行はしない。 今日の保存形式に釘付けにしたツールは、形式が動いた瞬間にかぼちゃに戻ります。検索と選択的な復元のほうが、自動化より安全です。

  • アカウントフォルダ同士をシンボリックリンクでつながない。 私の共通ルールで禁止しています。最初のパス変更で壊れ、目に見えない依存関係を生み、半年後に奇妙なバグを生むからです。コピーだけにします。

  • 元のファイルは削除しない。 復元後も、元のファイルはバックアップとしてアカウントフォルダに残します。将来の検査でコピーが弾かれた場合や、復元をやり直す必要が出た場合に備えるためです。

このツールには有効期限がある

保存形式は一度すでに変わっています。local-agent-mode-sessions/ は2月に claude-code-sessions/ になりました(#29373)。2度目の変化の兆しも見えていました。macOS のあるユーザーの報告(#54428、4月28日)では、Claude Desktop 1.4758.0 が仮想マシンのバンドル ~/Library/Application Support/Claude/vm_bundles/claudevm.bundle/ を書き込んでいました。中には rootfs.img(10 GB)、sessiondata.img、efivars.fd があります。一方で、同じログには、セッションが今も claude-code-sessions から読み込まれている様子が示されていました。ディスクイメージは JSON ではありません。セッションがそこへ移されると、local_*.json をコピーする方法は動かなくなります。

4月時点で、さらに2つの亀裂が見えていました。Microsoft Store 版のインストールは別に壊れています(#48362)。MSIX サンドボックス内では、local_<sid>.json.tmp から local_<sid>.json へのアトミックなリネームが EXDEV で失敗します。仮想ファイルシステムが、移動元と移動先を別のデバイスとして扱うためです。そのため、セッションはまったく保存されません。また #18645 では、CLI のユーザーが、マシン間でコピーしたセッションが 2.1.5 では再開できたのに 2.1.9 では認識されなくなったと報告しました。そして、現在のマシンで作られていないセッションをブロックする検査が入ったのではないかと推測していました。これはデスクトップアプリではなく CLI の話なので、証拠ではなく警告信号として扱います。同じマシン内のアカウント間の移行は、まだ動いていました。

2026年9月の更新。 MSIX の問題は6月に「not planned」としてクローズされました。タイトルでは通常の Win32 インストーラーへの切り替えを勧めていますが、4月24日と5月18日のコメントによれば、その道はもうありません。ダウンロードボタンは、Win32 インストーラーのように見えるものの裏で、MSIX パッケージを配布するようになっていました。#54428 も6月に「not planned」としてクローズされました。4月に挙げた8件の issue のうち、完了としてクローズされたのは1件だけです。#53717、Windows の自動アップデート後にコンテンツが消えたセッションの問題です。8月にコメントなしでクローズされ、1週間後にあるユーザーが再オープンを求めました。

なぜハンドオフが私の本当の戦略なのか

移行ツールは今日の問題を解くものですが、リリースを1、2回またいで生き残るとは思っていませんでした。Anthropic はセッションを SQLite、暗号化されたディスクイメージ、あるいはクラウドへ移すことができますし、そのたびに自作の復元ツールは壊れます。そこで長期の戦略は別のものにしています。重要なセッションのあとには必ずハンドオフを残すのです。

メモリと CLAUDE.md に入っているのは、プロジェクトの事実とルールです。「前回のセッションで何をしていたか、どの仮説を確かめたか、どの行き止まりに当たったか」には答えられません。長いセッションが終わるたびに、Claude はプロジェクト内に .claude/handoffs/YYYY-MM-DD_HH-MM_<session-id>.md を書き、そこに6つの項目を入れます。

  • セッションの目標(1文で)
  • 実施した内容(具体的に:ファイル、テスト、数値)
  • うまくいかなかったこと(理由つき。最も価値のある部分)
  • 現在の状態:動作中、壊れている、ブロックされている
  • 次の一手(1つ)
  • 次のセッションのための、読み取り専用のチェックリスト

セッションごとに1ファイルで、上書きはしません。その横に、追記専用の INDEX.md があります。新しいセッションは、5万トークンの履歴ではなく、約1,500トークンのハンドオフを読みます。そして、前のセッションの行き止まりを繰り返しません。

2つのツールは別々の問題を解きます。復元は、他人の保存領域に手を入れ、それに依存します。ハンドオフは、文脈がまだ私の頭の中にあるうちに、状態を自分のリポジトリに書き込みます。古いセッションは完全に失われてもかまいません。新しいセッションには、目標、作業、失敗、次の一手が残っています。複数のセッションを同時に動かすときの調整の側面は、1つのリポジトリで複数の Claude を動かす記事と mclaude で扱っています。

保存のレイアウトがもう1つのことを決めています。デスクトップアプリはセッションを <accountId>/<orgId>/ で分けるため、デスクトップのセッションの隣に書いたハンドオフは、別アカウントのセッションからは見えません。CLI はアカウントに関係なくすべてを ~/.claude/projects/<slug>/ に置きます。アカウントを切り替えても変わるのは .credentials.json だけです。私の作業が CLI へ移り続けている、目立たない理由がこれです。

2026年9月の更新。 ハンドオフの手順は4月以降に拡張されました。ハンドオフは今、プロジェクトごとのサブフォルダ .claude/handoffs/<project-slug>/ に入ります。そのため、忙しいプロジェクトのハンドオフに、戻ってきたプロジェクトのハンドオフが埋もれることはありません。hook は、締めくくりの監査がないハンドオフを拒否します。監査では、依頼は完了したか、何を検証したか、どの関連タスクを確認したか、未完了のものはどこで追跡しているか、なぜここで作業を止めるのかを確認します。さらに、新しいセッションは「再開するか、新規に始めるか」と尋ねて始まらなくなりました。今はまずユーザーの現在の依頼が優先され、関連するハンドオフは静かに読み込まれます。現在のルールは rules/session-handoff.md です。

それらのセッションはその後どうなったか

2026年9月に追記。9月23日に、同じマシンで計測しました。

2026年4月 2026年9月
claude-code-sessions 内のアカウントフォルダ 6 4
セッションファイル 710 522
サイズ 約49 MB 約10 MB
ライブフォルダ内で最も古いセッション 記録なし 2026年6月6日

6月6日までに、セッションの保存領域全体が別ドライブのリカバリ用バックアップにコピーされていました。1,003ファイル、49.9 MB、同じ6つのアカウントフォルダです。現在のライブフォルダには、それより古いものはありません。そこにある522件のセッションは、どれも6月6日より前に作られたものではありませんでした。そのため、アプリは4月の表にあったセッションを1つも表示できません。それらのファイルはバックアップの中にあり、アプリが読むフォルダにはありません。

残ったのは、私自身のプロジェクトフォルダにあったものです。タイル記憶のプロジェクトにある5月12日のハンドオフは、今もそのプロジェクトにあり、目標、失敗したこと、次の一手とともに今日でも開けます(プロジェクト本体はこちら)。この記事の主張が、偶然によって検証された形です。ひとつ正直な注記があります。そのハンドオフはコミットされておらず、コミットされていたのはインデックスだけでした。フォルダがコピーされたから残っただけです。自分で決めたルールに従えば、git に入っているべきものでした。

Sources

  • #48511:アカウント切り替え時に履歴が失われる。2026年5月に not planned としてクローズ。
  • #26452:ログアウトや再起動後にセッションが消える。オープンのまま。2026年9月時点で、リポジトリのメンバーからの返信なし。
  • #48362:MSIX での EXDEV。
  • #18645:マシン間でのセッションのエクスポートとインポート。2.1.9 に関する仮説。
  • #54428:macOS 1.4758.0 の VM バンドル。
  • #29373:claude-code-sessions への改名。
  • #53717:Windows でアップデート後にコンテンツが消える。
  • #54723:macOS で会話の途中にセッションが消える。報告者は後に、ユーザー側の問題としてクローズした。自動アーカイブの設定と、アクティブなセッションだけに絞ったサイドバーの組み合わせが原因だった。
  • Claude Code デスクトップ版のドキュメント(保存場所は書かれていない)と .claude ディレクトリのドキュメント(CLI 側は文書化されている)。
  • claude-sync:R2 を通じた、CLI 向けのマルチマシン同期。
  • ツールキット:desktop-sessions-discovery。ハンドオフの背景:同じリポジトリの principles/18-multi-session-coordination.md と alternatives/session-handoff.md。

ロシア語の原文は Habr に掲載されました。

その他の記事

サイト内のその他のページ

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