Claude Codeでメッセージをキューに入れる方法 — Enterで積む、Escで割り込む
作業中にEnterで追加指示を積む方法と、Escでの割り込みとの使い分け、Upキーでの取り消し手順をまとめます。
Claude Codeのメッセージキューとは
Claude Codeが作業中にメッセージを入力してEnterを押すと、その場で割り込むのではなくキューに積まれます。積まれた内容は入力欄の上に一覧表示され、送られるまでそこに残り続けます。!から始まるシェルコマンドや/planのような大半のコマンドも同じ方法でキューに入れられます。ただし/statusのように送信直後に実行されるコマンドはキューの対象外です。
思いついた追加指示をその都度中断で差し込まず、ターンの区切りでまとめて渡したいときに使う機能です。長いリファクタリングを任せている最中に「ついでにテストも直しておいて」と気づいても、いちいち止める必要はありません。入力してEnterを押せば、Claudeが今の作業を終えたところで次の指示として渡されます。作業を止めて指示を差し込むと、Claudeがそこまで積み上げていた文脈を一部失うことがありますが、キューであればその心配はありません。
使い方: 作業中にEnterで入力するだけ
キューを使うのに特別な準備は要りません。Claudeが応答している最中に、いつも通りメッセージを入力してEnterを押すだけです。
> 認証周りのリファクタを進めて
# Claudeがファイルの編集を開始
> (作業中に)テストコードも一緒に直しておいて
# → キューに積まれ、入力欄の上に「1件のメッセージが待機中」と表示されるキューに積んだメッセージは消えているわけではなく、常に画面上で見えている状態が保たれます。何を積んだか忘れて二重に送ってしまう、といった事故を防げる設計です。積んだ内容が思っていたものと違うと気づいたときも、この一覧を見ればすぐに確認できます。
キューした内容がいつClaudeに届くか
届くタイミングはキューした種類によって変わります。
- メッセージ: Claudeがツール呼び出しを実行している最中にキューすると、そのツール呼び出しが終わり次第、同じターンの中でClaudeに渡されます。ターンが終わった時点でまだキューに残っているメッセージは、次のターンとして1件ずつ個別に送られます
- コマンドとシェルコマンド: ターンが終わるまで保留され、終わった後で1つずつ順番に実行されます
つまり、作業中に投げたメッセージは思ったより早く(現在のツール呼び出しの区切りで)Claudeに渡ることがある一方、コマンド類はターンが完全に終わるまで動きません。急ぎの指示をメッセージで送るか、確実にターン後まで待たせたいならコマンドで送るか、という選び分けにもなります。
コマンドとシェルコマンドをすべて例外なく保留する理由は単純です。/planでモードを切り替える途中や、! rmのような破壊的なコマンドがツール呼び出しの合間に割り込むと、今の作業と衝突しかねません。ファイルを編集している最中にモードが切り替わったり、想定外のタイミングでシェルコマンドが割り込んだりすれば、Claudeの判断も読者の意図もずれます。ターンが終わるのを待ってから1つずつ順番に動かす設計は、この衝突を避けるための安全策でもあります。
一方で、/statusや/tasks、/usageのような確認系のコマンドはキューを経由せず即座に実行されます。状態を確認するだけの操作にまで待たされないよう、こうしたコマンドだけ別扱いになっています。ビルドやテストのような時間のかかる処理をバックグラウンドで走らせながら指示を積みたい場合は、Claude Codeバックグラウンド実行の使い方も参考になります。
Escで今すぐ割り込む — Enterとの使い分け
Enterで送るとキューに積まれますが、Escを押すと違う挙動になります。Claude Codeはいま進行中のターンをその場で中断し、キューに積んでいた内容をすぐに送ります。
| キー | 動作 | 向く場面 |
|---|---|---|
Enter | 動作現在のターンを止めずにキューへ積む | 向く場面今の作業は続けさせつつ、次にやってほしいことを予約したい |
Esc | 動作進行中のターンを中断し、キューの内容を即送信 | 向く場面今の方向性が違うと気づき、すぐ止めて切り替えたい |
Escはキューの中身を消すわけではなく、キューされたものを含めて即座に送信に回す点が要点です。「待たせる」か「今すぐ差し替える」かの二択と考えると迷いません。
実務では、Claudeが見当違いのファイルを編集し始めたときにEscが最も役立ちます。編集が進むほど手戻りは大きくなるため、違和感に気づいた時点で止めるのが基本です。逆に、今の作業自体は正しく進んでいて追加のタスクを予約したいだけなら、Enterでキューに積んで待たせる方が、Claudeの集中を途切れさせずに済みます。迷ったときは「止めないと手戻りが増えるか」を基準に判断すると選びやすくなります。
積んだ内容を取り消す — Upキーで巻き戻す
送信前に取り消したくなったら、入力欄の1行目にカーソルがある状態でUpを押します。カーソルが2行目以降にある場合は、通常どおり1行前へ移動するだけでキューには触れません。条件を満たすと、Claude Codeはキュー内のメッセージとコマンドを取り出し、その時点で入力欄に書きかけていたテキストより前に、1行ずつ差し込む形で戻します。書きかけの文章が消えることはありません。内容を編集してEnterを押せば1件のエントリとして再度キューに積め、入力欄を空にすればそのまま破棄できます。
シェルコマンドの取り消しには条件があります。入力欄が空で、他にキューされているものが無いときに限り、Upはキューしたシェルコマンドを取り戻し、入力欄を自動でシェルモードに切り替えます。それ以外の状況では、シェルコマンドは!プレフィックス付きのままキューに残り、ターン終了後に実行されます。
この条件分岐は誤操作を防ぐための設計です。メッセージとシェルコマンドが混在した状態でUpを押しても、シェルコマンドだけがこっそり取り出されて中身が変わってしまうことはありません。取り戻すか、そのまま流すかのどちらかがはっきり決まり、キューの中身を予測できない状態にはなりません。
複数件をキューしたときの届き方
Enterを連続で押して2件、3件とメッセージを積むこともできます。この場合、ターンが終わった時点でキューに残っていたメッセージは、1つにまとめられるのではなく、それぞれ独立した別のターンとしてClaudeに送られます。
> APIのエラーハンドリングを直して
# 作業中に2件キュー
> ログ出力も整えて
> READMEも更新して
# ターン終了後、「ログ出力も整えて」→「READMEも更新して」の順に
# それぞれ別のターンとして実行される1つの長いメッセージにまとめてから送るか、思いついた順にそのままキューするかは好みで選べます。ただし後者を選ぶと、Claudeが件数分のターンを順番にこなす形になるため、それぞれの指示が独立して解釈されることを踏まえて文面を書くと誤読を防げます。「さっきの続きで」のような前の指示への暗黙の参照よりも、各メッセージが単独で読んでも意味が通る書き方の方が、意図しない解釈を避けられます。
よくある勘違い
キューの挙動には直感に反する点がいくつかあります。あらかじめ知っておくと迷いません。
Escはキューを空にする操作だと誤解されがちですが、実際はキューの中身も含めてすぐに送信する操作です。キューを本当に空にしたい場合は、Upで取り戻してから入力欄を空にする手順を踏みます。
もう1つの勘違いは、/statusのような即時実行コマンドと同じ感覚で、すべてのスラッシュコマンドがキューをすり抜けると思い込むことです。実際に割り込むのは/status・/tasks・/usageのような確認系コマンドと/model(v2.1.30以降は即時反映)に限られ、/planのようなそれ以外の通常のコマンドはメッセージと同じくキューに積まれ、ターン終了を待ちます。見た目が似ているコマンドでも扱いが違うので、急ぎで送ったつもりが実は待たされていた、という取り違えが起こりやすい箇所です。
フルスクリーン表示を使っている場合、/themeや/helpのようなダイアログ系コマンドはv2.1.234以降、作業中でも即座に開きます。それより前のバージョンでは他のコマンドと同じくターン終了までキューされていたため、バージョンが古いとこの点の挙動が変わります。
キュー・割り込み・側面の質問、3つの選択肢
Claude Codeの作業中に何かを伝えたくなったとき、選べる手段はEnterだけではありません。実際には3つの選択肢があります。
今の作業は正しい方向で、追加の指示を予約したいだけならEnterでキューに積みます。今の作業が明らかに違う方向へ進んでいて今すぐ止めたいならEscで割り込みます。そして、作業の方向自体には口を出さず、Claudeが既に持っている情報について何かを確認したいだけなら、会話履歴を汚さない/btwで本流を止めずに脇道の質問をする方法が向いています。3つとも「Claudeの手を止めない」という点は共通していますが、目的が違います。キューは指示の予約、割り込みは方向転換、/btwは情報の確認です。
キューが向く場面・向かない場面
判断に迷ったら、まず「今の作業の方向性は正しいか」を自分に問い、正しければキュー、違えば割り込み、方向性とは無関係な確認なら/btw、という順に絞り込むと選びやすくなります。
| 状況 | 対応 |
|---|---|
| 今の作業と両立する追加タスクを思いついた | 対応Enterでキューに積み、区切りで渡す |
| 方針が根本的に違うと気づいた | 対応Escで中断し、今すぐ渡す |
| ビルドやテストの結果を待ってから次の指示を出したい | 対応!コマンドをキューし、ターン終了後の実行に任せる |
| いま使っているモデルの状態だけ確認したい | 対応/statusのような即時実行コマンドをそのまま送る(キュー対象外) |
まとめ
Enterはキューに積んで現在のターンを妨げず、Escはターンを中断してキューごと即送信します。メッセージはツール呼び出しの区切りでターン内に届くことがあるのに対し、コマンドとシェルコマンドはターン終了後にまとめて実行される点が異なります。取り消したいときは入力欄の先頭でUpを押せば、キューの内容を編集し直せます。
覚えておく価値があるのは、この機能が「思いついた指示を失わずに、かつClaudeの集中も途切れさせない」という2つの要求を同時に満たす設計になっている点です。キューが無ければ、追加の指示を出すたびに一度会話を止めるか、忘れないようにメモを取っておくかのどちらかを選ぶことになります。作業中の思考をそのまま入力欄に流し込めることが、この機能の実用上の価値です。
キューへの入力とあわせて、Vimキーバインドでの入力操作はClaude Code Vimモードの使い方とキー操作一覧も参考になります。