MemoryLake
すべての記事に戻る
News2026年9月16日·13 分で読了

Claude CodeがClaudeアプリからリモートセッションをフォーク可能に — コピー側で学習した内容はオリジナルには一切反映されません (2026)

2026年9月15日、Claude Codeはバージョン2.1.273をリリースしました。ゲートウェイヘッダーの変更や権限チェッカーの修正といった細かな修正に紛れて、1つの会話が同時に存在できる場所を静かに変える1行がひっそりと追加されていました。「Claudeアプリから claude --remote-control または /remote-control で開始されたセッションのフォーク機能を追加。フォークはコンピューター上のバックグラウンドセッションとして実行されます。」

単に読めば、これは便利な機能です。デスクから離れ、スマートフォンから長いセッションを追っているときに、実行中のセッションを邪魔することなく別の方法を試したい場合、そこからセッションを分岐させることができ、分岐したセッションは自宅のマシン上でバックグラウンドで実行されます。

しかし、作業がどこに記録されるかという観点から見ると、これは別の意味を持ちます。フォークは1つの会話を2つに分け、それぞれに独自のアイデンティティを与え、分岐した瞬間からそれぞれが個別に履歴を蓄積していきます。その後、どちらか一方が学習した内容は、すべてその一方の中だけに留まります。

フォークについて書かれた記事の多くは、最初の部分、つまりフォークによって履歴がコピーされるため、別の方法を試すことができるという点について説明しています。これは正確であり、Anthropicも明確にドキュメント化しています。しかし、書かれていないのは分岐のもう一方の側面であり、来週あなたが信頼することになる「出来事のバージョン」を、2つのコピーのうちどちらが保持することになるのかという点です。

Anthropicが実際に公開した内容

ここでは、異なる理由で公開された2つのドキュメントが重要になります。

1つ目は、2026年9月15日付のリリースノートです。フォークに関する記述は約60個ある箇条書きの1つにすぎず、新機能の発表ではなく、機能に関するメモとして扱われています。ブログ投稿も機能紹介ページもなく、本稿執筆時点ではRemote Controlのドキュメントページにもアプリ起点でのフォークについての説明はありません。動作は存在しますが、それを説明するストーリーは存在しないのです。

2つ目は、以前からその仕組みを説明しているセッションに関するドキュメントです。冒頭には、覚えておく価値のある定義が記載されています。「セッションとは、プロジェクトディレクトリに関連付けられて保存された会話のことです。Claude Codeは作業中にこれをローカルに保存するため、中断したところから再開したり、別の方法を試すためにブランチを作成したり、タスクを切り替えたりすることができます。」

ブランチ作成について:「ブランチを作成すると、これまでの会話のコピーが作成され、そこに切り替わります。オリジナルはそのまま残ります。」そして、本質的な部分を説明する一文が続きます。「/branch はトランスクリプトをコピーし、実行中のClaude Codeプロセスを切り替えてそこに書き込みます。この違いによって、ブランチが何を継承するかが決まります。」

Anthropicはその後、継承テーブルをそのまま公開しています。会話履歴は「/branch を実行した時点までの内容がブランチにコピーされます。」権限の付与は「引き継がれます。ブランチは同じプロセスで実行されるため、既存の権限が引き続き適用されます。--fork-session を使用して別のプロセスにフォークした場合、新しいプロセスは権限なしで開始されるため、そこで再度承認を行う必要があります。」

ほとんど誰も引用しない2つの行こそが、興味深い部分です。実行中のバックグラウンドサブエージェントとバックグラウンドBashコマンドは「実行を継続します。その出力は、切り替えた新しいブランチに表示され、元のセッションには表示されません。」そして、Remote Controlの接続は「接続を維持します。セッションに接続されているスマートフォンやブラウザはブランチに追従し、そこで新しいメッセージを受信し続けます。」

これは、ベンダー自身がドキュメントの中で、セッションのアクティブな部分が移動すると明言しているということです。オリジナルはそれまでのトランスクリプトを保持しますが、現在も実行中の作業や、あなたが監視していたデバイスは、コピーとともに移動します。

