Claude Code の --add-dir で追加したディレクトリの CLAUDE.md が読まれないときの設定
--add-dir や /add-dir で追加したディレクトリの CLAUDE.md は既定では読み込まれません。CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD で読み込ませる方法と、additionalDirectories との関係、対象ファイルの範囲を解説します。
共通の設定やドキュメントを別リポジトリに置き、claude --add-dir ../shared-config で参照させている構成はよくあります。ところが、その shared-config/CLAUDE.md に書いた指示が効かない、という相談が多い機能です。
結論として、--add-dir で追加したディレクトリの CLAUDE.md は 既定では読み込まれません。環境変数 CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD を設定したときだけ読み込まれます。
KEY POINT
この記事で分かること
--add-dirが与えるのは「ファイルアクセス」であり「設定の検出」ではないことCLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MDで読み込まれるファイルの範囲permissions.additionalDirectoriesとの関係と、毎回付けずに済ませる書き方
--add-dir は設定を検出しない
--add-dir(セッション内なら /add-dir)は、起動ディレクトリの外にある場所を追加の作業ディレクトリとして扱い、Claude がそこにあるファイルを読み書きできるようにするオプションです。公式ドキュメントは、追加ディレクトリからは「ほとんどの .claude/ 設定が検出されない」と明記しています。CLAUDE.md もこの対象で、既定では読み込まれません。
同じことを settings.json に書くのが permissions.additionalDirectories です。こちらも役割は同じで、ファイルアクセスの付与であり、CLAUDE.md の読み込みではありません。
{
"permissions": {
"additionalDirectories": ["../shared-config/"]
}
}
用語解説
作業ディレクトリ: Claude Code が読み書きを許可する範囲の基準になるディレクトリです。起動した場所に加えて、--add-dir、/add-dir、permissions.additionalDirectories で増やせます。
CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD で読み込ませる
追加ディレクトリのメモリファイルも読み込ませたい場合は、環境変数を設定して起動します。
CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1 claude --add-dir ../shared-config
このとき読み込まれるのは、追加ディレクトリ直下の次のファイルです。
| ファイル | 読み込み |
|---|---|
CLAUDE.md | 読み込まれる |
.claude/CLAUDE.md | 読み込まれる |
.claude/rules/*.md | 読み込まれる |
CLAUDE.local.md | 読み込まれる(--setting-sources で local を除外していると読み込まれない) |
環境変数ページの説明では、この変数は「Claude Code が CLAUDE.md を探す追加ディレクトリのコロン区切りリスト(Windows は ; 区切り)」とされています。一方でメモリのページの例は =1 を付けて --add-dir と組み合わせています。どちらの形でも動くかは公式ドキュメントでは確認できなかったため、まずは公式例どおり =1 と --add-dir の組み合わせで試し、効かなければディレクトリのパスを値に指定してください。
毎回付けずに済ませる
環境変数を毎回シェルで指定するのが面倒なら、settings.json の env キーに書きます。env に書いた値はすべてのセッションとそのサブプロセスに適用され、シェルで同名の変数が設定されていても settings 側が優先されます。
{
"env": {
"CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD": "1"
},
"permissions": {
"additionalDirectories": ["../shared-config/"]
}
}
これで claude と打つだけで、../shared-config/ へのアクセスと、その CLAUDE.md の読み込みが両方有効になります。
追加ディレクトリの CLAUDE.md は信頼できるものだけにする
追加ディレクトリの CLAUDE.md は、そのディレクトリを管理している人が書いた指示をそのまま Claude に渡します。clone してきた他人のリポジトリを --add-dir で追加し、この環境変数を有効にすると、意図しない指示が入り込む余地があります。共有設定リポジトリなど、内容を自分たちが管理しているものに限ってください。
読み込まれたかどうかは、セッション内で /context を実行して Memory files に追加ディレクトリの CLAUDE.md が並ぶことで確認できます。逆に、共有したい指示が短いなら、環境変数を使わず自分の CLAUDE.md から @ インポート記法 で取り込む方が単純です。CLAUDE.md の階層の全体像は親記事の CLAUDE.md の書き方 を参照してください。
まとめ
--add-dirとpermissions.additionalDirectoriesはファイルアクセスを付けるだけで、そこにある CLAUDE.md は既定では読まない- 読ませるには
CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MDを設定する。CLAUDE.md、.claude/CLAUDE.md、.claude/rules/*.md、CLAUDE.local.mdが対象 - 毎回付けたくなければ settings.json の
envに書く - 内容を管理していないディレクトリで有効にしない
- 確認は
/contextの Memory files
よくある質問
- --add-dir で追加したディレクトリの CLAUDE.md は自動で読まれますか?
- いいえ。既定では追加ディレクトリのメモリファイルは読み込まれません。環境変数 CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1 を設定すると読み込まれます。
- permissions.additionalDirectories に書けば読み込まれますか?
- 追加ディレクトリへのファイルアクセスは付きますが、そこにある .claude/ の設定は基本的に検出されません。CLAUDE.md を読ませたい場合は同じ環境変数が必要です。
- 環境変数を毎回付けるのが面倒です。
- settings.json の env キーに書けば、すべてのセッションに適用されます。
参考にした一次情報
この記事は公式ドキュメントを基に AI が下書きを作成し、運営者が内容を確認して公開しています。誤りを見つけた場合は お問い合わせからお知らせください。