Esc + Esc(エスケープ・エスケープ)

キーバインド
Esc + Esc
エスケープ・エスケープ
Claude Codeで「巻き戻し/要約メニュー」を開くキーボード操作。Escキーを2回連続で押すと、過去の自分のプロンプト一覧から地点を選び、コードや会話を戻す/その地点から先を要約に圧縮する、を選べる画面が開く

Claude Codeを使い始めたばかりの読者向け

Claudeと数ターン会話したあとで「最初に渡した指示の方向性が違った」と気づいて別ルートで組み直したい場面、または会話が長くなりすぎて応答が鈍ってきたので途中から先を要約に圧縮したい場面で、Escキーを2回連打して巻き戻し/要約メニューを開く

Claudeと会話しながら作業していて、3〜4ターン進んだあたりで「あ、最初の自分の指示が違ったな」と気づくこと、わりとあります。会話全部を捨てたいわけではない。最初に渡した指示だけ書き換えて、そこから先を作り直したい。Esc を2回連打する操作(Esc + Esc)が、まさにそれ用の入口です。

Claude Codeには「過去の自分の発言地点に戻って、そこから別ルートを生やし直すか、あるいは選んだ地点から先を要約に圧縮するか」を選ぶメニューがある。それを呼び出すキーボード操作が Esc + Esc。1回押すだけだと意味が違うので、ここを混同しがち。

噛み砕くと

分岐がある小説を書き直す感覚に近いです。第3章まで書いたあとで「主人公の最初の選択を変えたい」と思ったら、第3章までを破棄して第1章を書き換え、別ルートで書き直す。あるいは「第1〜3章の議論が長すぎて頭が重い、ここから先は要約だけ残して身軽になりたい」と思ったら、要約に圧縮する。Esc + Esc が呼び出すのは、この2系統の操作(戻す or 圧縮する)が並んだメニュー画面です。

章は「自分が送ったプロンプト」に当たります。Claudeの応答ではなく、自分の発言の地点を起点に選ぶ。そこから何をするかを4択(プラス「やめる」を入れて5択)で選ぶ形です。

大事な前提:Esc 1回 と Esc + Esc は別物

Esc 1回は「いま生成中の応答を止める」だけです。会話履歴は1ミリも消えません。Claudeが長文を吐き始めて「違うな」と思った時の停止ボタン。

Esc + Esc は「巻き戻し/要約のメニューを開く」です。停止ではなく、過去の自分の発言地点を選んで、そこから何をするかを選ぶ画面に入る。生成中に間違って2連打すると、まず生成が止まって、続けてメニューが開く形になります。

「記事の構成をClaudeに相談していて、3〜4ターン後に最初の指示の方向性が違ったと気づいた」を例に、実際の手順を見る

記事のアウトラインをClaudeと一緒に詰めている最中だとします。最初の自分の発言が「読者ターゲット30代、フォーマルめで」だったが、3ターンほど往復したあとで「いや、20代向けでカジュアルがよかった」と気づいた。Claudeの応答そのものは捨てたい。最初の指示だけ書き換えて、そこから別ルートで構成を組み直す。これが Esc + Esc の典型的な使いどころです。

ステップ1: 会話の現状を確認する

こんな状態を想像してください。

You: 30代向けのフォーマルな記事を書きたい。構成案を3つ出して
Claude: 構成案1〜3を提示

You: 案2をベースに、h2を5個に増やして
Claude: h2を5個に展開した詳細案を提示

You: 各h2の中身を400字くらいで埋めてみて
Claude: 各h2の本文ドラフトを提示

You: ←いまここ。最初の「30代向けフォーマル」が違った、と気づいた

ステップ2: Esc を2回連打してメニューを開く

会話入力欄が空っぽの状態(または何かタイプ中でも)で、Esc を2回パッと連続で押します。間隔を空けすぎると2回目が別の操作扱いになるので、ダブルクリックの感覚で連打。

すると「巻き戻し/要約メニュー」が画面に開きます。これまでに自分が送ったプロンプトのリストがスクロール可能な形で並んだ画面です。/rewind コマンドを叩いた時とまったく同じ画面が出てくるので、キーボード派の人にとっての近道がこの2連打、と思っておくと整理しやすい。

ステップ3: 戻りたい地点を選んだあと、何をするかを選ぶ

上下キーで、自分が過去に送ったプロンプトをスクロールして選びます。今回戻りたいのは一番最初の「30代向けのフォーマルな記事を書きたい。構成案を3つ出して」。一番上まで上がって Enter。

