VS CodeでCopilotのチャット履歴が消える理由
チャットビューには開いているワークスペースのみが表示される
VS Codeにはセッションをリスト表示する場所が2つあり、それぞれ表示される内容が異なります。チャットビューについて、Microsoftのドキュメントには「セッションリストは現在のワークスペースにスコープされ、セッションを期間ごとにグループ化します」と記載されています。また、1つの例外として「ワークスペースを開いていない場合、リストにはすべてのワークスペースのすべてのセッションが表示されます」と付け加えられています。
Agentsウィンドウはより広範です。そのセッションリストは「すべてのワークスペースのセッションを表示するため、1つの場所からプロジェクト全体の作業を監視できます」とされています。
そのため、あるプロジェクトでセッションを開始し、別のプロジェクトでVS Codeを開いた場合、チャットビューには表示されません。別のフォルダーから同じコードを開く場合は、チャットビューが開いているワークスペースに従うため、Agentsウィンドウも確認してください。
デフォルトではアクティブなセッションのみが表示される
どちらのリストも、最初はフィルターが適用されています。ドキュメントには「デフォルトでは、リストはアクティブなセッションのみを表示するようにフィルターされています。完了またはアーカイブなど、異なる状態のセッションを表示するようにフィルターを変更できます」とあります。
終了したセッションや、その他の理由でアクティブ状態でなくなったセッションは、そのフィルターを変更するまで表示されません。
アーカイブ済みおよび完了したセッションは非表示になっているだけで、削除されていない
アーカイブは、VS Codeがリストを整理しておくための方法であり、その操作はセッションのホバーメニューにあります。Microsoftは、これが何を意味するかを明確にしています。「セッションをアーカイブしても削除されません。いつでもセッションのアーカイブを解除して、アクティブなセッションリストに復元できます」
これらを表示するには、チャットビューの「Archived(アーカイブ済み)」フィルター、またはAgentsウィンドウの「Done(完了)」フィルターを使用します。セッション内の個々のチャットも同様に機能します。「チャットを完了としてマークすると、アクティブなセッションリストから非表示になり、そのタブが閉じられますが、削除はされません。」「Done」フィルターから見つけて復元することができ、ドキュメントによると「タイトルとトランスクリプトがそのままの状態で」戻ってきます。
他のアプリからのセッションはフィルターを変更するまで非表示になる
VS Codeは、Copilot CLI、GitHub Copilotアプリ、Claude Code、Codexで開始したセッションを表示できます。しかし、「デフォルトでは、他のアプリケーションで作成されたセッションは非表示になります。」「External(外部)」フィルターを使用して、「None(なし)」から「Recent(最近)」、「Last 24 Hours(過去24時間)」、「Last 7 Days(過去7日間)」、「All(すべて)」の間で表示するものを選択します。
Copilotセッションには時間枠もあります。「Copilotセッションの場合、検出対象には、リポジトリに関連付けられており、過去7日以内に更新されたセッションが含まれます。」3週間前のCLIセッションは検出されません。CLIとエディターの両方で作業する場合は、Copilot CLIの指示を連携させるガイドで、両者の一貫性を保つ方法を解説しています。
自動クリーンアップによりセッションが完了としてマークされ、その後削除されることがある
VS Codeには、プルリクエストがマージされたセッションのオプションのクリーンアップ機能があります。「両方の設定はデフォルトで無効になっています」ので、あなたまたは組織が有効にした場合にのみ適用されます。有効にすると、1つの設定で、非アクティブな日数が経過した後に該当するセッションを完了としてマークし、2つ目の設定で、さらに猶予期間が経過した後にそれらを削除します。
ドキュメントでは、削除の制限について慎重に説明されています。「永久削除は、VS Codeが自動的に完了としてマークしたセッションにのみ適用されます。手動で完了としてマークしたセッションは自動的に削除されません。」また、猶予期間中であれば回避策があります。「自動的に完了したセッションを復元すると、その削除資格がクリアされます。」
ワークツリーのクリーンアップも同様の趣旨で機能します。実行すると、「クリーンアップは選択された各セッションを完了としてマークし、そのワークツリーの削除をスケジュールします。」セッションとそのブランチ履歴は保存されるため、それらのセッションは「Done」フィルターの下に配置されます。
ローカルセッションインデックスの再構築が必要な場合がある
VS Codeは、Copilotセッションのローカルインデックスを保持しています。Microsoftのセッション履歴ドキュメントには、「セッションが見つからない場合、またはデータベースが破損した場合は、インデックスを再構築してください」と記載されています。一般的なトリガーとして、「バックアップからのセッションファイルの復元、予期しないクラッシュ、セッションディレクトリの手動削除、またはセッション同期への再参加の後に再インデックスを行います」と挙げられています。
削除されたセッションは完全に消失する
削除は、上記のすべてのケースとは異なります。「セッションを削除すると、永久に削除され、元に戻すことはできません。」同期されたデータの場合、両方の場所から削除することを選択すると、「マシンとGitHub.comからセッションデータが削除されます。この操作は取り消せません。」
セッションを非表示にしたいだけだった場合は、アーカイブが正しい選択でした。Microsoft自身のガイダンスでもそのように述べられています。
別のデバイスでは、同期設定が表示内容を決定する
VS Codeはデフォルトでセッションを同期します。ドキュメントには、「ローカルのエージェントセッションをGitHubアカウントに同期するため、デバイス間でアクセスできます」とあります。これにより、2台目のマシンでセッションを見つけることができます。
いくつかの要因でこれがオフになります。chat.sessionSync.enabledをfalseに設定すると、「セッションデータはマシンに残り、ローカルでのみクエリできます。」chat.sessionSync.excludeRepositoriesにリストされているリポジトリはスキップされます。「一致するリポジトリからのセッションはローカルにのみ保存されます。」また、Copilot BusinessおよびEnterpriseでは、組織のポリシーによって同期が無効化される場合があり、その場合、ステータスにはポリシーによって無効化されていることが示され、上書きすることはできません。
同期はデフォルトでプライベートです。「同期されたセッションは、明示的に共有しない限りプライベートです。」Microsoftはまた、「ポリシーを有効にしても、管理者にセッションデータへのアクセス権は付与されません」と指摘しています。
よくある誤ったアプローチ
別のプロジェクトでチャットビューを検索する。 チャットビューには現在のワークスペースのみが表示されます。すべてのワークスペースを表示するにはAgentsウィンドウを使用します。
アーカイブされたセッションが削除されたと思い込む。 アーカイブはセッションを非表示にするだけです。アーカイブを解除すれば元に戻ります。
エディター内でCLIセッションを探す。 外部セッションはフィルターを変更するまで非表示になっており、検出対象となるのは最近のものだけです。
新しいノートPCにセッションが表示されると期待する。 これは、あなた自身と該当リポジトリで同期が有効になっているかどうかに依存します。
リストの消失を直すためにVS Codeを再インストールする。 インデックスからセッションが消えた場合のドキュメント化された手順は、再インデックス(再構築)です。
削除されたセッションが戻ってくるのを待つ。 削除は永久的です。
解決策:リストを広げ、同期とインデックスを確認し、重要なコピーを保存する
ステップ 1: スコープとフィルターを広げる
Agentsウィンドウを開いて、すべてのワークスペースのセッションを表示します。どちらのリストを使用する場合でも、状態フィルターを変更して、チャットビューでは完了およびアーカイブされたセッションを、Agentsウィンドウでは「Done(完了)」セッションを含めるようにします。
セッションがCopilot CLI、GitHub Copilotアプリ、Claude Code、またはCodexからのものである場合は、「External(外部)」フィルターを「All(すべて)」に設定します。セッション内で完了としてマークされた個々のチャットについては、「Done」フィルターを使用するか、親セッションの完了したチャットを表示して復元します。
自動クリーンアップを使用している場合は、chat.agentSessions.autoMarkAsDoneMergedSessionsAfterDays と chat.agentSessions.autoDeleteMarkedAsDoneMergedSessionsAfterDays の2つの設定を確認してください。猶予期間が終了する前に、まだ必要なものを復元してください。
ステップ 2: 同期を確認し、インデックスを再構築する
チャットビューのCopilotステータスバーにあるセッション同期ステータスを確認します。同期が有効になっているか、同期されたセッション数、またはポリシーによって無効化されているかが表示されます。別のマシンからのセッションを探している場合は、まずこれを確認してください。
次に、ローカルインデックスを再構築します。コマンドパレットから「Reindex Sessions(セッションの再インデックス)」を実行するか、チャット入力で /chronicle:reindex を使用します。完了したら、/chronicle:search で検索します。Microsoftはこれを「キーワード、ファイルパス、またはプルリクエストやイシューの参照によってセッションを検索する」方法と説明しています。
これらを試してもセッションが見つからず、削除もしていない場合は、実行されたデバイスから同期されていない可能性があります。そのマシンを確認してください。
ステップ 3: 重要なセッションをエクスポートし、決定事項を書き留める
見つけられたセッションは、セッションリスト以外の場所にコピーを保存しておきましょう。セッションを開いた状態で、コマンドパレットから「Chat: Export Chat(チャット:チャットのエクスポート)」を実行します。Microsoftは「チャットセッションをエクスポートすると、セッションのすべてのプロンプトとレスポンスを含むJSONファイルが作成されます」と述べています。より読みやすい形式にするには、「Copy All(すべてコピー)」オプションを使用すると、「すべてのプロンプト、レスポンス、思考ステップ、ツール呼び出しを含む、チャットセッション全体をMarkdown形式でコピー」できます。
その後、実際に後で必要になる情報を抽出します。長いエージェントセッションの大部分は手順にすぎません。本当に役立つのは、なぜそのアプローチが選ばれたのか、何が除外されたのか、何がまだ未解決なのかといった、一握りの決定事項です。これらをトランスクリプトとは別に、自分の言葉で書き留めておきましょう。インデックス化されたセッションログとメモリの比較では、検索可能なログが「あなたが言ったこと」を思い出すのに対し、「何が今でも正しいか」を思い出すわけではない理由を説明しています。
MemoryLakeでの設定方法
セッション履歴は、作業がどのように進んだかの記録です。最後に下された決定事項こそが、古いセッションがリストに残っているかどうかにかかわらず、次のセッションで必要になるものです。MemoryLakeは、それらの決定事項をあなたが管理する1つのリストに保存し、Copilotや他の使用しているエージェントから利用できるようにするメモリレイヤーです。
エントリーはあなた自身が自分の言葉で書き込みます。VS Codeのセッション、GitHubアカウント、またはベンダーのストアから何かが読み取られたり、書き込まれたり、削除されたりすることはありません。コードが雇用主やクライアントに帰属する場合は、プロジェクトの詳細を他の場所にコピーする前に、彼らのポリシーを確認してください。
ステップ 1: APIキーを作成する
サインインし、ダッシュボードからキーを生成します。このキーはMemoryLakeワークスペースに属し、GitHubアカウントとは別個のものです。

