Claude Codeがプロジェクトファイルを見られない理由と対処法(2026年)
MarkdownClaude Codeがプロジェクトファイルを見つけられない理由を解説します。起動したフォルダーが違う、ファイルがサブフォルダーにある、または`.gitignore`に含まれている可能性があります。`add-dir`、`cd`、設定を使ってアクセスを許可する方法を紹介します。
記事の全文を読む
よくある状況です。Claude Codeにファイルの修正を頼むと、そんなファイルは存在しないと返事をする。あるいは、意図したものとはまったく違うものを、何も言わずに変更してしまう。フォルダーを開いてみると、ファイルはあるべき場所にちゃんとあります。でもClaudeには見えていないようです。
ほとんどの場合、理由はひとつで、何も壊れていません。Claudeはコンピューター全体にあるファイルを見ているわけではありません。アクセスできるのは、起動したフォルダーだけです。隣のフォルダーやプロジェクトの下位から起動すると、必要なファイルが作業ツリー外になる場合があります。ホームなどの親から起動すると範囲が広くなるのであり、下位のプロジェクトがそれだけで読めなくなるわけではありません。なぜこうなるのか、そして必要なファイルにClaudeがアクセスできるようにする方法を、順を追って説明します。コマンドと設定は、2026年9月初旬に確認したClaude Codeの公式ドキュメントから引用しています。
ツールの設定に関する追加資料は、Ailootのドキュメントでご覧いただけます。
Claude Codeが一部のプロジェクトファイルを見られないのはなぜ?
重要なポイント
Claude Codeがファイルを読み取るのはドライブ全体からではなく、起動したフォルダーからだけです。このフォルダーを作業ディレクトリと呼びます。Claudeは、そのフォルダーとサブフォルダー内のものなら、確認を求めずにすべて見ることができ、読み取れます。その外にあるもの、たとえば隣のフォルダー、ひとつ上の階層、別のドライブにあるものには、自分でアクセスを許可するまでアクセスできません。つまり、ファイルが「見えない」最もよくある理由は単純で、Claudeを別のフォルダーから起動したということです。まず、どこから起動したかを正確に確認してください。
デフォルトでは、Claude Codeはひとつのフォルダーを使います。claudeコマンドを入力してセッションを開始した場所です。ドキュメントにも明記されています。
デフォルトでは、Claudeは起動したフォルダー内のファイルにアクセスできます。
このフォルダーが作業ディレクトリです。その中なら、Claudeは追加の確認なしにどのファイルでも読み取れます。プロンプトの編集、コードの検索、特定のファイルの読み取り、どれもすぐにできます。しかし、このフォルダーの外はデフォルトではアクセスできません。隣のフォルダー、ひとつ上の階層、別のドライブにあるものは、許可するまでClaudeは見に行きません。
作業フォルダーの取り違えは、次のような場合です。プロジェクトが/Users/you/my-shopで、起動場所が隣の/Users/you/other-projectなら、my-shopのindex.htmlは作業ツリー外です。一方、/Users/youからの起動ではmy-shopは下位に含まれ、ホームで始めたことだけでアクセス不可にはなりません。ただし選択範囲は広すぎます。フォルダーへのアクセスと、全ファイルが読み込み済みであることも別です。
次に、この問題の確認と解決方法を順に説明します。まず、Claudeがどのフォルダーから起動したかを確認し、その後、必要なファイルへのアクセスを許可します。一度だけ指示する方法から、永続的な設定まで紹介します。
Claude Codeがどのフォルダーから起動したか確認するには?
重要なポイント
Claudeにどのフォルダーにいるか尋ねるか、pwdコマンドで現在のディレクトリを表示するよう頼んでください。確認するだけで、何も変更しません。表示された場所とプロジェクトの実際の場所を比べます。パスが異なるなら、それが原因です。Claudeは別のフォルダーから起動しています。より確実に解決するには、セッションを閉じてプロジェクトのフォルダーからClaudeを起動します。ターミナルでそのフォルダーに移動し、そこでclaudeと入力してください。
何かを直す前に、本当にフォルダーが原因か確認しましょう。簡単に調べられます。チャットでClaudeに、現在どのディレクトリにいるか表示するよう頼んでください。Claudeはpwdを実行します。このコマンドはパスを表示するだけで、何にも触れないため安全です。
pwd
返答の実際の作業ディレクトリを、プロジェクトのフルパスと比べます。/Users/you/other-projectは/Users/you/my-shopの隣、/Users/youは親です。隣ならmy-shopは作業ツリー外、親なら範囲内ですが、そのプロジェクトをルートとして選んではいません。
このずれを解消する最もすっきりした方法は、プロジェクトのフォルダーからClaudeを直接起動することです。現在のセッションを閉じ、ターミナルで正しいフォルダーに移動して、そこからClaudeを起動します。
# この例のパスを、実際のプロジェクトルートに置き換える。
cd /Users/you/my-shop
claude
これでmy-shopが作業フォルダーになり、プロジェクト内のすべてのファイルが見えるようになります。VS Codeなどのエディターでも同じルールが当てはまります。プロジェクトが入っているフォルダーを開いてください。ひとつ上のフォルダーやドライブ全体ではありません。開いたフォルダーによって、Claudeの作業ディレクトリが決まります。
起動し直すのが不便な場合、たとえばこのセッションでClaudeにすでに背景を伝えていて、失いたくない場合は、その場でフォルダーを追加したり切り替えたりできます。次の2つのセクションで説明します。
隣のフォルダーにあるファイルをClaude Codeに見せるには?
重要なポイント
セッションを再起動せずに必要なフォルダーを追加するには、チャット内で/add-dirコマンドを使います。/add-dirの後にフォルダーのパスを入力すれば、その中のファイルはメインフォルダー内のファイルと同じように使えるようになります。Claudeの起動時にアクセスを許可するには、claudeコマンドにパスを指定した--add-dirフラグを追加します。フォルダーを毎回自動的に開きたい場合は、設定のadditionalDirectoriesキーに追加してください。どの方法でも、追加したフォルダー内のファイルは個別に確認を求められずに読み取れます。
プロジェクトのファイルがひとつのフォルダーにまとまっていないこともあります。コードはある場所に、画像やテキストは隣のフォルダーに、共通コンポーネントはさらに近くの別の場所にある、といった具合です。フォルダーごとにClaudeを再起動するのは不便です。メインフォルダーを作業ディレクトリにしたまま、必要なフォルダーへのアクセスを許可するのがよいでしょう。
最も簡単なのは、実行中のセッションで次のコマンドを入力する方法です。
/add-dir ../assets
/add-dirの後にフォルダーのパスを入力すれば、Claudeはすぐにその中のファイルにアクセスできるようになります。メインフォルダー内のファイルと同じように使えます。再度許可を求められることはありません。追加したフォルダーには、作業ディレクトリと同じルールが適用されます。
追加ディレクトリ内のファイルには、メインの作業ディレクトリと同じアクセスルールが適用され、確認を求めずに読み取られます。
複数のフォルダーを使うことが事前に分かっているなら、Claudeの起動時にアクセスを許可できます。同じパスにフラグを付けて指定します。
claude --add-dir ../assets
いつも同じプロジェクトで隣のフォルダーを使うなら、毎回手動で追加する必要はありません。設定ファイルsettings.jsonにadditionalDirectoriesキーがあります。そこにパスを並べると、Claudeの起動時に毎回自動的に開かれます。
{
"permissions": {
"additionalDirectories": ["../assets", "../shared"]
}
}
Windowsでは注意点がひとつあります。\\server\sharedのようなパスでネットワークフォルダーを追加することはできません。Claudeはそのようなパスを受け付けません。ドライブ文字を割り当てて別ドライブとしてマウントし、その文字を--add-dirに指定してください。通常のローカルフォルダーなら、この問題はありません。
隣のフォルダーを追加するだけでは足りず、別のフォルダーに移動したい場合は、専用のコマンドがあります。次に説明します。
セッション中にClaude Codeを別のフォルダーに切り替えるには?
重要なポイント
/cdコマンドを使うと、セッションを閉じずにメインの作業フォルダーを変更できます。/cdの後にパスを入力すれば、会話履歴を保持したままClaudeがその場所に移動します。移動すると、Claudeは新しいフォルダーにあるCLAUDE.md指示ファイルを読み込みます。また、その場所で作業したことがなければ、信頼するかどうかの確認を求めます。/add-dirはメインフォルダーの横に別のフォルダーを追加しますが、/cdは作業ディレクトリ全体を新しい場所に移します。このコマンドはバージョン2.1.169以降で使用できます。
隣のフォルダーを追加するだけでは足りず、これまでの文脈を失わずに別のプロジェクトへ移動したい場合があります。そのときは/cdコマンドを使います。
/cd ../another-project
移動後、Claudeは新しいフォルダーを作業ディレクトリとして扱います。会話履歴はすべて保持されますが、Claudeがファイルを参照する場所は新しい場所に変わります。新しいフォルダーにCLAUDE.md指示ファイルがあれば、Claudeはそれも読み込みます。つまり、新しいプロジェクトのルールに沿って作業します。
信頼について知っておきたい点があります。そのフォルダーで作業したことがない場合、移動時にClaudeはそのフォルダーを信頼するかどうか尋ねます。これは安全策です。見慣れないフォルダーの指示ファイルには何が書かれているか分からないため、まずそれが自分のプロジェクトかどうかを確認します。確認したら、作業を続けてください。
2つのコマンドの違いは簡単です。/add-dirはメインフォルダーを作業ディレクトリとして維持し、隣のフォルダーも追加で開きます。プロジェクトの各部分が別々の場所にある場合に便利です。/cdは作業ディレクトリ全体を新しい場所に移します。別のプロジェクトに切り替えるときに便利です。/cdコマンドはバージョン2.1.169で導入されました。表示されない場合は、Claude Codeを更新してください。Claude Codeの更新方法については、別のガイドで説明しています。
Claude Codeがファイルを見られることは、あくまで土台です。安定した結果は、ファイルにアクセスできるだけでは得られません。ファイルの内容と、プロジェクトを取り巻く文脈の作り方が大切です。
Claude Codeがサブフォルダー内のファイルを見られないのはなぜ?
重要なポイント
サブフォルダーは隣のフォルダーとは動作が異なります。Claudeはサブフォルダーにアクセスできますが、その中身がすぐにコンテキストへ読み込まれるわけではありません。Claudeは指示ファイルやサブフォルダーの内容を、必要に応じてそこを調べるときに読み込みます。起動時に読み込むわけではありません。そのため、深い階層にあるファイルは、パスを直接伝えるまで「見えない」ことがあります。解決方法は簡単です。ファイルの正確なパスをClaudeに伝えるか、まずそのファイルを読むよう頼めば、見えるようになります。
ここでは、2つの異なる状況を混同しないことが大切です。隣のフォルダー(プロジェクトの外にあるフォルダー)は、追加するまでまったくアクセスできません。プロジェクト内のサブフォルダーは異なります。Claudeはアクセスできますが、最初から中身を把握しているわけではありません。
仕組みは次のとおりです。Claudeは起動時に、プロジェクトの上位階層にあるものを読み込みます。サブフォルダーのファイルは、その中のものを読むために移動したとき、必要に応じて読み込みます。ドキュメントでは指示ファイルについてこの動作を説明していますが、一般的なコンテキストにも同じ仕組みが当てはまります。
Claudeは作業ディレクトリのサブフォルダーにあるファイルを見つけます。起動時に読み込むのではなく、そのサブフォルダー内のファイルを読むときに取り込みます。
簡単に言うと、深い階層のサブフォルダーにあるファイルは消えていませんし、アクセスもできます。Claudeがまだそこを見ていないため、把握していないだけです。ファイルがそこにあり、アクセス可能なのにClaudeには「見えない」ように感じるのはそのためです。
1行で解決できます。たとえばsrc/components/header.jsxのようにファイルのパスを直接伝えるか、まずファイルを読むよう頼んでください。Claudeがそこを見ると、ファイルがコンテキストに入り、通常どおり作業できます。設定を変える必要はありません。
@メニューからファイルが消えるのはなぜ?.gitignoreとはどんな関係?
重要なポイント
@記号を入力すると、Claude Codeは選択できるファイルの一覧を表示します。デフォルトでは、.gitignoreに含まれるものはこの一覧に表示されません。サービス用フォルダー、環境ファイル、ビルド出力などが該当します。そのため、ファイルが正しい場所にあっても、@メニューに表示されないことがあります。respectGitignore設定で表示を制御します。デフォルトでは有効になっており、そのようなファイルを非表示にします。falseにすると、.gitignoreに記載されたファイルもメニューに表示されます。そのようなファイルのパスを手動で入力することもできます。
Claudeがファイルを「なくした」と思うもうひとつのよくある理由は、ファイル選択機能です。@を入力すると一覧が表示され、パス全体を入力しなくてもファイルを簡単に選べます。しかし、一覧にはすべてのファイルが表示されるわけではありません。
デフォルトでは、@メニューに.gitignoreに記載されたファイルは表示されません。このファイルは、共有リポジトリに追加しないものを指定します。サービス用フォルダー、パスワードや環境設定を含むファイル、完成したビルド出力などです。通常、こうしたファイルを手動で操作する必要はないため、一覧に表示すると邪魔になるだけです。ただし、そうしたファイルが必要なのにメニューにないこともあります。
respectGitignore設定で制御できます。デフォルトでは有効なので、.gitignoreに記載されたファイルはメニューに表示されません。表示したい場合は、falseに切り替えてください。
{
"respectGitignore": false
}
設定ファイルを編集しなくても、Claude Code内で/configコマンドを使って同じ操作ができます。切り替え項目の名前は「ファイル選択で .gitignore を尊重」です。チェックを外すと、非表示だったファイルがメニューに戻ります。
大切な注意点があります。respectGitignoreは@メニューだけに適用され、ファイルへのアクセスとは関係ありません。ファイルが一覧に表示されていなくても、パスを手動で入力すればClaudeは読み取れます。メニューは利便性のための機能であり、アクセス範囲を決めるものではありません。
Claude Codeが特定のファイルを読み取れないときは?
重要なポイント
フォルダーが正しくても、Claudeが特定のファイルだけ読み取ろうとしないことがあります。多くの場合、理由は設定による制限です。settings.jsonに、特定のファイルの読み取りを禁止するdenyルールが設定されている可能性があります。特に、キーやパスワードを含む.envファイルが対象になることがよくあります。また、作業フォルダーの外にあるものをすべて読み取り禁止にする設定もあります。settings.jsonの両方の設定を確認してください。そして、.envの制限はデフォルトの安全策です。十分な理由がない限り、解除しないでください。
フォルダーが正しく、アクセスも許可されているのに、Claudeが特定のファイルだけ読み取らない場合、制限されている可能性が高いでしょう。制限はsettings.json設定ファイルにあり、2種類あります。
ひとつ目は、特定のファイルを対象とする制限です。設定ではdenyルールとして記述します。特によく対象となるのは、キーやパスワードを保存する.envファイルです。
{
"permissions": {
"deny": [
"Read(./.env)",
"Read(./.env.*)"
]
}
}
このようなルールは、指定したファイルをClaudeが読み取るのを禁止します。意図的な制限です。キーやパスワードがモデルとの会話に入り込むべきではないため、.envはデフォルトで保護されています。Claudeが.envや秘密情報を含む同様のファイルを読まない場合は、仕様どおりです。やむを得ない理由がない限り、この制限を解除しないでください。
ふたつ目は、作業フォルダーの外にあるすべてのものに対する一般的な制限です。blockReadsOutsideWorkingDirectories設定で制御します。有効にすると、ファイルを直接開こうとしても、Claudeは作業ディレクトリの外にあるファイルを読み取りません。trueに設定されていて、外部ファイルが必要なら、/add-dirでそのフォルダーを追加するか、この制限を無効にしてください。
{
"permissions": {
"blockReadsOutsideWorkingDirectories": false
}
}
この設定はバージョン2.1.257で導入されました。他の方法をすべて試してもファイルにアクセスできない場合は、denyとblockReadsOutsideWorkingDirectoriesの両方を確認してください。
Claude Codeがファイルを見られないとき、何から始めればよい?
重要なポイント
まずフォルダーを確認します。Claudeにpwdで現在のディレクトリを表示してもらい、プロジェクトの場所と比べてください。一致しない場合は、プロジェクトのフォルダーからClaudeを再起動するか、/cdでそこへ移動します。隣のフォルダーのファイルが必要なら、/add-dirで開きます。サブフォルダー内のファイルが見つからないなら、パスを直接伝えます。@メニューにファイルがないなら、.gitignoreが関係しています。respectGitignoreを切り替えます。特定のファイルがロックされているなら、settings.jsonのdeny制限を確認してください。
上から順に試せる短い手順を紹介します。
- 作業フォルダーを確認します。Claudeに
pwdで現在のディレクトリを表示してもらい、プロジェクトの場所と比べます。 - フォルダーが異なる場合は、正しい場所からClaudeを再起動するか(
cd projectを実行してからclaude)、/cdコマンドで移動します。 - 隣のフォルダーのファイルが必要ですか?Claudeの起動時に、
/add-dirまたは--add-dirフラグで追加します。 - サブフォルダーのファイルがコンテキストにありませんか?Claudeにパスを直接伝えるか、ファイルを読むよう頼んでください。
@メニューにファイルがありませんか?.gitignoreが原因です。respectGitignoreをfalseにするか、/configでチェックを外します。- 特定のファイルだけロックされていますか?
settings.jsonのdenyとblockReadsOutsideWorkingDirectoriesルールを確認してください。
10件中9件は、最初の手順で解決します。Claudeが別のフォルダーから起動していたのです。ファイルへのアクセスは基礎ですが、それだけでプロジェクトを組み立ててくれるわけではありません。Claudeがプロジェクト全体を把握し、話の流れを見失わないように文脈を作る方法については、Claude CodeのSecond Brainのガイドで詳しく説明しています。
出典
- Claude Code - 権限の設定、公式ドキュメント - デフォルトの作業ディレクトリ、--add-dirと/add-dir、/cd、additionalDirectories、確認なしのアクセス、ネットワークパス
- Claude Code - Claudeのメモリの管理、公式ドキュメント - サブフォルダーのファイルのオンデマンド読み込み、CLAUDE.md、インポート
- Claude Code - 設定のリファレンス、公式ドキュメント - respectGitignoreと@メニュー、blockReadsOutsideWorkingDirectoriesとバージョン2.1.257
- Claude Code - 設定、公式ドキュメント - denyルールと.envの読み取り制限
ツールの使い方に関する追加資料は、Ailootのドキュメントでご覧いただけます。
詳細を見る
Claude Codeがプロジェクトファイルを見られない理由と対処法(2026年):よくある質問
ホームでの起動と、隣のプロジェクトでの起動は何が違いますか?
ホーム内のプロジェクトは下位にあるため、ホームで起動しても作業ツリー外にはならず、意図より範囲が広くなります。作業フォルダーの隣は外側です。アクセス不足と判断する前に、フルパスを比較してください。
サブフォルダーへアクセスできれば、内容はすでに文脈にありますか?
いいえ。パスを渡して読み取りを頼んでください。拒否されたら適用権限を確認します。選択メニューにないことと、読み取りを拒否されることは別の問題です。