オフィスの執務デスクにAIアシスタントを招き入れる様子を想像してみてください。目の前にある「今すぐ見てほしい企画書」と一緒に、「給与明細や秘密鍵のメモ(.env)」や「過去数年分の辞書や領収書が詰まった巨大ダンボール箱(node_modules / .venv)」まで机いっぱいに広げてしまえば、AIは情報過多で混乱し、動作速度が落ち、回答の精度も下がってしまいます。
除外設定とは、AIアシスタントに対して「ここから先は見る必要のないバックヤード」「この金庫には絶対に触らないで」という適切な立入禁止テープを貼る、最も基本的かつ強力なコンテキスト最適化技術です。
.claudeignore というファイル名で検索してこの記事にたどり着いた方に、まず結論をお伝えします。2026年現在の公式仕様において、.claudeignore という名前のファイルは Claude Code のネイティブ機能として存在しません。不要ファイルの除外や機密情報の読み取り遮断は、.claude/settings.json の permissions.deny と、respectGitignore を使うのが唯一の公式推奨ルートです。
本記事を読むことで、以下の3大ベネフィットが3分でスッキリ理解できます。
- .claudeignoreが使えない理由と正しい代替手法: なぜコミュニティの俗説が広まったのか、公式の
permissions.deny設計 - フレームワーク別コピペ設定レシピ: React/Next.js、Python、WordPress、Go/Rustで即座に使える設定テンプレート
- コンテキスト節約と機密漏洩防止の鉄則: トークン消費を抑え、回答精度を劇的に向上させる実践トラブルシューティング

Claude Code で不要ファイルを除外する公式ルートとは?
まず大前提として、.claudeignore を Claude Code の設定ファイルとして配置しても、CLI側はそれを単なる無関係なテキストファイルとして無視します。公式ドキュメントで定義されている正式な除外手段は、次の2つです。
.claude/settings.jsonのpermissions.denyで、特定パスの読み取りを強制ブロックするrespectGitignoreを有効化し、ファイルピッカーが.gitignoreの除外ルールを尊重するようにする
この2つを正しく組み合わせることで、不要なトークン消費を抑えつつ、.env や秘密鍵(*.pem)のような機密ファイルを物理的にブロックできます。
permissions.deny の基本設定と respectGitignore の使い方
公式ルートで除外を設定する場合、プロジェクトルート直下の .claude/settings.json に読み取り拒否ルールを記述します。最小の標準構成は以下の通りです。
{
"permissions": {
"deny": [
"Read(./.env)",
"Read(./secrets/**)",
"Read(./node_modules/**)",
"Read(./dist/**)",
"Read(./coverage/**)"
]
}
}
permissions.deny で最優先にブロックすべき対象
.envやsecrets/: APIキーやDBパスワードなど機密情報の誤読取を防止node_modules/や.venv/: 膨大な容量でトークンを浪費し、解析価値がない依存ライブラリdist/やcoverage/: ビルド生成物やテスト計測結果によるノイズを遮断
respectGitignore の役割と注意点
respectGitignore は、Claude Code の @ ファイルピッカーが .gitignore を参照するための設定です。すでに Git 運用で除外しているビルド生成物があるなら、そのルールを流用できます。ただし、機密ファイルの保護まで .gitignore に依存するのは危険です。機密ファイルは必ず permissions.deny で明示的に止めるのが鉄則です。
除外すべきファイル・ディレクトリの分類表
| 分類 | 代表パターン | 除外すべき理由 |
|---|---|---|
| 依存ライブラリ | node_modules/, .venv/ | 容量が数万行に及び、AIのコンテキストを圧迫するため |
| ビルド成果物 | dist/, build/, out/ | 生成物はコードから再現可能であり、ノイズになるため |
| テスト生成物 | coverage/, *.lcov | テスト実行ごとの差分が検索精度を下げるため |
| キャッシュ・ログ | *.log, .cache/ | 時系列ノイズでAIの回答ブレを招くため |
| 機密ファイル | .env, *.pem | セキュリティ漏洩リスクを未然に遮断するため |
プロジェクト環境別の即戦力設定レシピ
お使いの開発環境に合わせて、以下のブロックを .claude/settings.json の permissions.deny にそのままコピペして利用できます。
1. React / Next.js / TypeScript
"Read(./node_modules/**)",
"Read(./.next/**)",
"Read(./out/**)",
"Read(./dist/**)",
"Read(./coverage/**)",
"Read(./.env*)"
2. Python (FastAPI / Django / データ分析)
"Read(./.venv/**)",
"Read(./__pycache__/**)",
"Read(./.pytest_cache/**)",
"Read(./.mypy_cache/**)",
"Read(./htmlcov/**)",
"Read(./*.pyc)",
"Read(./.env*)"
3. WordPress(テーマ / プラグイン開発)
"Read(./wp-content/cache/**)",
"Read(./wp-content/uploads/**)",
"Read(./node_modules/**)",
"Read(./dist/**)",
"Read(./vendor/**)",
"Read(./*.log)",
"Read(./.env)"
プロジェクト全体の運用方針を明文化する際は、CLAUDE.md ファイル内で「どのディレクトリを読むべきか/読まないか」を明記しておくと、チーム開発やサブエージェント運用時の再現性が格段に高まります。
.gitignore と permissions.deny の役割分担
.gitignore は Git のバージョン管理対象を制御する設定であり、permissions.deny は Claude Code の思考・読み取りコンテキストを制御する設定です。目的が異なるため、以下の表のように使い分けましょう。
| 比較項目 | .gitignore | permissions.deny |
|---|---|---|
| 主目的 | Gitコミット対象の制御 | AIの読み取り・推論対象の制御 |
| 影響範囲 | Gitリポジトリの差分管理 | AIの回答精度・トークン消費・機密保護 |
| 設定のコツ | 差分管理の最小化 | ノイズ排除と誤読取の物理的遮断 |

