CLAUDE LABEN
FORK — Claude Code 2.1.212で/forkの挙動が変わりました。会話を新しいバックグラウンドセッションへ複製し、作業を続けたまま並走できます。従来のセッション内サブエージェントは/subtaskに移りましたLIMITS — WebSearchの呼び出しがセッション単位で既定200回に制限されました。サブエージェントの起動も既定200回が上限で、暴走した検索・委譲のループを止められますMCPBG — 2分を超えるMCPツール呼び出しは自動的にバックグラウンドへ移り、セッションが固まらなくなりました。しきい値はCLAUDE_CODE_MCP_AUTO_BACKGROUND_MSで調整できますPLANFIX — プランモードがtouchやrmといったファイルを変更するBashコマンドを、許可プロンプトもcanUseToolコールバックも通さずに実行してしまう不具合が修正されましたSONNET5 — Claude Sonnet 5は導入価格として入力100万トークンあたり2ドル、出力10ドルで提供中です。8月31日を過ぎると3ドルと15ドルに戻りますIPO — Anthropicが早ければ10月の株式公開を視野に、引受銀行が投資家との面談を組み始めたと報じられていますFORK — Claude Code 2.1.212で/forkの挙動が変わりました。会話を新しいバックグラウンドセッションへ複製し、作業を続けたまま並走できます。従来のセッション内サブエージェントは/subtaskに移りましたLIMITS — WebSearchの呼び出しがセッション単位で既定200回に制限されました。サブエージェントの起動も既定200回が上限で、暴走した検索・委譲のループを止められますMCPBG — 2分を超えるMCPツール呼び出しは自動的にバックグラウンドへ移り、セッションが固まらなくなりました。しきい値はCLAUDE_CODE_MCP_AUTO_BACKGROUND_MSで調整できますPLANFIX — プランモードがtouchやrmといったファイルを変更するBashコマンドを、許可プロンプトもcanUseToolコールバックも通さずに実行してしまう不具合が修正されましたSONNET5 — Claude Sonnet 5は導入価格として入力100万トークンあたり2ドル、出力10ドルで提供中です。8月31日を過ぎると3ドルと15ドルに戻りますIPO — Anthropicが早ければ10月の株式公開を視野に、引受銀行が投資家との面談を組み始めたと報じられています
記事一覧/Claude Code
Claude Code/2026-04-30中級

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

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

claude-code129troubleshooting61gitignoreGlobGrep

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

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

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

Claude Code の Glob ツールは内部的に fdGrep ツールは 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 ツールは GlobGrep と違って .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" .

rgfd もデフォルトで .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 完全ガイドで permissionsenv フィールドの細かい設定項目を確認できます。環境変数が読まれない問題でつまずいた経験がある方は、ANTHROPIC_API_KEY が効かないときの診断手順も役に立つかもしれません。

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

シェア

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

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

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

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

関連記事

Claude Code2026-06-18
壊れた settings.json で Claude Code が起動しなくなったとき — セーフモードの挙動と設定の分け方
settings.json の構文ミスで Claude Code が起動しなくなったときに、どの階層が壊れているかを切り分けて数分で復旧する手順と、自動運用で壊れにくい設定の分割・検証パターンをまとめました。
Claude Code2026-06-10
git add -A が .bak バックアップまで巻き込む — in-place 修正スクリプトと自動コミットの落とし穴
sed -i や自作の --fix スクリプトが残す .bak バックアップを git add -A が無言で取り込み、本番リポジトリに混入させてしまう問題。なぜ気づきにくいのか、scoped add と .gitignore でどう塞ぐかを実例で整理します。
Claude Code2026-06-09
前回の記事本文が別の記事に紛れ込む — 固定名の一時ファイルに残る残骸の罠
Claude Code の自動化で、固定名の一時ファイルに前回の中身が残り、まったく別の記事に古い本文が混入する。書き込みが無音で失敗する仕組みと、ユニーク名+挿入後の grep 照合で防ぐ方法を記録します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →