Claude Media
Claude CodeのplansDirectoryでプランファイルの保存先を変える

Claude CodeのplansDirectoryでプランファイルの保存先を変える

plansDirectoryはplan modeが書くプランファイルの保存先を変える設定です。既定は~/.claude/plans。ルート相対の指定と、既定に戻る条件を示します。

plansDirectoryとは何を変える設定か

plansDirectory は、plan modeでClaude Codeが書くプランファイルの保存先を決める設定キーです。値はプロジェクトルートからの相対パスで、未設定なら ~/.claude/plans に保存されます。

プランファイルがホームディレクトリの下にあると、リポジトリには何も残りません。チームでプランを見せ合いたいときや、プロジェクトごとに履歴を分けたいときは、この設定でリポジトリ内に寄せられます。

項目内容
型内容文字列(プロジェクトルートからの相対パス)
既定内容未設定。~/.claude/plans を使う
置ける場所内容ユーザー、プロジェクト、ローカル、管理設定のどの設定ファイルでも可

この設定は、Planモードの使い方そのものではなく、出力の置き場所だけを扱います。Planモードの流れはPlanモード完全ガイドにまとめています。

設定の書き方

プロジェクトの .claude/settings.json に1行足します。

{
  "plansDirectory": "./plans"
}

パスの基準は、いま開いているシェルのカレントディレクトリではなく、プロジェクトルートです。サブディレクトリでClaude Codeを起動しても、同じ場所を指す前提で書けます。

自分の環境だけで切り替えたいなら、同じキーを .claude/settings.local.json に置けます。チーム全員のプランを同じ場所に集めたいなら、共有される .claude/settings.json のほうが向きます。どちらもスコープは「どのファイルでも可」なので、置き場所は運用で選べます。

保存先が既定に戻る2つの条件

指定したのにプランが ~/.claude/plans に出てくる場合は、次の2つを疑ってください。いずれも、指定が無効になって既定の場所が使われます。

落とし穴

既定の保存先に戻る条件

  • プロジェクトルートの外を指している

    "../plans" のように、解決した結果がプロジェクトルートの外になる指定です。

  • バックスラッシュを含む(macOS・Linux・WSL)

    "docs\\plans" のようなWindows風の区切りです。"docs/plans" と書けばWindowsでも動きます。

どちらの場合も、指定は無効になり、プランは既定の ~/.claude/plans に保存されます。「設定したのに反映されない」ときは、まず相対パスがルートの内側に収まっているか、区切りがスラッシュかを見てください。

バックスラッシュを含むパスのルート判定は、v2.1.290(2026年10月5日)で修正されています。古いバージョンで挙動が食い違うときは、更新してから試すのが早道です。

設定が効いたかを確かめる手順

設定を足したら、Planモードで短い依頼を投げて、ファイルが指定先に出るかを見ます。

claude --permission-mode plan

起動したら、小さな変更の計画を頼みます。計画が出たあとで、別のシェルから保存先を確認します。

ls ./plans
ls ~/.claude/plans

./plans にファイルがあれば設定は有効です。~/.claude/plans のほうにだけ出ているなら、前の節の2条件のどちらかに当たっています。設定リファレンスにはファイル名の規則が載っていないため、確認は新しく増えたファイルを探す形で行います。ls -t ./plans | head -1 のように更新が新しい順に並べると、直前のプランをすぐ見つけられます。

プランをリポジトリに置くときの運用

保存先をリポジトリ内にすると、プランも通常のファイルとして扱えます。そのぶん、運用の決めごとが必要になります。

  • Git管理に含めるか: プランをレビューの材料にするならコミットします。作業中のメモにとどめるなら .gitignore に保存先を足します
  • 置き場所の名前: docs/plans のように既存の文書置き場と揃えると、探す場所が増えません
  • CLAUDE.mdとの関係: 保存先の方針をCLAUDE.mdに1行書いておくと、人間側の読み方もそろいます

コミットしない運用なら、.gitignore に1行足すだけです。

# Claude Codeのプラン置き場(共有しない)
/plans/

置く設定ファイルによって、効く範囲が変わります。パスはプロジェクトルートからの相対で解決されるので、ユーザー設定の ~/.claude/settings.json に "plansDirectory": "docs/plans" と書けば、自分がどのプロジェクトを開いても、そのプロジェクトの docs/plans にプランが出ます。プロジェクトごとに違う名前を使いたいときは、各プロジェクトの .claude/settings.json に書きます。管理設定にも置けるため、組織で保存先をそろえることもできます。

プランをコミットするかどうかは、チームの考え方次第です。残すなら、承認後の実装の経緯をあとから追えます。残さないなら、リポジトリが汚れません。

.claude 配下に置いたときの書き込みの扱い

保存先を .claude/plans のように .claude の下にしたくなることがあります。ここでは、Claude Codeの保護パスの規則を知っておくと迷いません。

.claude ディレクトリは、通常は自動承認されない保護パスの一つです。.git や .vscode、.husky などと並んで、リポジトリの状態やClaude自身の設定を壊さないための仕組みです。ただし例外があり、現在のセッション自身のプランファイルは、~/.claude/plans/ でも、plansDirectory で指定した場所でも対象から外れます。