ステップ 2: 最初のメモリをアップロードする
先ほど復元またはエクスポートしたセッションの決定事項から始めましょう。1つのエントリーにつき1つの決定事項とし、日付、リポジトリ、および理由を記載します。

ステップ 3: AIとエージェントを接続する
使用しているコーディングエージェントを接続します。これにより、決定を下したセッションがアーカイブ、削除、または同期されていなくても、新しいセッションで同じ決定事項を利用できるようになります。

実務における変化
第1の違いは、検索が高速化することです。ドキュメント化された原因を知っていれば、スコープを広げ、2つのフィルターを変更し、同期を確認し、数分で再インデックスを行うことができます。
第2に、アーカイブがリスクではなくなることです。決定事項が書き留められていれば、セッションリストを整理しても必要な情報が隠れてしまうことはありません。
第3に、新しいマシンでもコンテキスト(文脈)を引き継いで開始できることです。セッションが同期されるかどうかに関わらず、個別に保存された決定事項はどちらの場合でも利用可能です。
第4に、履歴とメモリの切り分けが明確になることです。Copilot Memoryは、ライセンス別のCopilot Memory管理ガイドで説明されているように、ライセンスに基づいて管理され、Copilotが学習した内容を保持します。指示ファイルはルールを保持し、これについてはどのCopilot指示ファイルが優先されるかのガイドで解説しています。Copilot Spaceは、Copilot Spaceを最新に保つ方法のように、参照資料を保持できます。あなた自身の決定ログは、コードの背後にある理由を保持します。この最後のギャップについての詳細は、Copilotがコードベースを忘れるのを防ぐ方法を参照してください。
Copilotのチャット履歴を見つけやすくするためのベストプラクティス
Agentsウィンドウを使用して検索する。 すべてのワークスペースのセッションがリスト表示されます。
まずフィルターを確認する。 デフォルトはアクティブのみ表示です。
削除する代わりにアーカイブする。 アーカイブされたセッションは復元可能です。
CLIを使用する場合は「External」フィルターをオンにする。 他のアプリからのセッションはデフォルトで非表示になっています。
同期ステータスを把握する。 別のデバイスで何が表示されるかを決定します。
セッションが見つからない場合は再インデックスを行う。 クラッシュや復元後のドキュメント化された手順です。
重要なものをエクスポートし、決定事項を書き留める。 トランスクリプトはバックアップであり、計画ではありません。
結論
VS CodeでCopilotのチャット履歴が見つからない場合、通常はドキュメント化された理由があります。チャットビューには現在のワークスペースのみが表示され、どちらのリストもデフォルトでアクティブなセッションのみを表示し、アーカイブ済みおよび完了したセッションは削除ではなく非表示になっており、他のアプリからのセッションは「External」フィルターを変更するまで非表示のままです。オプションのクリーンアップにより、マージされたセッションが完了としてマークされ、後に削除されることがあり、同期設定によって別のデバイスに届くかどうかが決まり、破損したインデックスは再構築できます。
削除されたセッションは例外です。ローカルからも、選択した場合はGitHub.comからも完全に消失します。
スコープを広げ、フィルター、同期、インデックスを確認し、必要なセッションをエクスポートして、その決定事項をリストに依存しない場所に保存しておきましょう。