Claude Code のバックグラウンドセッションと agent view

Claude Code エンジニアリング 7分で読めます

Claude Code は、いま入力している作業を止めずに別の仕事を走らせられます。claude --bg でセッションを最初から背後に置き、claude agents で開く agent view に一覧して、必要なときだけ手元のターミナルへ引き寄せる、という流れです。本記事では公式ドキュメントの Agent view(リサーチプレビュー)に基づき、起動の入口・一覧画面の操作・ターミナルからの管理コマンド・worktree による分離までを順に説明します。

バックグラウンドセッションとは

バックグラウンドセッションは、ターミナルを占有せずに動き続ける Claude Code のセッションです。通常のセッションは起動したターミナルの中で対話しますが、バックグラウンドに置いたセッションは自分の裏で作業を進め、こちらは別の作業を続けられます。

この仕組みが効くのは、待ち時間が長い仕事です。テストの調査、依存関係の更新、大きめのリファクタリングのように「投げてしばらく放っておく」タイプの作業を複数同時に走らせ、終わったものから見に行く、という進め方ができます。

セッションには状態があり、agent view の一覧では次のように区別されます。

状態意味
Workingツールの実行や生成が進行中
Needs input承認や回答を待って止まっている
Idle次の指示を受け付けられる
Completed作業が正常に終わった
Failedエラーで終わった
Stopped停止させた

プロセスが生きているかどうかは状態とは別に示されます。プロセスが終了していても、結果を覗いたり返信したりはできます。

セッションを背後に回す3つの入口

入口は3つあり、どれを使っても同じバックグラウンドセッションになります。

1. シェルから直接始める

claude --bg "your task description"

最初からバックグラウンドで起動し、すぐにプロンプトが戻ります。投げっぱなしにしたい仕事はこれが最短です。

2. agent view から投げる

claude agents

一覧画面を開き、プロンプトを入力して Enter を押すと、新しいバックグラウンドセッションが立ち上がります。すでに走っているセッションを見ながら次の仕事を足せるので、複数を並べて進めるときはこちらが扱いやすくなります。

3. いま開いているセッションを背後へ回す

/background
# または
/bg "additional instruction"

対話中のセッションの中でこのコマンドを打つと、そのセッションがそのままバックグラウンドへ移ります。/bg に文字列を渡すと、背後へ回すのと同時に追加の指示を与えられます。空のプロンプトで を押しても、現在のセッションを背後に回して agent view を開く動作になります。

agent view の見方と操作

claude agents で開く画面は、走っているセッションを行として並べた表です。キー操作は次のとおりです。

キー動作
/ 行を移動する
Enter選択中のセッションへ接続する、または新規に投げる
Spacepeek パネルを開閉する
選択中のセッションへ接続する
Ctrl+Sグループ分けを切り替える(状態別 / ディレクトリ別)
Ctrl+Tセッションをピン留め・解除する
Ctrl+Rセッションの名前を変える
Ctrl+Xセッションを停止する。もう一度押すと削除する
Shift+↑ / Shift+↓並び順を入れ替える
Esc終了、またはパネルを閉じる
?すべてのショートカットを表示する

peek で中身だけ見る

行を選んで Space を押すと peek パネルが開きます。待ち状態なら「何を聞かれているか」、終了済みなら結果、作業中なら状況の1行が出ます。そのまま返信を入力して Enter を押せば、一覧を離れずに答えられます。Tab で返信候補が出ます。

接続と切り離し

会話の全体を見たいときは Enter で接続します。接続するとターミナルが通常の対話セッションになります。戻るには、空のプロンプトで を押すか、/exit を実行するか、Ctrl+Z(元の場所へ戻る)か、Ctrl+C の2回押しを使います。

投げ方のバリエーション

<agent-name> <prompt>      # サブエージェントを指定して投げる
@<agent-name> <prompt>     # 同上
@<repo> <prompt>           # ディレクトリを指定して投げる
! <command>                # シェルコマンドをバックグラウンドジョブとして走らせる
/model opus                # このあとの投入に使うモデルを決める
/model default             # 既定へ戻す

外部エディタで長いプロンプトを書きたいときは Ctrl+G を使います。

ターミナルからの管理コマンド

agent view を開かずに、シェルから直接扱うこともできます。セッションIDは claude --bg で起動したときに表示され、~/.claude/jobs/ 配下のディレクトリ名と一致します。

claude attach <id>           # セッションをこのターミナルで開く
claude logs <id>             # 直近の出力を表示する
claude stop <id>             # セッションを停止する
claude respawn <id>          # 会話を保ったままセッションを再起動する
claude respawn --all         # すべてのセッションを再起動する
claude rm <id>               # 一覧からセッションを取り除く
claude agents --cwd <path>   # 指定ディレクトリのセッションだけ見る
claude agents --json         # セッション一覧を JSON で出す
claude daemon status         # バックグラウンドの管理プロセスの状態を見る
claude daemon stop --any     # バックグラウンドサービスを止める

claude agents --json は、スクリプトから状態を拾いたいときに使えます。claude respawn は会話の内容を保ったまま再起動するので、モデルを変えてやり直したいときに便利です。設定したモデルは再起動後も引き継がれます。

起動時の設定を引き継ぐ

agent view を開くときにフラグを渡すと、そこから投げるセッションにも設定が伝わります。

claude agents --permission-mode plan --model opus --effort high
claude agents --settings ./config.json --add-dir ../lib

引き継がれるのは --mcp-config--settings--add-dir--plugin-dir--fallback-model です。権限モードについては権限モードの選び方もあわせてご覧ください。

worktree 分離と注意点

バックグラウンドセッションは、ファイルを編集する前に .claude/worktrees/ 配下の独立した git worktree へ自動的に移動します。複数のセッションが同じリポジトリで同時に手を動かしても、互いの編集を踏まないようにするためです。

この分離が不都合な場合は、.claude/settings.json で切れます。

{
  "worktree": {
    "bgIsolation": "none"
  }
}

切る前に、なぜ分離されているのかを考えてください。分離を外すと、並列に走るセッションが同じファイルを同時に書きます。

把握しておくべき制約

並列作業そのものについてはworktree で Claude Code を並列実行する、セッションの再開や命名についてはClaude Code のセッション管理で扱っています。