これによって変わること、変わらないこと

保存される内容は変わりません。ドキュメントには「オリジナルはディスク上で変更されず、セッションピッカーに残ります」と明記されており、ブランチされたセッションは「独自のセッションIDを取得し、別の行として表示されます」とあります。いつでもどちらの側にも戻ることができます。

フォークがミラー(鏡像)になるわけではありません。フォークはある一瞬に取得されたコピーであり、その瞬間から2つのトランスクリプトは別々の未来を持つ別々のファイルになります。Anthropicはサブエージェントについても同様の構造を説明しています。「サブエージェントは、これまでの会話のコピーから開始されるフォークでない限り、新しく開始されます。」これまでの会話のコピーであり、それへのリンクではありません。

変わるのは、フォークがどれだけ簡単に作成されるか、そしてその結果としてどれだけ多くのフォークが作成されるかです。以前はセッションを分割するには、それを実行しているターミナルにいる必要がありました。現在では、Remote Control経由でセッションが接続されている間に、スマートフォンやブラウザからフォークを開始でき、その結果はコンピューター上のバックグラウンドセッションとして保存されます。

これが重要なのは、Remote Controlがすでにマルチデバイス環境であったためです。Anthropicはこれを「claude.ai/codeまたはiOS/Android用のClaudeアプリを、マシン上で実行されているClaude Codeセッションに接続する」と説明しており、そのインターフェースについて慎重に表現しています。「ウェブおよびモバイルインターフェースは、そのローカルセッションへのウィンドウです。」ウィンドウ(単数形)です。フォークを行うと、2つのセッションと1つのウィンドウが存在することになり、ウィンドウはフォークを追従します。

同じリリースノートにあるもう1つの行も、これと並べて考えるべきです。なぜなら、それは別の角度から見た同じ問題だからです。「コンテキストメーターと自動要約(auto-compact)が、アドバイザーツールのターンを実際のコンテキストサイズの約2倍としてカウントし、実際のウィンドウの約半分で自動要約が実行されてしまう問題を修正しました。」

要約(Compaction)はコピー操作ではありませんが、書き換えであり、ドキュメントはそのコストを説明しています。Claude Codeは「まず古いツールの出力をクリアし、必要に応じて会話を要約します。リクエストと主要なコードスニペットは保持されますが、会話の初期の詳細な指示は失われる可能性があります。」早期に実行されるということは、その書き換えが意図したよりも早く発生したことを意味し、それに気づく唯一の場所は、それ自体が誤ってカウントされていたメーターだけでした。この一般的な問題については、要約処理を生き残るものは何かで取り上げました。

どちらの行も、気づかないうちに会話の形状が変化する様子を説明しています。一方は分割され、もう一方は短縮されます。Anthropicは後者を発見して修正しました。前者はドキュメント化された意図された動作です。どちらもツールを信用しない理由にはなりませんが、会話を意思決定の保存場所として扱うのをやめるべき理由にはなります。

人々が誤解しがちなこと

「フォークはgitのブランチのようなものだから、後でマージできる。」 この比喩が最も大きな誤解を生んでいます。バージョン管理におけるブランチ作成は、分岐した作業を再統合するために存在します。マージこそが目的です。セッションのドキュメントでは、ブランチを作成してどちらかに戻ることは説明されていますが、2つのセッションIDを統合する方法については説明されていません。この比較は分割の時点までしか成り立ちません。

「オリジナルは手つかずなので、何も失われない。」 ディスク上で手つかずであることは確かです。しかし、ドキュメントによると、実行中のバックグラウンド作業は「元のセッションではなく、切り替えた新しいブランチ」に報告され、接続されたスマートフォンやブラウザは「ブランチに追従する」とされています。フォークしてそのまま放置すると、オリジナルは以前とまったく同じ状態(つまり、古い状態)のままになります。