この例外は「現在のセッション自身のプランファイル」に限られます。ほかのファイルまで書き込みが自動で通るわけではありません。例外は、プランファイルのほか、.claude/worktrees/ 配下のClaude自身のgit worktree、バックグラウンドセッションの作業用ディレクトリ、プロジェクトの自動メモリーやサブエージェントメモリーのMarkdownファイルにも設けられています。

保護パスへの書き込みがモードごとにどう扱われるかは、plan modeでは条件で分かれます。

状況保護パスへの書き込み
bypass permissionsが使える対話端末のセッション保護パスへの書き込み許可される
上記以外で、planning中にauto modeが使える保護パスへの書き込み分類器に回される
上記以外で、auto modeが使えない保護パスへの書き込み確認プロンプトが出る

注意したいのは、permissions.allow に Edit(.claude/**) と書いても、保護パスは事前承認されないことです。安全確認が、設定ファイルの許可ルールを評価する前に走るためです。--restricted を付けて起動したセッション(v2.1.248以降)では、分類器が保護パスへの書き込みを承認できません。プロンプトが出たときは「このセッションの間だけ .claude フォルダの編集を許可する」という選択肢が出ます。

保存先の名前に迷うなら、.claude の外にある plans や docs/plans を選ぶほうが、こうした規則を意識せずに済みます。

Planモードの周辺設定との関係

プランの保存先とは別に、Planモード中の挙動を変える設定がいくつかあります。混同しやすいので、役割を分けて覚えておくと便利です。

設定変えるもの
plansDirectory変えるものプランファイルの保存先
useAutoModeDuringPlan変えるものPlanモード中のシェルコマンドを分類器で審査するか
defaultMode変えるものセッションの開始時の権限モード

計画中のシェルコマンドの扱いは、セッションの状態で決まります。bypass permissionsを使える対話端末のセッションでは、分類器も確認プロンプトも通りません。auto modeが使えて useAutoModeDuringPlan がオン(既定)なら、分類器が審査して通すか止めるかを決めます。auto modeが使えないか設定がオフなら、組み込みの読み取り専用コマンドを除いて確認プロンプトが出ます。プランの保存先とは独立した話なので、plansDirectory を変えても、この振り分けは変わりません。

useAutoModeDuringPlan の中身はuseAutoModeDuringPlanの解説で扱っています。Planモードの間だけモデルを切り替えたいなら、opusplan設定が別の入り口です。

defaultMode に plan を入れると、プロジェクトの端末セッションをPlanモード開始にできます。plansDirectory と組み合わせれば、「常にPlanモードで始まり、プランは docs/plans に残る」構成が作れます。

{
  "defaultMode": "plan",
  "plansDirectory": "docs/plans"
}

ただし、VS Code拡張が始める会話は、開始時の権限モードにプロジェクト設定の defaultMode を読みません。拡張側でPlanモード開始にしたいときは、VS Codeのユーザー設定で claudeCode.initialPermissionMode を plan にします。plansDirectory 自体は設定ファイルのどこにでも置けるので、保存先の指定はこちらでも同じキーで書けます。

承認から実装までの流れは保存先で変わらない

保存先を変えても、プランが作られて承認される流れは変わりません。bypass permissionsを使える対話端末のセッションを除き、承認するまでソースの編集はブロックされます。

プランができあがると、Claudeはプランを提示して進め方を尋ねます。選べるのは3つです。

  • 自動モードで承認: auto modeで実装を始めます。auto modeが使えない環境では「Yes, auto-accept edits」という表示に変わります。bypass permissionsを有効にして起動したセッションでは、bypassへ切り替える表示になります
  • 編集を1件ずつ承認: 実装に進み、編集ごとに確認を受けます
  • プランを続ける: plan modeにとどまり、直したい点を伝えます

承認すると、plan modeを抜けて、選んだ選択肢のモードに切り替わります。もう一度計画を立てたいなら、Shift+Tab で戻すか、次のプロンプトの頭に /plan を付けます。承認せずにplan modeを抜けたいときも Shift+Tab です。

Ctrl+G を押すと、提示されたプランを既定のテキストエディタで開いて直接書き換えられます。この操作も保存先に関係なく使えます。showClearContextOnPlanAccept を有効にしてあると、承認と同時にplan中のコンテキストを消す選択肢が先頭に加わります。セッション名を付けていなければ、承認したプランから生成されたタイトルが付きます。

つまり plansDirectory は、プランの中身ではなく置き場所だけを動かす設定です。最初に試すなら、./plans を指定して1回Planモードを動かし、ファイルが出る場所を確かめるところから始めると、副作用なく感触をつかめます。

まとめ

plansDirectory は1行で足せますが、効かないときは既定の保存先が使われるため、ルート外とバックスラッシュの2条件を先に疑うのが近道です。保存先をリポジトリ内にした場合は、コミットして共有するのか、.gitignore で外すのかを最初に決めておくと、あとで困りません。

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