Ctrl+B(コントロール・ビー)

キーバインド
Ctrl+B
コントロール・ビー
Claudeが実行中のBashコマンドやサブエージェント(Claudeから切り出された別の作業者)を背景に送るキー操作。コマンドは走り続けたまま、Claudeはすぐ次の指示を受け付ける状態に戻る。tmux配下では2回連打が必要

Claude Codeで長時間Bashコマンド(テスト一式・ビルド・dev サーバー起動など)が始まった時、待たずに別の作業を続けたい人向け

e2eテスト一式が30分かかる、Dockerビルドが10分待ち、Viteの開発サーバーを立ち上げっぱなしにする、といった「長い処理を回してる間に手元で別作業を進めたい」場面で、Claudeが実行中のコマンドの最中に Ctrl+B を押す。手元のターミナルがtmux配下なら2回連打

Claude Codeで「もう走り始めちゃったテスト一式」「読み込みが終わらない大きなビルド」を、止めずに裏側へ送り込むためのキー操作が Ctrl+B です。Bashコマンドが画面を占有して次の指示が打てない、あの待ち時間を解消するために用意されています。

もう1段ずらして言うと、Ctrl+B は「Claudeを別作業に解放するためのスイッチ」です。コマンドはそのまま走り続け、Claudeはすぐ次のプロンプトを受け付ける状態に戻ります。

噛み砕くと、Claudeが手に持ってる重い荷物を「足元に置いてって」と言うキー

Claudeが長いBashコマンドを実行している間、Claudeの「手」はその仕事で塞がっています。新しい指示を出しても、いま走ってる処理が終わるまで返事ができない。

Ctrl+B はその荷物を一時的に床に置かせる動作です。荷物(実行中のコマンド)はそのまま動き続けますが、Claudeの手は空く。「テストを回しといて、その間に別のファイル直して」と並行作業を頼める状態になります。

地味だけど効きます。

大事な前提:これは「いま実行中のコマンド」を裏に回すキー

Ctrl+B は何もしてない時に押しても意味がありません。Claudeが Bashツールでコマンドを走らせていて、出力がだらだら流れているか、終わるのを待っている、その最中に押すキーです。

もう1つ。最初から「裏で走らせて」と Claudeにお願いするパターンもあって、その場合は Claude側が背景タスクとして起動します。Ctrl+B は逆で、「手前で走らせ始めちゃったやつを、今から裏に回す」目線側のアクション。入り口は違いますが、結果は同じ背景タスクになります。

「料理ブログのバックエンドで npm run test:e2e が30分かかる」を例に、実際の手順を見る

料理ブログのバックエンドを作っていて、Playwrightで書いたエンドツーエンドテスト一式を走らせたい。テストの中身はログイン→レシピ投稿→画像アップ→公開→検索ヒット、までの流れを丸ごと通すもので、手元の見積もりで30分コース。これを背景に送って、その間にフロント側のCSSを直したい、というシナリオで動きます。

ステップ1: テストを普通に叩いてもらう

Claudeに「e2eテスト一式を流して」と頼むと、Claudeは Bashツールで npm run test:e2e を実行します。画面には Playwright の起動ログがダラダラ流れ始める。

$ npm run test:e2e

> cooking-blog@0.1.0 test:e2e
> playwright test

Running 84 tests using 4 workers
  ✓  1 [chromium] › login.spec.ts:8 (2.1s)
  ✓  2 [chromium] › login.spec.ts:24 (1.8s)
  ...

ここまでは普通の Bash 実行です。Claudeの「手」はこのコマンドで塞がっている状態。

ステップ2: Ctrl+B を1回押す

キーボードで Ctrl と B を同時に押します。Claude Code はそのコマンドを背景に移動させ、ユニークな ID を割り振って、すぐ次のプロンプトを受け付ける状態に戻ります。

画面には「背景タスクとして継続中」みたいな表示が出て、プロンプト入力欄が復活します。

tmux配下で動かしている人は注意。tmuxは「Ctrl+B を押すと次のキーが tmuxへの命令」というルール(prefix key)でできているので、1回目の Ctrl+B は tmux に取られてしまいます。Claude Code に伝えるには Ctrl+B を 2回連打する必要があります。

ステップ3: 別作業をClaudeに頼む

Claudeの手が空いたので、その場で「app/recipes/list.tsx のカード余白を24pxに広げて」みたいな別タスクを頼めます。Claudeは普通に Read→Edit→Write の流れで手元のファイルを書き換え始めます。

背景では Playwrightテストが進行中。手前では CSS 修正が進行中。2レーン並走の状態。

ステップ4: 背景タスクの状態を確認する

CSS修正が一段落したところで、テストがどこまで進んだか見たくなります。Claudeに「裏で動いてるテスト、進捗どう?」と聞くか、/tasks を叩きます。

/tasks
─────────────────────────────
ID    Status   Command
1     running  npm run test:e2e
─────────────────────────────

背景タスク1がまだ走ってる、というのが分かります。

ステップ5: テストの出力を読む

ここがよく間違えるポイントです。背景タスクの出力はファイルに書き出されているので、Claudeに「テストの出力ファイルを Readで開いて」と頼むのが現代の作法。

Claudeは /tasks で表示された出力ファイルの場所を確認して、Read ツールでその中身を読みに行きます。

Claude: テスト出力を確認しますね。
        Read tool で出力ファイルを開いて、
        失敗してる4件のエラーメッセージを抽出します。

  ✗ recipe-create.spec.ts:48 - 画像アップロード後の
                               プレビュー表示が3秒以内に出ない
  ✗ search.spec.ts:12 - ひらがな検索でローマ字レシピが
                        ヒットしない(想定外挙動)
  ...

