◉CLAUDE LABEN
●2.1.301 — vim の % モーション、VS Code パネルでの LaTeX 数式表示、使用量上限待ちのリトライ監視の上限が入りました(10/15)●2.1.299 — 200K トークン超で約54分放置した会話はアイドル圧縮。MCP の許可ルールは名指ししたサーバーだけに一致します●SONNET 4.5 — Claude API での提供終了は 11/30、残り45日。移行先は Sonnet 5.5●WINDOWS — 日本語の環境でだけフックが黙って壊れる報告があり、文字コードの確認が呼びかけられています●FAST MODE — Opus 5.5 の Fast mode がリサーチプレビューを終え、ベータヘッダーが不要になりました(10/15)●NEW — Cowork に渡したフォルダの先頭に、十行の約束ファイルを置いてみました●2.1.301 — vim の % モーション、VS Code パネルでの LaTeX 数式表示、使用量上限待ちのリトライ監視の上限が入りました(10/15)●2.1.299 — 200K トークン超で約54分放置した会話はアイドル圧縮。MCP の許可ルールは名指ししたサーバーだけに一致します●SONNET 4.5 — Claude API での提供終了は 11/30、残り45日。移行先は Sonnet 5.5●WINDOWS — 日本語の環境でだけフックが黙って壊れる報告があり、文字コードの確認が呼びかけられています●FAST MODE — Opus 5.5 の Fast mode がリサーチプレビューを終え、ベータヘッダーが不要になりました(10/15)●NEW — Cowork に渡したフォルダの先頭に、十行の約束ファイルを置いてみました
記事一覧/Claude Code
⟐ Claude Code/2026-04-30中級

Claude Code が .gitignore のファイルを検索しない理由と、必要なときに見つける方法

.env.example や dist/ が Claude Code の Glob/Grep に引っかからないとき、原因は .gitignore です。挙動の理由と、Read ツール・--no-ignore・一時的な除外解除の3つの突破口を具体的に解説します。

claude-code132troubleshooting61gitignoreGlobGrep

「.env.example が見つからないと言われた」「dist/ の中のビルド成果物を確認してほしいのに、Claude Code が『そんなファイルはありません』と返してくる」——この壁にぶつかったとき、最初は Claude Code 側のバグかと思ってしまうかもしれません。私も最初は何度か検索コマンドを打ち直していました。

種を明かすと、これはバグではなく仕様です。Claude Code の Glob と Grep ツールは、デフォルトで .gitignore の内容を尊重するように作られています。理由を理解した上で、必要なときだけ「見える状態」にする方法を持っておくと、無駄な往復が一気に減ります。

なぜ .gitignore のファイルは検索結果に出てこないのでしょうか

Claude Code の Glob ツールは内部的に fd、Grep ツールは ripgrep の動作モデルに近いものを使っています。両方とも、デフォルトの挙動として 「Git が無視するファイルは検索結果から外す」 という親切設計になっているのです。

これは普段の開発体験には合っています。node_modules/ の中身が grep にヒットしてノイズだらけになる経験は、誰しも一度はあるはずです。Claude Code が大規模なリポジトリでも素早く応答できるのは、この前提のおかげでもあります。

しかし、状況によってはこの「親切」が裏目に出ます。具体的には次のようなケースです。

  • .env.example を確認したい(.env* が .gitignore に書かれている場合)
  • ビルド済みの dist/、build/、.next/ の中身を読み取りたい
  • coverage/ や __snapshots__/ のテストレポートを参照したい
  • 自分で .gitignore に追加した検証用フォルダを Claude に見せたい

つまり「Git では追跡したくないけれど、いま手元のセッションでは Claude Code に見てほしい」というシーンが、実は思ったよりも多いということです。

一見「バグ」に見える3つの典型シーン

私の経験上、この挙動で詰まる場面は3パターンに集約されます。

シーン1: .env.example が無いと言われる

User: .env.example の内容を教えて
Claude Code: [Globでcheck] そのパスにファイルは見つかりませんでした

実際にはリポジトリ直下に存在しているのに、.env* を .gitignore に書いている場合は引っかかりません。

シーン2: ビルド成果物のサイズや構成を見せたい

dist/index.js を見て最終バンドルがどうなっているか相談したいときに、Claude Code は「dist/ ディレクトリは存在しません」と返してきます。これも .gitignore 経由の除外です。

シーン3: ローカルで生成したログやスクリーンショットを見せたい

screenshots/, logs/, .cache/ などをデバッグの相談に使いたいケースでは、Claude Code が見えていないために的外れな提案を返してくることがあります。

解決策その1: Read ツールでパスを直接渡すのが最短です

3つの突破口がありますが、私が一番よく使うのは 「Claude Code に絶対パスを直接読ませる」 方法です。Claude Code の Read ツールは Glob や Grep と違って .gitignore を見ません。パスさえ確定していれば、即座に内容を取得できます。

具体的には、Claude にこう伝えるだけで十分です。

.env.example の内容を Read ツールで直接読んで。パスは ./project-root/.env.example。

または、自分でパスを cat してプロンプトに貼り付ける形でも構いません。

# シェルから内容を確認しつつ、必要な部分だけ Claude に渡す
cat .env.example | head -50

「探させる」のではなく「位置を教える」ことで、.gitignore の壁を回避できます。これが Claude Code の検索系ツールと読み取りツールの最大の違いを活かす方法です。

検索しないと位置が分からないファイルの場合は、自分のシェルで先に位置を特定してから渡す流れが現実的です。

