Claude Media
Claude Codeの/backgroundと/stopコマンドの使い方

Claude Codeの/backgroundと/stopコマンドの使い方

/backgroundは今の会話をバックグラウンドエージェントへ送ってターミナルを解放し、/stopはそのセッションを終了します。デタッチとの違いも解説します。

Claude Codeの/backgroundと/stopとは

/background(エイリアス/bg)は、今の対話セッションをバックグラウンドエージェントとして走らせたまま切り離し、手元のターミナルを解放するコマンドです。プロンプトを添えれば、切り離す前にもう1つ指示を渡せます。切り離したセッションはclaude agentsで開くagent viewから状態を確認できます。

/stopは逆にセッションを終了させるコマンドです。ただしアタッチ中(そのセッションに入っている状態)でしか実行できません。停止してもトランスクリプトと使用中のworktreeは残ります。

紛らわしいのは、Claude Codeに「1つのシェルコマンドをバックグラウンドで実行する」機能も別にある点です。MCPの長時間ツール呼び出しが自動でバックグラウンド化する仕組みは、さらに別の第3の挙動です。

くらべる

似た名前の2つを分ける

会話全体

/background

新しいエージェントセッションが生まれ、会話と進行中の作業が移ります。ターミナルは空き、claude agentsに行が増えます。

1コマンド

バックグラウンドシェルコマンド

Bashツールが1つのコマンドを非同期に走らせるだけです。ビルドやテストを裏で回したいだけなら、こちらで足ります。

失敗テストの調査を任せて、ターミナルを空ける

たとえば、原因がすぐには分からない失敗テストの調査と修正をClaudeに任せる場面です。指示を出し、/bgで切り離し、あとで結果を見に戻ります。

手順

/backgroundからの一連の流れ

  1. 1

    いつもどおり指示を出す

    テストの調査と修正を頼みます。応答中でも構いません。応答は切り離したあとのセッションで続きます。

  2. 2

    /bgを実行する

    /bgだけでも、/bg 直したらPRの下書きまで作ってのように指示を足しても動きます。ターミナルはその場で空きます。

  3. 3

    claude agentsで様子を見る

    調査中か、修正を提案する段階かが行の状態で分かります。

  4. 4

    結果を確認して片付ける

    アタッチして最終確認し、不要なら/stopでセッションを終了します。

ターミナルを1つ占有せずに、複数のタスクを並行して進められるのがこの組み合わせの利点です。

/backgroundで引き継がれるものと止まるもの

/backgroundは、保存済みの会話から新しいプロセスを立ち上げ、進行中の作業をそこへ引き継ぎます。ターミナルを閉じるだけでは対話セッション自体が終わりますが、/backgroundなら会話とその中の作業を保ったまま切り離せます。

引き継がれて動き続けるのは、実行中のバックグラウンドシェルコマンドとバックグラウンドのサブエージェントです。動的ワークフロー、/loopのスケジュールタスク、アーティファクトコメントへのClaudeの自動返信も引き継がれます。サブエージェントは、自分が起動した作業ごと移せるときだけ引き継がれます。

止まるのは、状態がプロセス内部にしかない作業で、代表例が実行中のmonitorツールです。止まる作業があるとBackground this session?というダイアログが出ます。/tasksで今動いているものを確認してから続行できます。動的ワークフローのサブエージェントが動いていても同じダイアログが出て、続行すると途中のサブエージェントは最初からやり直しになります。使ったトークンは再び消費されます。

引き継ぎ自体をやめたいなら、CLAUDE_DISABLE_ADOPT=1を設定します。実行中の作業は引き継がれずに止まり、バックグラウンド化の前に確認を求められます。

MCPサーバーの設定、--add-dirで足したディレクトリ、--fallback-model、--settings、--setting-sourcesといった起動時の設定は、そのままバックグラウンドセッションに持ち越されます。

←と/exitでも同じ引き継ぎが動く

フォアグラウンドのセッションで空のプロンプトから←を押すと、バックグラウンド化してagent viewを開くところまで一度にできます。ツール実行中なら、最大10秒ほど終了を待ってから切り離します。もう一度←を押せば待たずに切り離せます。

プロンプトに未送信の文字が残っていると切り離しは取り消されます。文字は手元の入力欄に残り、バックグラウンド側へは移らないためです。

サブエージェントやバックグラウンドシェルコマンドが動いたまま/exitすると、すぐには終了せずBackground work is runningダイアログが出ます。Move to background and exitを選ぶと、/backgroundと同じ切り離しをしてシェルへ戻れます。

デタッチ・停止・削除の違い

←、Ctrl+Z、/exit、素早く2回押すCtrl+CやCtrl+Dは、いずれもデタッチです。セッションは終了せず、ターミナルから離れるだけです。/exitは通常の対話セッションではCLIを終了させますが、アタッチ中のバックグラウンドセッションではデタッチになります。

使い分け

操作は3段階に分かれる

  • 離れる(デタッチ)

    ← / Ctrl+Z / /exit。セッションは動き続けます。少し席を外すだけならこれです。

  • 止める(stop)

    アタッチ中の/stop、shellからのclaude stop <id>(エイリアスclaude kill)、agent viewで行を選んでCtrl+X。会話とworktreeは残り、claude attach <id>で再開できます。

  • 消す(rm)

    claude rm <id>、またはagent viewでCtrl+Xを2回。一覧から消え、Claudeが作ったworktreeも消える場合があります。