古い記事や古い情報源に「TaskOutput ツールで取れ」と書いてあることがありますが、これは廃止予定です。Read で取りに行く。

ステップ6: テスト終了後、必要なら停止

テストが想定外に長引いていて切りたい時、もしくは別のコマンドを背景化していて要らなくなった時は /tasks から該当タスクを止められます。普通に最後まで走り切る場合は何もしなくてOK。Claude Code セッションを終了すると、走ったままの背景タスクは自動で片付けられます。

Ctrl+B でできること・できないこと

  • できる: 実行中の Bashコマンドを背景に送って Claudeの手を空ける。実行中のサブエージェントも同じく背景化できる
  • できる: ! から始めて私が直接打ったコマンドも、同じ Ctrl+B で背景化できる
  • できない: 完全に独立した常駐プログラムを立ち上げておく用途。Claude Code セッションを終了したら背景タスクは全部片付けられるので、サーバー常駐させたいなら別の仕組みが必要
  • 意味が薄い場面: 数秒で終わるコマンド。背景化する手間のほうが大きい

使いどころ3シナリオ

シナリオ1: e2eテストが30分かかる、その間にCSSを直したい時

本記事の例そのまま。Playwrightで84ケース回すと30分は普通。テストが走ってる間 Claudeを遊ばせるのはもったいない。Ctrl+B で裏に回して、フロントの細かい修正やドキュメント整備を並走で進める。テスト結果は終わってから Read で読み返せばいい。

シナリオ2: 大きめの Docker ビルドを待っている時

docker compose build でイメージを1からビルドする場面。Node.js も Python も Rust も乗ってる複合スタックだと10〜15分待ち。Claudeに「ビルドを始めて、その間に README の構成案を書いて」と続けて頼めば、ビルドはバックグラウンド、Markdown 執筆はフォアグラウンドで並走する。終わったら Read でビルドログを確認してエラーがあれば対応。

シナリオ3: 開発用サーバーを立ち上げっぱなしにしたい時

Viteの dev サーバーを立てて、Claudeに UI修正を順次やってもらう運用。npm run dev はずっと走り続けるコマンドなので、これを Ctrl+B で背景に送らないと Claudeが永遠に塞がる。背景化しておけば、Claudeは Edit を投げる→ホットリロードで反映→次の修正、というループに入れる。エラーが出ているか確認したい時だけ、Claudeに dev サーバーの出力ファイルを Read してもらう。

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

  • tmux 配下では Ctrl+B を2回連打。1回押すと tmux 側に吸い込まれて、Claude Code には何も伝わらない。「Ctrl+B を押したのに反応がない」と感じたら、まず手元のターミナルが tmux の中にいないか確認する
  • 背景化したコマンドの出力は Read ツールで取りに行く/tasks で出力ファイルの場所を確認 → Read で読む、が現在の作法。古いドキュメントに出てくる TaskOutput ツールは廃止予定なので使わない
  • 5GBを超えると勝手に止まるdocker logs -f みたいに延々ログを吐き続けるコマンドを背景に送って忘れると、出力ファイルが5GBに達した時点で自動終了する。慌てなくていい、stderrに「サイズ超過で止めた」と理由が書き残されるので原因はすぐ分かる
  • セッションを抜けると背景タスクは全部消える。Claude Code を終了させると、走っていた背景タスクは全部クリーンアップされる。本番サーバーのように常駐させたいプログラムは、Claude Code の役割外。systemd など別の仕組みで管理する
  • パソコン側の設定で機能ごと止められている可能性。パソコンが起動時に覚えてる設定値のなかに CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1 がセットされていると、背景タスク機能ごと無効化されていて Ctrl+B を押しても何も起きない。会社のセキュリティ要件で禁止されているケースがあるので、反応しない時はこれも疑う
  • 「Bash限定」と思い込まない。公式は「Backgrounds bash commands and agents」と明記している。長時間走るサブエージェントも同じ Ctrl+B で裏に回せる。複数の調査を並列で投げて、メインのClaudeとの会話は止めない、みたいな使い方もできる
  • 背景タスクのIDを覚えておく必要はない/tasks でいつでも一覧が出てくる。IDを暗記する文化ではない

書き方

Ctrl+B(tmux配下では2回連打)

やってみるとこうなる

入力

(Claudeが npm run test:e2e を実行中の画面で)Ctrl+B

出力例

コマンドは背景タスクIDが割り振られて走り続け、プロンプト入力欄が復活する。出力は自動的にファイルに書き出されるので、後から「テストの出力ファイルを Readで開いて」とClaudeに頼めば中身を確認できる。一覧確認は /tasks

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

Bashコマンド
黒い画面(ターミナル)で打ち込む命令文。<code>npm test</code> や <code>docker compose up</code> のように、Claudeが目の前のパソコンで実行する処理
背景タスク
Claude Codeが裏で走らせてくれる処理。実行中の表示が消えてもコマンド自体は動き続け、出力はファイルに自動保存される
tmux
1つのターミナル画面を複数エリアに分割したり、閉じても作業を残したりできるツール。サーバー作業をする人がよく入れている
prefix key
tmuxが「次のキーは私への命令」と判断するための合図キー。デフォルトが Ctrl+B なので Claude Code の Ctrl+B とぶつかる
サブエージェント
メインのClaudeから「これ調べてきて」と切り出された別の作業者Claude。並列で動く小型のClaudeのようなもの
stderr
コマンドがエラーや警告メッセージを吐き出す専用の出口。通常の出力とは別扱いで、エラーだけ別ファイルに集めたりできる
/tasks
背景に送ったタスクの一覧表示・停止に使うスラッシュコマンド。別名 <code>/bashes</code>

関連項目

公式ドキュメント

https://code.claude.com/docs/en/interactive-mode

-

← 戻る