「両方を開いたままにしておけば、同期が保たれる。」 同期は保たれません。手動でこれを行った場合のドキュメント化された失敗パターンがあります。「フォークせずに同じセッションを2つのターミナルで再開すると、両方からのメッセージが1つのトランスクリプトに交互に挿入されます。」2人の作成者が交互に書き込んだ1つのトランスクリプトは、同期された2つの会話ではなく、後から読むのが困難な記録にすぎません。

「スマートフォンがすべてを表示してくれる。」 Remote Controlのページでは、この点について慎重に説明されています。会話を切り替えると、「接続されたデバイスは、切り替え先の会話のタイトルや以前の履歴を受信しませんが、双方向の新しいメッセージは、ターミナルで開いている会話との間で送受信されます。」デバイスはライブビューを提供するものであり、アーカイブではありません。

解決策:どちらのコピーにも属さない場所に結論を書き出す

確実な方法は、正しいセッションを選択することではありません。セッションを記録の場所として扱うのを完全にやめることです。

ステップ1:フォークを作成する前に、その目的を決める

フォークが手軽になったからこそ、慎重に行う価値があります。分割する正当な理由は2つあります。捨てるかもしれないアプローチを試したい場合、または2つの作業ラインを混ざり合わないように進めたい場合です。どちらの場合も、二度と統合されることのないコピーが作成されます。

ブランチ名でその目的を明確に宣言してください。Anthropicは、名前を省略した場合、「Claude Codeは会話の最初のプロンプトに基づいて新しいブランチに名前を付けます」と述べています。これは便利ですが、最初のプロンプトは作業を開始した場所を示しているだけで、なぜ分割したのかという理由は示していません。

ステップ2:決定事項をまずトランスクリプトから抽出する

フォークする前に、会話で確定した内容(下した決定とその理由、発見した制約、除外したアプローチなど)を一度整理してください。これらは「結論」です。それ以外はすべて、その結論を導き出した推論のプロセスにすぎません。

結論は分割された両方の側から読み取れる必要があります。つまり、複製されようとしているトランスクリプトの中だけに存在してはならないということです。要約に関するAnthropic自身の「会話履歴に依存するのではなく、永続的なルールはCLAUDE.mdに記述する」というアドバイスも、同じ方向性を示しています。これは、1つのリポジトリ内の1つのファイルに適用される正しい直感です。この直感を作業知識に適用したものが、長いコンテキストとメモリの違いです。

ステップ3:戻ってくるコピーを1つ指定する

分割後、2つのセッションは等しく存在しますが、月曜日に再開するのはそのうちの1つだけです。どちらにするかを決め、ブランチ名、プロジェクトファイル、または作業中のイシューなど、目につく場所に書き留めておきます。

ここでの失敗は、劇的なものになることはほとんどありません。セッションピッカーを開き、似たような2つの行を見て、より最近のアクティビティがある方を選択し、すでに放棄したはずの推論から作業を継続してしまう、といったことです。ピッカーは名前、タイムスタンプ、ファイルサイズを表示しますが、あなたがどちらの側を意図していたかを教えてくれるわけではありません。これは、過去のコマンドのスクロールバックが決定記録の貧弱な代替品にしかならない理由と同じ限界です。

MemoryLakeでの設定方法

これら3つのステップのポイントは、結論がそれを導き出したコンテナ(セッション)よりも長生きするということです。MemoryLakeは、それらの結論を意図的に書き込むためのストレージであり、個々のトランスクリプトから独立し、その後開くすべてのセッションから読み取ることができます。エントリーはあなた自身の言葉で書き込みます。Anthropicのシステムから何かが読み取られたり、書き込まれたり、削除されたりすることはありません。セッション、トランスクリプト、チェックポイントは完全にClaude Code自身の制御下に置かれたままになります。

ステップ1:APIキーを作成する

ダッシュボードからキーを生成します。これにより、フォークされたセッション、オリジナル、そして来月開始するセッションのすべてが、同じ事実のセットにアクセスできるようになります。

APIキー名と有効期限を求める「APIキーの作成」ダイアログが開いている、MemoryLakeコンソールのAPIキーページ
APIキー名と有効期限を求める「APIキーの作成」ダイアログが開いている、MemoryLakeコンソールのAPIキーページ