/stopはアタッチ中にしか実行できないので、アタッチしていないセッションはclaude stopかagent viewから止めます。

rmはworktreeの扱いが2通りある

消し方でworktreeの扱いが違います。agent viewでの削除は、コミットしていない変更ごとworktreeを消します。claude rmはコミットしていない変更があるとworktreeもセッションも残します。

未プッシュのコミットがあるworktreeは、どちらの経路でも削除が止まります。破棄するなら、agent viewではもう一度Ctrl+Xを2回押します。claude rmでは、拒否時に表示された--discard-unpushed付きのコマンドを、表示された値のまま実行します(v2.1.260以降)。

リモートにあるコミットは、削除を止める対象になりません。手元のorigin既定ブランチのコピーにあるコミットも、そのブランチをメインのチェックアウトで開いているあいだは対象外です。

残したい変更は、先にコミット(必要ならプッシュ)してから削除します。agent viewの削除は、未コミットの変更ごと消します。

v2.1.285で確認したヘルプの出力

手元のv2.1.285で、管理系サブコマンドのヘルプを実行しました。

claude --version
claude stop --help
claude rm --help
claude respawn --help

出力は次のとおりです(rmの長い説明は途中を省略)。

2.1.285 (Claude Code)
 
Usage: claude stop <id>
  Stop a background session. Its conversation is kept; resume it later with `claude attach <id>`.
 
Usage: claude rm <id> [--discard-unpushed <commit>@<worktree-id>] [--force-remove-worktree <worktree-id>]
  Delete a background session and its worktree. Unlike `stop`, works on already-exited sessions.
 
Usage: claude respawn <id>|--all
  Restart a background session (or all of them) so it picks up the current Claude binary.

stopは再開先がclaude attachだと明記されています。respawnのヘルプは「現在のClaudeバイナリを拾うための再起動」と説明しています。docsでは実行中・停止中のどちらにも使え、保存済みの会話から再開し、会話が残っていなければ最初のプロンプトを新しい会話として実行し直すと書かれています。停止したセッションを続けるだけなら、claude attachや返信で足ります。rmはstopと違い、すでに終了したセッションにも使えます。

claude --helpには--bg, --backgroundも出ます。セッションを起動してすぐ戻り、claude attach・logs・stop・rmに渡すIDを表示するフラグです。ターミナルで対話せずに、最初からバックグラウンドで始めたいときに使います。

放置したセッションはどうなるか

バックグラウンドセッションは、完了した状態、または次のメッセージ待ちの状態で誰もアタッチしないまま1時間ほど経つと、プロセスだけが止まります。会話とworktreeは残り、次にアタッチや返信をした時点で続きから再開します。Ctrl+Tでピン留めしたセッションは、この自動停止の対象になりません。

作業中のセッション、権限確認などのダイアログで止まっているセッション、アタッチ中のセッションのプロセスは動き続けます。動いているサブエージェント、ワークフロー、monitorも作業中として数えられます。これは/stopとは別の、リソースを空けるための仕組みです。

PCをスリープ・シャットダウンしたとき

スリープ中はセッションが保たれ、復帰すると処理を再開します。シャットダウンや再起動は別で、動いていたセッションが止まります。

一覧にどう見えるかは、止まる前の進捗からの経過時間で変わります。入力待ちだったセッションはNeeds inputのままです。

  • 48時間以内: failedと表示されます。アタッチするか返信すると、続きから再開します
  • 48時間を超える: 一覧ではended while the background service was offつきのstoppedになります。Enterを2回押すか、返信またはclaude attach <id>で会話を再開します

保存された会話がトランスクリプトのクリーンアップで消えていると、開こうとしても再開できません。claude respawn <id>なら、最初のプロンプトを新しい会話として実行し直します。

今どの種類のセッションにいるか

/statusの「Session kind」欄で分かります。

表示意味
background job · attached意味ターミナルをつないでいるバックグラウンドセッション
background job · unattended意味誰もアタッチしていないバックグラウンドセッション
interactive意味通常の対話セッション

アタッチせずに出力だけ見たいときは、claude logs <id>が直近のターミナル出力を表示します。スクリプトから一覧を取りたいなら、v2.1.285のclaude agents --helpに--jsonがあります。有効なセッションを、対話型もバックグラウンドも含めてJSON配列で出して終了するオプションで、TTYは要りません。--allを足すと、完了したバックグラウンドセッションも含まれます。

状態アイコンやキーバインド、agent view全体の操作はagent viewガイドで扱っています。会話をコピーして裏で並走させたい場合は/backgroundではなく/forkが向いており、その違いは/branchコマンドの記事で/fork・/subtaskとあわせて比べています。

まとめ

離れるだけなら←か/exit、そのタスクを終えるなら/stop、記録ごと消すならclaude rmです。Background this session?が出たら、止まる作業が本当に捨てて構わないものかを/tasksで見てから続行します。

この記事を共有:XはてブLinkedIn