すると「この地点に対して何をするか」を選ぶ画面に切り替わります。選択肢は4つ(プラス「やめる」で5つ)。

  • Restore code and conversation:選んだ地点に、コードも会話も両方戻す。Claudeが触ったファイルが書き換わってる状態を、その地点の状態まで巻き戻す
  • Restore conversation:会話だけ戻す。Claudeが触ったファイルは今のまま、会話履歴だけその地点に戻る
  • Restore code:コードだけ戻す。会話履歴は今のまま、ファイルだけその地点の状態に巻き戻す
  • Summarize from here:選んだ地点より前はそのまま残し、選んだ地点から今までの会話を要約テキスト1個に圧縮する。ファイルは一切変えない。会話の前半が分厚くなって応答が遅い/鈍いと感じた時の、コンテキスト節約用の選択肢
  • Never mind:何もせずメニューを閉じる

今回のケースは「最初の指示を書き換えて別ルートを生やし直したい」なので、Restore code and conversation か Restore conversation を選ぶ。コードはまだ書き始めてない構成相談の段階なので、どっちを選んでも実質的には同じ動きになります。

ステップ4: 元のプロンプトが入力欄に戻るので、書き換えて送り直す

会話を戻す系を選ぶか Summarize from here を選ぶと、選んだ地点の自分のプロンプトが入力欄に書き戻されます。「30代向けのフォーマル」を「20代向けのカジュアル」に書き換えて Enter。この瞬間に、書き換えた新プロンプトを入口にした「別ルート」が生え始めます。

You: 20代向けのカジュアルな記事を書きたい。構成案を3つ出して
Claude: (別ルートで構成案1〜3を提示)

ここで初心者がやりがちな勘違いがあります。「Esc + Esc は応答だけを捨てて、自分の発言は全部残るんでしょ」と思いがち。違います。Restore 系を選んだ場合、戻った地点より後ろは、自分の発言もClaudeの応答も両方破棄されます。

ステップ5: 必要なら以前のドラフトをメモしておく

Restore 系で巻き戻すと「h2を5個に展開した詳細案」とか「各h2の本文ドラフト400字」も全部消えます。捨てたくない部分があるなら、Esc + Esc を押す前に別ファイルにコピペしておく。これは公式の警告ではないが、実運用での落とし穴。

ちなみに Summarize from here を選んだ場合は、ファイルに残したいかどうかとは別の話で、選んだ地点〜今までの本文ドラフトは要約に圧縮されます。原文はセッションの記録には残るので、Claude側からあとで参照することはできるものの、自分の手元に綺麗な形で残るわけではない。残したいテキストがあるなら、こちらでも事前メモは有効です。

ステップ6: 別ルートを進める/圧縮された会話で続ける

あとは普通に会話を続けるだけ。Restore 系を選んだなら、新しい入口から別の方向に枝分かれした会話が伸びていきます。Summarize from here を選んだなら、要約済みの軽い会話履歴の上に、続きが積み重なっていく形になります。

つまり Esc + Esc は何をしてくれるのか

  • やってくれる: 過去の自分のプロンプトを矢印キーで選んで、そこに対して「コードも会話も戻す」「会話だけ戻す」「コードだけ戻す」「ここから先を要約に圧縮する」の4択メニューを開く
  • やってくれる: Restore 系を選んだ場合、戻った地点より後ろの会話を破棄して、選んだプロンプトを入口にした別ルートを生やし直す準備をする(プロンプトが入力欄に書き戻る)
  • やってくれる: Summarize from here を選んだ場合、選んだ地点から今までの会話を要約1個に圧縮して、コンテキスト枠を空ける(ファイルは触らない)
  • やってくれない: 「応答だけ捨てて自分の発言はそのまま残す」という器用な巻き戻し。Restore 系を選ぶと、戻った地点より後ろは自分の発言もClaudeの応答も丸ごと消える
  • 意味が薄い場面: 会話がまだ1〜2ターンしかなくて、最初の発言を書き直したいだけのとき。普通に新しいプロンプトを足すか /clear でリセットした方が早い

使いどころ3シナリオ

シナリオ1: 料理ブログの記事構成を相談していて、ターゲット読者の指定が間違っていたとき

「魚料理を週1で作る30代男性向け」で構成を5ターンほど詰めたあと、「やっぱり料理初心者向けで書きたい」と気づいた。Esc + Esc → 一番最初のプロンプトを選択 → Restore conversation。最初のプロンプトだけ書き換えれば、5ターンぶんの議論をやり直さずに、別ターゲットでスタートし直せます。中盤で気づいたなら Esc + Esc が効率的。

シナリオ2: 家計簿アプリの実装中、3つ前の方針からやり直したいが、現状の動くコードは消したくないとき

