Claude Codeのデスクトップアプリには、Claude Codeが自分で別のセッションを開始する機能があります。
開始の方法にforkとfreshの2種類があるので、何がどう違うのか、同じ質問を両方に投げて確かめました。

広告

別のセッションを開始する機能

チャットで次の作業の話をすると、Claude Codeが「これを新しいセッションで開始しますか?」というカードを出してくることがあります。

出てきたカード
出てきたカード

「新規セッション」を選ぶと、Claude Codeが新しいセッションを開始します。
開始したセッションは、サイドバーで元のセッションの下にぶら下がります。

サイドバー。上が元のセッション、下が開始したセッション
サイドバー。上が元のセッション、下が開始したセッション

開始したセッションは、独立した1つのセッションです。
セッションの中で動くサブエージェントとは違って、サイドバーに1行で出て、そこを開けば普通に会話できます。
元のセッションもそのまま残るので、2つを並行で動かせます。

forkで開始するかfreshで開始するかは、表示されたカードに選ぶボタンがなかったので、Claudeが会話の長さ等で判断して決めるようです。
ただ「forkで開始して」と指示すれば、その通りになりました。下の実験で確認しています。

forkとfreshは何を渡しているか

forkで開始したセッションを開くと、元のセッションの会話が全部コピーされた状態で始まっていました。
要約はしません。今回の元セッションの800件のメッセージがそのままコピーされました。

freshは、会話を渡しません。
代わりにClaude Codeが指示書を書いて、それを新しいセッションの最初のメッセージとして送ります。
今回の指示書に入っていたのはこの3つです。

  • やること。何の記事を、どこまで進めるか
  • 進め方。読むファイルの名前、インタビューで聞く3問、手順の順番
  • 背景。このブログが何か、いまどこまで公開しているか、なぜこの記事を書くことになったか。数行だけ

会話の中の試行錯誤や没案は入りません。
Claude Codeが「次の作業に要る」と判断したことだけが指示書になります。

freshで開始したセッションを開くと、こうなっています。

freshで開始したセッションの最初の画面。Claude Codeが書いた指示書が最初のメッセージになっている
freshで開始したセッションの最初の画面。Claude Codeが書いた指示書が最初のメッセージになっている

上に元のセッションの名前が出て、その下に指示書が「タスク」として置かれています。

なお、CLAUDE.mdのようなプロジェクトのファイルは、forkでもfreshでも、新しいセッションを開いた時点で自動で読まれます。
freshがCLAUDE.mdに何かを書くわけではありません。

同じ質問を両方に投げた

元のセッションからforkとfreshを1つずつ開始して、同じ質問を投げました。
質問はこの2つです。
「ファイルもツールも使わず、知っていることだけで答えて」と付けました。

1. 元のセッションで今日公開した記事2本のタイトルと、公開したあとに直したところ
2. GA4の平均順位96.8をページごとに見ると、どのページが何位だったか

1は、CLAUDE.mdに公開記録を書いているので、タイトルはファイルを読めば分かります。
ただ、公開したあとに直したところは会話にしかありません。
2は、会話の中でしか出ていない話です。

freshの答え

Claude Code

1. 知らない。元のセッションの会話は渡されていないので、今日公開した2本のことはわかりません。手元のCLAUDE.mdに記録がある直近の公開は、GA4・Search Consoleの記事とGoogle Cloudの準備の記事までで、公開したあとに何を直したかは知りません。
2. 知らない。平均順位96.8という数値自体も、そのページ別の内訳も、私の手元の情報にはありません。

forkの答え

Claude Code

1. 本編「GA4とSearch ConsoleをClaude Codeに読ませる」と補足「GA4とSearch ConsoleのAPIを使うためのGoogle Cloudの準備」の2本です。補足はいったん公開したあと「まだ未チェック」で下書きに戻し、スクショを1枚足して再公開し、そのあとタイトルから副題を外しました。本編はClaudeの吹き出しに説明4行をまとめて、表を後ろに回しました。
2. 1Password #3が5位、自動実行モードの補足が4位、プライバシーポリシーが189位。プライバシーポリシーは intitle:プライバシーポリシー という演算子付きの検索で189位に出ていて、それが平均を押し下げていました。

結果とメリット・デメリット

fork fresh
渡すもの 会話を丸ごとコピー Claude Codeが書いた指示書だけ
質問1(公開後に直したところ) 細かいところまで答えた タイトルまで。直したところは知らない
質問2(平均順位の内訳) 答えた 知らない
メリット 説明し直さなくていい。「さっき出した案の3番で進めて」が通じる 軽い。前の文脈が混ざらない。「つづき」の説明が要らない
デメリット 重い。関係ない話も全部ついてくるので前の文脈が混ざる 会話にしかない話は知らない

freshは、元の会話そのものは知りません。
CLAUDE.mdの公開記録を読んで、記事のタイトルまでは答えています。
forkは会話を丸ごと引き継ぐので全て答えられましたが、新しいセッションなのに最初からコンテキストを使った状態で始まります。
freshで何が渡ったかは、指示書を見れば確認できます。

同じセッションで続けるのと、forkするのは何が違うか

forkは会話を丸ごとコピーするので、知っていることは同じセッションで続けるのと同じです。
軽くもなりません。軽くしたいならfreshです。
違うのは、分かれることです。
元のセッションはそのまま残るので、2つを並行で動かせます。
サイドバーに別の行・別のタイトルで出るので、あとから「あの作業のセッション」を探しやすくなります。

開始したセッションから、さらに開始できるか

これはおそらくできるだろうけど、さらに階層が増えて孫セッションのようになるのか?と思ってためしたところ、同じ階層に新しくセッションが増えました。
現状はツリーは1階層までのようです。

サイドバー。forkとfreshから開始した2段目も、1段目と同じ高さに並ぶ
サイドバー。forkとfreshから開始した2段目も、1段目と同じ高さに並ぶ

まとめ

forkは会話を丸ごと引き継ぐ、freshは要るところだけ指示書にして渡す、という違いでした。
会話にしかない話を引き継ぎたいときはfork、そうでなければfreshで足ります。
私は決め事をCLAUDE.mdに残すようにしているので、ほとんどfreshで済んでいます。
逆に、ファイルに残していないことはfreshでは伝わらないので、その場合はforkになります。