ステップ2:最初のメモリをアップロードする

再び議論したくない決定事項から始めましょう。採用したアプローチ、明らかな選択肢が間違っていた原因となった制約、すでに試したことなどです。通常、12個ほどの短いエントリーで、プロジェクト1つ分の確定事項をカバーできます。これらは物語としてではなく、事実の記述として書いてください。

最初のプロジェクトとそれに関連付けられたデータソースを表示している、MemoryLakeのデフォルトワークスペースの「プロジェクト」タブ
最初のプロジェクトとそれに関連付けられたデータソースを表示している、MemoryLakeのデフォルトワークスペースの「プロジェクト」タブ

ステップ3:AIとエージェントを接続する

セッションの開始時にこれらの事実が再構築されるのではなく、ロードされるように、Claude Codeをこのレイヤーに向けます。そして、確実な方法でテストします。セッションをフォークし、コピーを開いて、その事実の1つを尋ねてみてください。コピーが回答できれば、その分岐はあなたの知識におけるフォークではなくなっています。

OpenClaw、Hermes Agent、Claude、ChatGPT、MCP、REST APIのカードが表示されている、MemoryLakeの統合ギャラリー
OpenClaw、Hermes Agent、Claude、ChatGPT、MCP、REST APIのカードが表示されている、MemoryLakeの統合ギャラリー

実務における変化

最初の変化は、実質的な意味でフォークが「無料(ノーコスト)」になることです。長いセッションがメモ代わりになっているため、人々はセッションを分割することを躊躇しがちであり、メモを分割することは無謀に感じられます。確定した部分がセッションの外部に存在していれば、作業の必要に応じて何度でも自由に分割できます。

2つ目は、セッションピッカーが記憶力テストではなくなることです。同じ日の午後に作成された2つの行を、メタデータだけで区別するのは困難です。結論が別の場所にあれば、間違った行を選択しても、決定をやり直す必要はなく、状況を把握するための数分間のロスで済みます。

3つ目は、複数のセッションが同時に実行されている場合に現れます。Anthropicはこれを意図的にサポートしています(バックグラウンドセッション、エージェントチーム、セッション間メッセージングなど)。そして、それぞれが他のセッションの既知の事実を持たずに開始される、もう1つのコンテキストとなります。この問題については、エージェントチームが作業内容を共有する方法およびClaude Codeセッション間でのコンテキストの共有で取り上げました。

4つ目は、トランスクリプトが本来のトランスクリプト(何が起こったかの優れた記録であり、何が決定されたかの貧弱なインデックス)として機能するようになることです。これが、検索可能なログが、メモリを求める人々を失望させ続ける理由です。

フォークされたClaude Codeセッションを操作するためのベストプラクティス

作成時にすべてのフォークに名前を付ける。 デフォルトの名前は会話の開始時点を示しています。分割した理由を示す名前が必要です。

実験が失敗した後ではなく、実験の前にフォークする。 疑問が生じた瞬間に取得したフォークは、クリーンな状態を提供します。3回探索的なターンを行った後に取得したフォークは、その探索プロセスを両方のコピーに複製してしまいます。

別プロセスでは再承認が必要になることを想定する。 ドキュメントには、別プロセスへのフォークは「権限なしで開始されるため、そこで再度承認を行う」と明記されています。実行の途中でプロンプトに遭遇するのではなく、あらかじめ計画しておきましょう。

デバイスがどの会話に接続されているかを確認する。 フォーク後、接続されているスマートフォンやブラウザはブランチを追従します。オリジナルを監視し続けたい場合は、意図的に切り替えて戻してください。

会話が完全であることを確認するために、メーターだけに頼らない。 9月15日の修正は、インジケーターとそれが測定する対象が別々のシステムであることを思い出させてくれます。

決定ごとに1つの書面による回答を、すべてのセッションの外部に保持する。 フォークの両方の側で必要になるほど重要な事実であれば、どちらの側にも属すべきではありません。

