Claude CodeのPlan Mode:複雑なタスクへの活用
Claude CodeのPlan Modeを解説。仕組み、4つの有効化方法、読み取り専用の制限、作業手順、簡単な修正で使わない判断基準まで。
Plan ModeはClaude Codeにおける読み取り専用の権限状態です。この状態では、Claudeはファイルの読み取り、コードベースの検索、読み取り専用のシェルコマンドの実行、Web検索、確認のための質問を行うことができますが、計画を承認するまでソースの書き込み・編集や状態変更を伴うコマンドの実行は行えません。
多くの開発者は、痛い経験を通じてこの機能の必要性を実感します。変更を一つ依頼して少し目を離した隙に、エージェントが確認する機会もなかった仮定に基づいて、いつの間にか数ファイルを書き換えていた、という状況です。Plan Modeは「こうしたい」という要求と、最初の編集がディスクに書き込まれる瞬間の間に一時停止を設けます。問題が起きるのは、まさにその瞬間であることがほとんどです。本記事では、Plan Modeとは何か、有効化する4つの方法、実際の読み取り専用の境界(プロンプトと権限によって強制されるものであり、ハードなサンドボックスではない)、複数ファイルのリファクタリングにおけるワークフロー、そして計画が純粋なオーバーヘッドになるケースについて解説します。
重要なポイント
- Plan Modeは読み取り専用の権限モードです。Claudeはリサーチと変更案の提示を行いますが、計画を承認するまでソースの編集は行いません。
- 有効化する方法は4つあります。
Shift+Tabを押してplanまで切り替える、プロンプトの先頭に/planを付ける、claude --permission-mode planで起動する、またはsettings.jsonのpermissions.defaultModeをplanに設定する方法です。 - この境界は、注入されたシステム命令と権限システムによって強制されており、ハードなサンドボックスではありません。そのため、計画自体は書き込みとしてブロックされるのではなく、編集可能なmarkdownファイルに書き込まれます。
- 計画を承認するとPlan Modeが終了します。そのため、実行が合意したステップから逸脱した場合は、
Shift+Tabを押してPlan Modeに再度入り、残りの作業を再計画してください。 - 変更が概ね3ファイル以上に及ぶ場合、リファクタリング・スキーマ変更・セキュリティに関わる作業の場合、または一文で説明できない場合にPlan Modeを使用してください。一行の修正や機械的な編集にはスキップして構いません。
Claude CodeのPlan Modeとは?
Plan Modeは、Claude Codeの権限モードの一つであり、独立した機能ではなく、acceptEdits、auto、dontAsk、bypassPermissionsと並ぶ権限モードの一つです。このモードでは、Claudeはコードベースを調査して変更案を作成しますが、その案を承認するまでソースへの編集はブロックされます。シェルコマンドは別のトラックで処理されます。計画中にautoモードが利用可能な場合、各コマンドはユーザーへの確認を挟まずに分類器によって審査されます。それ以外の場合、Claude Codeの組み込み読み取り専用セット以外のコマンドは承認待ちになります。
この機能の価値は、実行前のレビューにあります。Claude Codeの編集前の計画に関するレシピは、まさにこのユースケース、つまりディスクに何かが書き込まれる前に確認したい変更を対象としています。これにより、エラーの連鎖という問題を防ぐことができます。多くの判断ポイントを含む変更では、序盤の誤った判断が下流のすべてを汚染します。計画を立てることで、diffではなく紙の上で判断を修正できます。
Plan Modeを有効にする方法
Discover how at OpenReplay.com.
Plan Modeを有効にする方法は4つあり、それぞれスコープが異なります。モードを維持したい期間に合わせて適切な方法を選択してください。
| 方法 | コマンド / キーストローク | スコープ | 使用場面 |
|---|---|---|---|
| トグル | Shift+Tab(default → acceptEdits → planの順に切り替え) | 現在のセッション | セッション中に切り替えたい場合 |
| プレフィックス | /plan | 次の1プロンプトのみ | モードを変えずに一時的に計画したい場合 |
| フラグ | claude --permission-mode plan | 起動時からセッション全体 | タスクが計画を必要とすることが最初からわかっている場合 |
| 設定 | settings.jsonのpermissions配下に"defaultMode": "plan" | プロジェクトまたはユーザーのデフォルト | 計画優先を標準ルールにしたい場合 |
公式ドキュメントでは、切り替え順序が確認されています。Shift+Tabはdefault → acceptEdits → planの順に移動するため、開始モードから2回押すとPlan Modeになります。現在のモードはステータスバーに表示されます。ラベルについて注意が必要です。defaultモードは、設定値は引き続きdefaultですが、CLIおよびIDE拡張機能ではManualと表示されるようになっています。プロジェクトのデフォルトとして設定する場合、キーはネストされています。.claude/settings.jsonのトップレベルではなく、"permissions": { "defaultMode": "plan" }の形式で設定してください。
Plan Modeでできることとできないこと
Plan Modeでは、Claudeは読み取りおよびリサーチツール(Read、Grep、Glob、Task/サブエージェント、WebSearch、WebFetch)を引き続き使用できますが、Write、Edit、変更を伴うBashツールは承認されるまで制限されます。状態変更を伴うMCPツールも同様に制限されます。ツールの正確な一覧はハーネスの仕様に依存し、バージョン間で変わることがあるため、これは網羅的な仕様ではなく一般的なセットとして理解してください。
この境界は、ハードなサンドボックスではなく、注入されたシステム命令とClaude Codeの権限システムによって強制されています。そのため、計画自体は「書き込み」としてブロックされるのではなく、編集可能なmarkdownファイルに書き込まれます。Armin Ronacherによるplan-mode実装の解析では、書き込みツールは依然として存在しており、plan modeに入るとモデルに読み取り専用であることを伝えるプロンプトが注入されること、そしてClaudeが自身の計画ファイルを作成するためにeditツールを使用することが明らかになっています。公式ドキュメントも、これがツールの削除ではなく権限レイヤーによる制御であることを裏付けています。通常のセッションでは、保護されたパスへの書き込みは暗黙的に無視されるのではなく、プロンプトシステムを経由します。実用的な観点からは、計画はプレーンテキストの契約書であり、編集可能です。Ctrl+Gを押して提案された計画をテキストエディタに取り込み、ステップに注釈を付けたり削除したりすると、Claudeはコードを書く前にその変更を反映します。
複雑なタスクにおけるPlan Modeのワークフロー
複数ファイルにわたる変更では、「説明 → 確認 → 計画 → 編集 → 実行」というループを使用します。
- Plan Modeでタスクを説明し、関連ファイルをClaudeに示します。最初のプロンプトで目標と制約を明確に述べてください。
- Claudeに読み取りと質問をさせます。 Claudeはインポートをトレースし、アプローチを決定する前に、本当に曖昧な判断(アーキテクチャの深さ、デッドコードの扱い、使用するテストフレームワークなど)を提示します。ファイル名だけを列挙して具体的な関数名が出てこない計画は、不十分なサインです。
- 番号付きの計画をレビューします。 ステップが依存関係の順に並んでいること、テストが最後にまとめて追加されるのではなく実装と交互に組み込まれていることを確認してください。
- 編集して承認します。
Ctrl+Gを使って注釈を付けたり順序を変えたりし、内容が正しいと判断したら承認してください。 - 実行し、逸脱を監視します。 Claudeは承認された計画に沿ってステップごとに作業を進めます。
計画を承認するとPlan Modeが終了します。そのため、実行が逸脱した場合(Claudeが現在のステップで言及されていないファイルを編集したり、計画で未決定のままにしていた判断を暗黙的に行ったりした場合)、Shift+Tabを押してPlan Modeに再度入り、現在のファイルの状態を踏まえて残りの作業を再計画させてください。実際のリファクタリングでは、タスクの途中で再計画することは通常のことであり、失敗ではありません。一つのセッションに収まらない作業については、一つの大きなドキュメントにまとめるのではなく、順次実行する複数の計画に分割してください。
計画と実行を異なるモデルに分担させる
複雑な作業では、最も優れた推論モデルを計画の作成に使用し、より高速で低コストなモデルに実行させてください。計画の品質が結果を左右しますが、計画が正しければ実行は概ね機械的な作業です。Claude Codeはこれをトグルではなくモデルエイリアスとして実装しています。opusplanを選択すると、plan mode中はopusモデルが使用され、実行が始まるとsonnetに切り替わります。
Anthropic APIでは、opusはClaude Opus 5に、sonnetはClaude Sonnet 5に解決されます。つまりopusplanでは、計画にOpus 5、実行にSonnet 5が使用されます。Opus 5はClaude Code v2.1.219以降が必要です。それ以前のリリースでは、opusエイリアスは引き続きOpus 4.8を指します。エイリアスはプロバイダーごとの推奨バージョンを追跡し、新しいモデルがリリースされると更新されます。バージョンを固定したい場合は、claude-opus-5のようにフルモデル名を指定してください。なお、Opusがラインナップの最上位というわけでもありません。モデル概要では、Claude Fable 5がOpusティアの上位に位置し、Anthropicが広く公開している最も高性能なモデルとされています。Claude Codeでは、一度のセッションを超える規模の作業向けにfableエイリアスを通じてアクセスできます。
Plan Modeを使うべき場合とスキップすべき場合
変更が概ね3ファイル以上に及ぶ場合、リファクタリング・スキーマ移行・セキュリティに関わる作業の場合、または一文で説明できない場合にPlan Modeを使用してください。一行の修正や機械的な編集など、計画が純粋なオーバーヘッドになる場合はスキップしてください。3ファイルというのは、判断の連鎖が問題になり始める概ねの目安です。誤字の修正、孤立した関数の微調整、1ファイル内のリネームは、計画のラウンドトリップなしの方が速く処理できます。コードベースが特定のケースをどう扱うか不明な場合や、早まった編集を元に戻すコストが高い場合は、計画を立てる価値があります。
一文ルールが最も素早いフィルターです。変更全体を一文で説明できるなら、そのまま実行してください。そうでなければ計画を立ててください。一つの実行コンテキストに収まらないほど計画が大きくなった場合にのみ、さらにスケールアップを検討してください。その場合、Claude Codeの実験的なAgent Teamsが複数のインスタンスに作業を分散させ、リードが各チームメンバーの計画をレビュー・承認してから書き込みを開始します。
次に複数ファイルにわたる変更を行う際はPlan Modeを活用し、書き込みアクセスを許可する前にCtrl+Gで計画を編集し、実行が逸脱した瞬間にShift+Tabで戻ってください。仕様は頻繁に変更されるため、バージョン依存の詳細については、実際に使用する前に公式のClaude Codeドキュメントで確認してください。
よくある質問
Plan ModeはClaudeによるファイル編集を実際に防ぎますか?それとも書き込みは可能ですか?
Plan Modeはソースへの編集をブロックしますが、ハードなサンドボックスではありません。読み取り専用の境界は、書き込みツールを削除するのではなく、注入されたシステム命令とClaude Codeの権限システムによって強制されています。editツールは引き続き存在しており、ClaudeはそれをPlan Modeで自身の計画ファイルの作成に使用します。コードへの書き込み試行は、暗黙的に許可されるのではなく、権限プロンプトを経由します。
Shift+Tabの使用、/planプレフィックス、--permission-mode planフラグの違いは何ですか?
スコープが異なります。Shift+Tabを押すと現在のセッションのモードが切り替わり、再度切り替えるまで持続します。/planプレフィックスは次の1プロンプトにのみ適用され、モードは変更されません。claude --permission-mode planで起動すると、セッション全体が起動時からplan modeになります。常時デフォルトにしたい場合は、settings.jsonのpermissions.defaultModeをplanに設定することで、プロジェクトまたはユーザースコープのすべてのセッションに適用されます。
プロジェクトのデフォルトをPlan Modeにするにはどうすればよいですか?
.claude/settings.jsonのpermissionsオブジェクト内にdefaultModeをplanとして設定します。具体的には、permissionsの中にdefaultModeをplanとして記述します。このキーはファイルのトップレベルではなく、permissions配下にネストする必要があります。設定後、そのプロジェクトで開始されるすべてのセッションは自動的にPlan Modeで始まります。一つのリポジトリではなくすべてのプロジェクトで計画優先の動作を適用したい場合は、ユーザーレベルの設定ファイルを使用してください。
計画を承認した後はどうなりますか?また、タスクの途中でClaudeに再計画させるにはどうすればよいですか?
計画を承認すると計画フェーズが終了し、選択した承認オプションに応じた権限モードでセッションが続行されます。つまり、Claudeはすぐに作業を開始します。実行が合意したステップから逸脱した場合は、Shift+Tabを押してPlan Modeに再度入るか、次のプロンプトに/planプレフィックスを付けて、現在のファイルの状態を踏まえて残りの作業を再計画させてください。タスクの途中での再計画は、実際のリファクタリングでは想定内のことであり、失敗ではありません。
計画を作成するモデルと実行するモデルはどちらを選ぶべきですか?
計画の品質が結果を左右し、実行は概ね機械的な作業であるため、計画の作成には最も優れた安定した推論モデルを使用し、実行にはより高速で低コストなモデルを使用してください。Claude Codeはopusplanモデルエイリアスを通じてこの引き継ぎを自動化しています。plan mode中はOpusを使用し、実行にはSonnetに切り替わります。Anthropic APIでは、これらのエイリアスはそれぞれClaude Opus 5とClaude Sonnet 5に解決されます。エイリアスは新しいモデルがリリースされると更新されるため、バージョンを固定したい場合はフルモデル名を指定してください。
Gain Debugging Superpowers
Unleash the power of session replay to reproduce bugs, track slowdowns and uncover frustrations in your app. Get complete visibility into your frontend with OpenReplay — the most advanced open-source session replay tool for developers.
Star on GitHub12k