家計簿アプリの画面実装をClaudeに任せていて、5ターンほど進んだ頃に「3ターン前のCSV読み込みの設計から方針を変えたい」と気づいた。ただし手元のコードは現時点で動くので消したくない。Esc + Esc → 該当プロンプトを選択 → Restore conversation。会話だけ巻き戻して、コードはそのまま。新しい方針を入れて、コード側は手動で必要箇所だけ書き換える、という回し方ができます。

シナリオ3: デバッグ会話が長くなりすぎて応答が鈍くなった、序盤の前提だけ残して中盤を圧縮したいとき

「ログイン処理のバグを直す」依頼で15ターン以上やり取りして、原因を3つに絞り込んだあと、「ここから先は最後の1個に集中したいが、これまでの議論が分厚すぎて応答が遅い」と感じた場合。Esc + Esc → 「原因を3つに絞り込んだ」直後あたりのプロンプトを選択 → Summarize from here。序盤の前提(バグの再現条件、エラーログ)はそのまま残しつつ、中盤の試行錯誤を要約1個に圧縮できます。コンテキスト枠が空くので、続きの応答が軽くなります。

初心者が踏みやすい落とし穴

  • Esc 1回と Esc + Esc を混同する。Esc 1回は生成停止のみ、会話履歴はそのまま。Esc + Esc は巻き戻し/要約メニューを開く。意味が全然違う
  • Restore 系を選ぶと後ろが全部消える。「応答だけ捨てて自分の発言は残る」はできない。残したい長文ドラフトがあるなら、Esc + Esc を押す前に別ファイルにメモする
  • Summarize from here をRestore 系と勘違いする。Summarize はファイルを一切触らないし、会話の前半も消さない。「選んだ地点から今までを要約に圧縮する」だけ。コンテキスト節約用の選択肢で、別ルートに分岐したい時の選択肢ではない
  • Ctrl+C と混同する。Ctrl+C は「いまの入力か生成のキャンセル」。2連打するとClaude Code自体が終了する。巻き戻しではないので Esc + Esc とは別物
  • /clear と混同する。/clear は今の会話を全消去して新セッションを始める。過去地点に戻るのではなく、丸ごと初期化。Esc + Esc は「途中地点に対して4択を選ぶ」、/clear は「ゼロに戻す」
  • /rewind と役割が被ると思い込む。両方とも同じメニューを開くが、Esc + Esc はキーボード2連打で開く近道、/rewind はコマンドを叩いて開く正規ルート。中身の選択肢は同じ
  • 2連打のタイミングを外す。間隔が空きすぎると2回目の Esc が別の操作(入力キャンセル等)扱いになる。ダブルクリックくらいの速さで連打する
  • 戻り先を選ぶ画面で焦って Enter を押す。矢印キーで戻りたいプロンプトを選んでから Enter。さらにそのあと「何をするか」の4択をもう1回選ぶ必要があるので、メニュー画面はトータル2段ある、と覚えておく

書き方

Esc を2回連続で押す(ダブルクリックくらいの速さで連打)

やってみるとこうなる

入力

(会話入力欄で)Esc Esc → 矢印キーで対象のプロンプトを選択 → Enter → 4択(コード+会話を戻す/会話だけ戻す/コードだけ戻す/ここから先を要約に圧縮する)から選んで Enter

出力例

巻き戻し/要約メニューが開く。選んだアクションによって挙動が変わる。Restore系(コードと会話/会話だけ/コードだけ)を選ぶと選んだ地点より後ろがその種類で破棄され、元のプロンプトが入力欄に戻り編集して送り直せる。Summarize from hereを選ぶとファイルは一切変わらず、選んだ地点から今までの会話が要約1個に圧縮されてコンテキスト枠が空く

このページに出てきた言葉

プロンプト
自分がClaudeに送る発言1回ぶんの文章。会話の1ターンの「自分側」
ターン
「自分が1回発言してClaudeが1回応答する」のひと往復
分岐/別ルート
同じ出発点から、別の方向に伸ばし直した会話の枝
巻き戻し(rewind)
会話やコードの状態を、過去のある地点まで戻す操作
コンテキスト
Claudeが1回の応答を作る時に頭に入れていられる文章量の枠。会話が長くなりすぎると枠を食いつぶして応答が鈍る
要約に圧縮する
長い会話履歴を、要点だけ残した短いテキストに置き換える操作。原文は裏側のセッション記録には残るが、Claudeの目の前には要約版だけが見えている状態になる
Esc 1回
今動いている生成を止める操作。会話履歴は消えない。Esc + Esc とは別の挙動

関連項目

公式ドキュメント

https://code.claude.com/docs/en/checkpointing

-

← 戻る