結論

バージョン2.1.273では、小さく合理的な利便性が追加されました。ClaudeアプリからRemote Controlセッションをフォークできるようになり、フォークはコンピューター上のバックグラウンドセッションとして実行されます。その仕組みは一貫してドキュメント化されています。フォークは「トランスクリプトをコピー」し、オリジナルは「ディスク上で変更されず」、実行中の作業は「元のセッションではなく、切り替えた新しいブランチ」に報告されます。

このリリースが変えるのは、その「数」です。以前は会話を分割するためにその前に座っている必要がありましたが、今ではどこからでもタップするだけで行えます。これは、より多くのフォーク、似たようなセッション行の増加、および学習した内容が2つの場所のうちの正確に1つだけに存在する瞬間が増えることを意味します。

これらは欠陥ではなく、Anthropicがここでメモリ機能を発表しているわけでもありません。これはコピー操作がコピー操作らしく動作しているだけであり、ベンダー自身のドキュメントで正確に説明されています。ここから導き出すべき結論は、フォークに関するものではありません。会話は、すでに決定した事項を保持するための適切な場所では決してなかったということであり、フォークはその事実をわずか半日のうちに可視化してくれます。

よくある質問

ここから会話をフォークすると、実際には何がコピーされますか?

分割した時点までの会話履歴です。Anthropicのセッションドキュメントには「/branch を実行した時点までの内容がブランチにコピーされます」と記載されており、「トランスクリプトをコピーし、実行中のClaude Codeプロセスを切り替えてそこに書き込む」操作であると説明されています。その後に追加されたメッセージは、追加された側にのみ存在します。

フォークすると、元のセッションは破損しますか?

いいえ。ドキュメントには「オリジナルはディスク上で変更されず、セッションピッカーに残ります」と記載されており、フォークされたセッションは「独自のセッションIDを取得し、別の行として表示されます」とあります。/resume とその名前またはIDを使用して、元のセッションに戻ることができます。移動するのはアクティブな作業です。実行中のバックグラウンドサブエージェントやバックグラウンドBashコマンドは実行を継続し、その出力は「元のセッションではなく、切り替えた新しいブランチに表示されます」。

フォークしたClaude Codeセッションを元のセッションにマージすることはできますか?

セッションのドキュメントでは、ブランチを作成してどちらかに戻ることは説明されていますが、2つのセッションIDを統合する方法については説明されていません。フォークは、再統合するブランチではなく、どちらかを選択するコピーとして扱い、両方の側で必要なものは両方のトランスクリプトの外部に保持してください。

接続されているセッションをフォークすると、スマートフォンはどうなりますか?

フォークを追従します。ドキュメントによると、接続されているスマートフォンやブラウザは「ブランチに追従し、そこで新しいメッセージを受信し続けます」。会話を切り替える際にも関連する動作が適用されます。デバイスは「切り替え先の会話のタイトルや以前の履歴を受信しません」が、ターミナルで開いている会話との間で双方向の新しいメッセージが送受信されます。

権限の承認はフォークに引き継がれますか?

プロセスによって異なります。同じプロセス内では、権限は「引き継がれます。ブランチは同じプロセスで実行されるため、既存の権限が引き続き適用されます。」別のプロセスでフォークが実行される場合(--fork-session が行うこと、および新しいアプリ起点でのフォークがマシン上で生成すること)、 「新しいプロセスは権限なしで開始されるため、そこで再度承認を行う必要があります。」

2.1.273の自動要約(auto-compact)の修正により、すでに失われたコンテキストは復元されますか?

いいえ。リリースノートでは、今後のコンテキストのカウント方法の修正について説明しています。メーターと自動要約が「アドバイザーツールのターンを実際のコンテキストサイズの約2倍としてカウントし、実際のウィンドウの約半分で自動要約が実行されてしまう」状態でした。すでに実行された要約が元に戻ることはありません。ドキュメントにはそのコストについて、古いツールの出力が最初にクリアされ、「会話の初期の詳細な指示は失われる可能性があります」と明確に記載されています。