# 通常の find は .gitignore を無視しない
find . -name ".env.example" -not -path "*/node_modules/*"
 
# git に登録されていないファイルだけを表示
git ls-files --others --exclude-standard

解決策その2: Bash ツール経由で --no-ignore フラグを使う

検索を Claude Code 側にやらせたい場合は、Bash ツールから ripgrep または fd を --no-ignore 付きで呼ぶのが確実です。

# .gitignore を無視して全ファイル検索(ripgrep)
rg --no-ignore "DATABASE_URL" .
 
# 隠しファイルやドットフォルダも含める場合
rg --no-ignore --hidden "API_KEY" .
 
# ファイル名検索(fd)
fd --no-ignore --hidden "\.env" .

rg も fd もデフォルトで .gitignore を読みます。--no-ignore を付けると Git の世界から離脱した「素の検索」になります。--hidden を併用すると .next/ のような先頭がドットのフォルダもスキャン対象になります。

ただし注意点があります。node_modules/ 以下まで全文検索すると、応答時間が極端に長くなることがあります。私は次のようにスコープを絞って使っています。

# 「dist と coverage だけは見たいけど node_modules は除外」
rg --no-ignore --hidden \
   --glob '!node_modules/**' \
   --glob '!.git/**' \
   "TODO" .

--glob を組み合わせて自分でフィルタを書くのが、結果として一番速いです。Claude Code が遅く感じるときは、検索範囲が広すぎることがほとんどです。

Bash ツール周りのトラブルシューティングについては、Claude Code の Bash ツール実行エラー解決ガイドもあわせて参照してください。

解決策その3: .gitignore 自体を一時的に書き換える(最終手段)

どうしても Claude Code 側の標準ツール(Glob/Grep)にファイルを認識させたい場合は、.gitignore を編集する方法もあります。ただしこれは推奨度が低いやり方です。理由は、リポジトリ全体の挙動が変わるため、コミット時に意図しないファイルを追跡してしまうリスクがあるからです。

それでも使うなら、ローカル限定で完結する .git/info/exclude を逆手に取る やり方が安全です。.gitignore には書かず、.git/info/exclude に追記したルールはそのリポジトリのローカル限定です。

しかし「除外を解除したい」のが目的の場合は、もっと簡単な方法があります。.gitignore の特定行に ! プレフィックスを付けて、例外的に追跡対象に戻すのです。

# .gitignore の例
.env*

# Claude Code に見せたいので例外扱い
!.env.example

この変更をコミットする前提なら、.env.example は通常通り Glob/Grep に乗ってきます。ローカル作業中だけ無視を解除したい場合は、ファイルを編集後にコミットしないでセッションを続ければ十分です。

ちなみに .gitignore の挙動が思った通りにならないときは、git check-ignore -v <パス> で「どのルールがどのファイルを無視しているか」を1行で確認できます。これを覚えておくと診断がぐっと楽になります。

私が普段使っている運用パターン

毎回コマンドを思い出すのは大変なので、私は次のような運用に落ち着きました。読者の方の参考になれば嬉しいです。

  • 見たいファイルのパスが分かっている場合: Read ツールに直接渡す。これが90%のケースをカバーします
  • 検索が必要だが範囲を絞れる場合: Bash から rg --no-ignore --hidden --glob '!node_modules/**' で実行
  • 頻繁に見せたいファイル(.env.example 等): .gitignore に ! で例外を入れてコミットする
  • デバッグ用の一時ファイル: そもそも .gitignore 対象外のフォルダ(tmp/ を .gitignore に書かないなど)に置く

設定ファイル全般の挙動については、Claude Code settings.json 完全ガイドで permissions や env フィールドの細かい設定項目を確認できます。環境変数が読まれない問題でつまずいた経験がある方は、ANTHROPIC_API_KEY が効かないときの診断手順も役に立つかもしれません。

「ファイルが見つからない」と言われたら、まずは .gitignore を疑う。これだけで、ツール越しのやり取りで失う時間がかなり減ります。今日のうちに、自分のリポジトリで git check-ignore -v .env.example を一度試してみてください。仕組みが腹落ちすると、Claude Code の応答もずっと予測しやすくなります。

シェア

お読みいただきありがとうございます

Claude Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • ✦コピー&ペーストで使える実装コード付き
  • ✦毎日新しい上級ガイドを追加
  • ✦¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

もしこの記事がお役に立ちましたら、チップ(¥150)で応援いただけると大変励みになります。広告なしでの運営を続けるため、皆さまのご支援が大きな力になっています。

関連記事

⟐ Claude Code2026-05-24
Claude Code で連続する Edit が連鎖的に失敗するときの直し方 — old_string が消える・重複する問題
Claude Code が同じファイルへ Edit を連続で投げると、2件目以降が突然『not found』や『not unique』で落ちることがあります。原因は順序依存とコンテキスト二重化で、Read 再実行と分割パッチで救えます。
⟐ Claude Code2026-05-10
Claude Code の Glob と Grep が0件を返すときの原因切り分け
Claude Code の Glob/Grep ツールがファイルを見つけられないとき、.gitignore除外・隠しファイル・パターン記法の落とし穴を切り分け、適切な代替手段で確実に発見する手順をまとめます。
⟐ Claude Code2026-05-10
Claude Code の Read が大きなファイルを最後まで読まないとき — PARTIAL view の受け取り方と offset / limit の設計
Read が大きなファイルを途中までしか返さないとき、Claude Code は PARTIAL view の通知を出しています。通知の受け取り方と、行数ではなくバイト予算で offset / limit を決める方法を、実測値とともにお伝えします。