よくある設定ミスとトラブルシューティング
ミス1:除外したはずのファイルをAIがまだ参照してしまう
原因: permissions.deny のパス記述が浅く、ワイルドカード(/**)が漏れているか、既存セッションのメモリに過去の読み取り結果が残っています。
解決策: "Read(./node_modules/**)" のように末尾まで階層をカバーし、設定変更後は一度 /compact またはセッションを再起動してください。
ミス2:除外設定を広げすぎて必要なコードまで読まれない
原因: src/ や app/ などの配下に不要ファイルがあるからといって親ディレクトリごと deny に入れたり、.gitignore に広すぎるパターンを指定してしまっています。
解決策: まずは .env と node_modules/ だけをブロックする最小構成からスタートし、必要に応じてピンポイントで追加してください。
よくある質問(FAQ)
Q1. .claudeignore ファイルをリポジトリ内に作って置いておくと何か不具合は起きますか?
直接的なエラーにはなりませんが、Claude Codeからは単なる普通のテキストファイルとして扱われるため、除外効果は一切発揮されません。「除外されている」と思い込んで機密情報を放置してしまう重大な誤解を招くため、作成せずに公式の .claude/settings.json を使用してください。
Q2. Gitで追跡していない大容量CSVやデータセットを除外するには?
.claude/settings.json に "Read(./data/raw/**)" や "Read(./datasets/**)" のように追加するのが最も確実です。これにより、数万行に及ぶ巨大ファイルがAIの推論コンテキストに流れ込み、トークン上限やAPIコストが急騰するトラブルを確実に防げます。
Q3. サブエージェント(Subagents)を実行した際もこの除外設定は有効ですか?
はい、有効です。プロジェクトレベルの .claude/settings.json に定義された permissions.deny ルールは、親エージェントだけでなく起動されたすべてのサブエージェントにも同一の制約として適用されます。
Q4. 一時的に除外フォルダ内の1ファイルだけをAIに見せたいときは?
チャット入力時に @./path/to/file で直接メンションして呼び出すか、一時的にそのファイルのみ作業ディレクトリにコピーして渡す運用がスムーズです。
あわせて読みたい:Claude Code 活用実践シリーズ




まとめ
Claude Codeで快適かつ安全なコーディング環境を作るためには、正しい除外設定が不可欠です。
- .claudeignoreは非公式: ネット上の古い俗説に惑わされず、公式仕様に準拠する。
- permissions.denyを活用:
.claude/settings.jsonで機密情報と巨大依存ファイルを明示的にブロック。 - respectGitignoreと併用:
.gitignoreと連動させつつ、二重防御でコンテキストを最適化。
不要なファイルをしっかり除外してクリーンなコンテキストを維持し、Claude Codeの圧倒的な開発スピードを存分に体験してください。
あわせて読みたいおすすめ書籍
Claude Codeをさらに深く使いこなしたい方には、以下の書籍がおすすめです。


コメント