Claude Codeタスクリスト表示の見方とCtrl+T操作
Ctrl+Tで開くタスクリストが何を映し、いつ空のままなのかを解説します。/tasksとの役割の違い、圧縮後の保持、セッション間共有の設定まで扱います。
Ctrl+Tを押しても何も出ないとき
Ctrl+Tは、Claudeが複数ステップの作業を計画するときに自分で作るチェックリストを開閉するキーです。項目は保留中・作業中・完了の状態がアイコンで区別され、一度に表示されるのは最大5件までです。Claudeがまだ項目を1つも作っていなければ、押しても見た目は変わりません。
ここで読者が最初に当たる壁は「空のまま変わらない」状態です。原因は大きく3つに分かれ、確認の順番は次のとおりです。
空のままのときの切り分け順
- 1
作業がまだ単純かを見る
チェックリストの項目は、Claudeが複数ステップの作業を計画したときに作られます。単発の質問や小さな修正だけなら、何も作られないまま終わります。
- 2
モデルが既定の対象かを見る
タスク管理のツール自体が渡されるのは、Claude 3.x・Opus 4〜4.7・Sonnet 4〜4.6・Haiku 4.5だけです。それ以外のモデルでは、作業が複雑でもリストは空です。
- 3
モデルIDが認識されているかを見る
LLMゲートウェイ越しの独自モデル名など、Claude Codeが知らないモデルIDも「それ以外」に入ります。対象モデルのつもりでも空になるのはこの場合です。
- 4
ツールを明示的に有効にする
CLAUDE_CODE_ENABLE_TODO_TOOLS=1を付けて起動すると、全モデル・全プロバイダーでツールが渡されます。
3つ目と4つ目の詳細は後半の節で扱います。
タスクリストと/tasksは別の画面
名前も見た目も近い2つですが、映しているものが違います。Ctrl+TはClaude自身の計画を、/tasksは実際に動いている処理を見せます。
Ctrl+Tと/tasksの違い
Ctrl+T のタスクリスト
Claudeが複数ステップの作業を計画するために作ったチェックリストです。空になる主因は、Claudeがまだ計画を立てていないか、そのモデルにツールが渡されていないことです。
/tasks
実行中のバックグラウンドシェルとサブエージェントを見せ、終わったサブエージェントも一覧に残ります。/bashesという別名でも呼べます。バックグラウンドの処理が無ければ空です。
サブエージェントに任せた作業の途中経過を追うなら/tasks、Claudeが組んだ計画のどこまで進んだかを追うならCtrl+Tです。サブエージェントの設計はClaude Code Sub-agents完全ガイドで扱っています。
サブエージェント自身が作ったチェックリストは、Ctrl+Tにも/tasksにも出ません。見たいときは/workflowsのエージェント詳細を開きます。v2.1.265から、サブエージェントにタスクリストがあればそこに表示されます。
Ctrl+Tは画面によって別の働きをします。/themeのピッカーを開いている間はコードブロックの構文ハイライトの切り替えになり、claude agentsの画面ではバックグラウンドセッションを固定する操作に使われます。タスクリストを開くつもりで押して別の反応が返ってきたら、いまどの画面にいるかを見てください。
開いた状態と件数の扱い
Ctrl+Tを押すたびに、タスクリストの表示と非表示が切り替わります。開いたまま作業が進めば、状態の変化はそのまま画面に反映されます。
5件を超える項目があるときは、画面に出るのは5件までです。全件を見たいときと、リストを空にしたいときは、専用のキーが無いので会話でClaudeに頼みます。
- 「show me all tasks」のように頼むと、全件を確認できます
- 「clear all tasks」のように頼むと、リストをクリアできます
展開したままにしておくと、その状態は覚えられます。タスクが残っているセッションに--resumeや--continueで戻ったとき、展開した表示で再開します。タスクが空のときは折りたたまれた状態で始まります。この復元はv2.1.235の修正で入ったもので、それ以前は再開のたびに折りたたまれていました。
コンテキスト圧縮をまたいで残る
長時間のセッションでコンテキストが圧縮されても、タスクは保持されます。会話の細部が圧縮で落ちても、チェックリストの状態は残るため、大きな作業を何度も圧縮を挟みながら進めるときの「いま何が終わったか」の記録になります。
セッションをまたいで共有する — CLAUDE_CODE_TASK_LIST_ID
複数のClaude Codeインスタンスで同じタスクリストを使うには、環境変数CLAUDE_CODE_TASK_LIST_IDに共通の名前を設定します。
CLAUDE_CODE_TASK_LIST_ID=my-project claude同じIDで起動した別のセッションは、~/.claude/tasks/の下にある名前付きのディレクトリを通じて同じリストを見ます。ターミナルのタブを複数開いて1つのプロジェクトを並行して進めるときに、進捗を二重に管理せずに済みます。ただしこの共有も、タスク管理のツールが渡されているセッションでだけ働きます。
Agent teamsでは共有タスク一覧になる
複数のセッションを束ねるAgent teamsでは、タスクリストはチーム全体の進捗台帳になります。インプロセスモードでは、エージェントパネルの表示中にもCtrl+Tでタスクリストを開閉できます。
- 状態は保留中・作業中・完了の3つで、タスクどうしの依存関係を持てます。依存先が終わっていない保留タスクは、他のチームメイトが拾えません
- リードが特定のチームメイトに割り当てる方法と、作業を終えたチームメイトが次の未割り当てで依存の解けたタスクを自分で拾う方法の、両方が使えます
- 複数のチームメイトが同じタスクを同時に取ろうとしても、ファイルロックで競合が防がれます
依存は、前提のタスクが完了した時点で自動的に解除されます。ただしチームメイトが完了をつけ忘れることがあり、その間は後続のタスクが止まります。止まって見えるときは、作業が本当に終わっているかを確かめます。終わっていれば状態を手で更新するか、リードにチームメイトへ促させます。
保存先も単独のセッションとは違います。チーム名はsession-にセッションIDの先頭8文字を続けた形で、タスクは~/.claude/tasks/{チーム名}/に置かれます。このディレクトリはセッションが終わっても残り、アップロードはされません。再開したセッションがタスクを引き継げるのはそのためです。保持期間はセッション記録と同じcleanupPeriodDaysの掃除規則に従います。
一方、チームの設定は~/.claude/teams/{チーム名}/に置かれ、セッションが終わると消えます。残るのはタスクだけです。しかも/resumeや/rewindでは、インプロセスのチームメイトは復元されません。残ったタスクを拾わせるには、新しくチームメイトを立てます。
Agent teams自体が既定では無効な実験的機能で、CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1を設定しないとチームは組まれません。有効にしても、タスク管理のツールが無いエージェントは共有タスクリストに参加できず、メッセージのやり取りだけで調整します。ツールが渡されるかどうかは、チームメイトの動かし方で決まり方が違います。
- インプロセスのチームメイトとサブエージェントは、メインのセッションにツールがあるときだけ受け取ります。サブエージェントが別のモデルで動いていても同じです
- 別のペインで動くチームメイトは独立したClaude Codeのプロセスなので、そのチームメイト自身のモデルで決まります
メインのセッションにツールがあるのに、フォアグラウンドのサブエージェントだけ欠けることがある不具合は、v2.1.286で直っています。サブエージェントのリストだけ空なら、まず版を確認します。
新しいモデルでタスクリストが空になる理由
ツールの既定の渡し方は、短い間に二度変わっています。
タスク管理ツールの既定が変わった経緯
- v2.1.233(8月14日)新しいモデルでは渡さなくなった
Opus 4.8・Sonnet 5・Fable 5・Mythos 5とそれ以降のモデルで、ツールが利用できなくなりました。同じ版で、全モデルに戻す
CLAUDE_CODE_ENABLE_TODO_TOOLS=1が加わっています。 - v2.1.235(8月18日)展開表示を再開時に復元
タスクが残るセッションへ戻ったとき、展開したリストが折りたたまれてしまう問題が直りました。
- v2.1.268(9月10日)対象モデルの許可リスト化
渡すモデルを列挙する方式になりました。列挙されていないモデルと、Claude Codeが認識しないモデルIDには渡されません。
v2.1.268以降の規則は、渡すモデルを数え上げる形です。Claude 3.x・Opus 4〜4.7・Sonnet 4〜4.6・Haiku 4.5が既定の対象です。理由は2つ示されています。新しいモデルは書き出したチェックリストがなくても多段の作業を追えること、そしてツールの定義と注意書きがコンテキストを使うことです。
旧世代のモデルを使っていて空になるなら、モデルではなく前述の切り分けの1つ目を疑います。有効にする方法はCLAUDE_CODE_ENABLE_TODO_TOOLS=1のほか、次の3つがあります。
--allowedToolsにツール名を入れる(例:claude --allowedTools TaskCreate)--toolsにツールを列挙する。この場合は他に使う組み込みツールも並べます- Agent SDKの
allowedToolsとtoolsオプション(2つのフラグと同じ働き)
環境変数は、Claude Codeを起動する前に設定します。バックグラウンドセッションとクラウドセッション(Claude Code on the web)では、対象のモデルかどうかにかかわらず常にツールが渡されます。
既定オフの経緯と、Hook・Agent teamsへ及ぶ連鎖の影響はClaude Code TodoツールがOpus 4.8以降で既定オフになった件にまとめています。
旧来のTodoWriteを使い続ける場合
ツールが渡されるセッションでは、既定でTaskCreate・TaskGet・TaskUpdate・TaskListの4つが使われます。CLAUDE_CODE_ENABLE_TASKS=0を設定すると、代わりにレガシーなTodoWriteが使われます。この環境変数は「どちらのツールを渡すか」を選ぶだけで、ツールを渡すかどうかはモデルとCLAUDE_CODE_ENABLE_TODO_TOOLSが決めます。2つを混同しやすいので、並べて覚えておくと切り分けが速くなります。
| 設定 | 決めること |
|---|---|
CLAUDE_CODE_ENABLE_TODO_TOOLS=1 | 決めること対象外のモデルでもツールを渡すか |
CLAUDE_CODE_ENABLE_TASKS=0 | 決めること渡すツールをTodoWriteに切り替えるか |
使えるコマンドの全体像はClaude Codeスラッシュコマンド一覧にまとめています。/tasksと/recapを含めて、役割別・頻度別に引けます。
よくある質問
タスクリストは全部で何件まで保持されますか
画面に出るのは5件までですが、超えた分が消えるわけではありません。全件を見るには「show me all tasks」のようにClaudeに頼みます。保持件数の上限は、公式の説明に記載がありません。
モデルの都合でリストが空のとき、/tasksも空になりますか
なりません。/tasksが映すのはバックグラウンドで動くシェルとサブエージェントで、Claudeが書き出すチェックリストとは別の仕組みです。モデルに関係なく、動いている処理があれば表示されます。
まとめ
Ctrl+Tで見えるのは、Claudeが計画した作業のチェックリストだけです。空のまま動かないときは、作業が単純なのか、モデルが対象外なのか、モデルIDが認識されていないのかの順に切り分けます。必要ならCLAUDE_CODE_ENABLE_TODO_TOOLS=1で起動し直します。