CLAUDE.md を書いたのに、Claude Code が読んでいるのか分からない。
この記事では、読み込まれたファイルを /context all で一覧し、効き目を指示書なしの対照と比べる手順を示します。
Git Bash で /context all が別の文字列に変わる問題も、実測して回避策を確かめました。
要約
-
claude -p "/context all"を対象フォルダで実行すると、### Memory Filesに読み込まれた指示書が表で出る - 置き場所が合っていれば、
CLAUDE.mdはProject、CLAUDE.local.mdはLocalとして並ぶ - 作業フォルダ直下以外(例:
docs/CLAUDE.md)は、起動時の表に載らなかった - Git Bash では
/context allがパスに変換される。MSYS_NO_PATHCONV=1を付けると動いた
検証した環境
| 項目 | 値 |
|---|---|
| OS | Windows 11 Pro(Windows NT 10.0.26300.0) |
| シェル | PowerShell 7.6.4。4 章の確認だけ Git Bash |
| Claude Code | 2.1.322 |
| モデル | 効き目の確認は --model sonnet を指定 |
Mac と Linux では実行していません。
結果はいずれも 1 回ずつの実行です。同じ依頼でも返答の細部は変わりえます。
1. 練習用リポジトリを作る
作業フォルダの外(%TEMP% の下)に、空のリポジトリを作ります。
$d = Join-Path $env:TEMP 'p488-demo'
New-Item -ItemType Directory $d | Out-Null
Set-Location $d
git init -q
CLAUDE.md には、全体設定に無い決まりを 1 つだけ書きます。
効き目を見分けるためです。
# demo
- 返事の最後に必ず「確認済み: <実行したコマンド>」の1行を付ける
<!-- 自分用メモ -->
- ローカル専用: 変数名は snake_case
2. 読み込まれたファイルを一覧する
claude -p "/context all" --no-session-persistence --model sonnet --output-format text
出力のうち ### Memory Files の表が、読み込まれた指示書です。
手元の環境では、ユーザー単位の全体設定が 3 行並びました。
下の抜粋では、その 3 行を省いています。
| Type | Path | Tokens |
| Project | C:\Users\…\Temp\p488-demo\CLAUDE.md | 46 |
| Local | C:\Users\…\Temp\p488-demo\CLAUDE.local.md | 25 |
Project と Local の行があれば、そのファイルは読まれています。
行が無ければ、置き場所かファイル名を疑います。
3. 作業フォルダ直下以外は表に載らない
docs/CLAUDE.md を足して、同じコマンドを実行しました。
New-Item -ItemType Directory docs | Out-Null
"- docs専用ルール" | Set-Content docs\CLAUDE.md -Encoding utf8
claude -p "/context all" --no-session-persistence --model sonnet --output-format text |
Select-String 'p488-demo'
表に出た行は、直下の CLAUDE.md と CLAUDE.local.md の 2 行だけでした。
docs/CLAUDE.md は載りませんでした。
サブフォルダの CLAUDE.md が、そのフォルダのファイルを扱うときに読まれるかどうかは、この実行では確かめていません。
起動時の表に載らないことと、読まれないことは別です。
この記事で言えるのは「起動時の /context all の表には載らなかった」までです。
4. Git Bash では /context all が変換される
同じ claude -p "/context all" を Git Bash から実行すると、Claude Code は引数を C:/Users/…/Git/context all のようなパスとして受け取り、/context は組み込みコマンドなので実行できない、と答えました。
表は出ませんでした。
Git Bash(MSYS)が、先頭が / の引数を Windows のパスへ変換するためです。
MSYS_NO_PATHCONV=1 を付けると、変換が止まり、表が出ました。
MSYS_NO_PATHCONV=1 claude -p "/context all" --no-session-persistence --model sonnet
確認として、出力に練習用フォルダのパスが 2 行(CLAUDE.md と CLAUDE.local.md)含まれることを grep -c で数えました。
PowerShell から実行するなら、この対策は要りません。
5. 指示が効いているかを対照で見る
読み込まれることと、従うことは別です。
CLAUDE.md の決まり(返事の最後に「確認済み:」の 1 行を付ける)を使って、あり・なしを比べました。
claude -p "このリポジトリにあるファイルを一覧で教えて。" --model sonnet --no-session-persistence --allowedTools "Glob" "Bash(ls:*)"
- 指示書あり: 返答の最後に
確認済み: git ls-files; echo ---; git ls-files --others --exclude-standardが付いた - 指示書なし(空のリポジトリ、CLAUDE.md なし): この行は付かなかった
全体設定は両方で読み込まれています。
全体設定に無い語句を選んだので、差は練習用の CLAUDE.md によるものと読めます。
ただし各 1 回の実行です。回数を重ねた確率は測っていません。
ハマりどころ
-
/context allの出力は、全体設定やツールの一覧も含めて長い。Select-Stringで自分のフォルダのパスに絞る - HTML コメント(
<!-- -->)の中身が読まれるかは、この記事では確かめていない - 空のリポジトリでの対照は、ファイルが無いことで返答自体が変わる。本格的に比べるなら、同じ中身のリポジトリで CLAUDE.md だけ外す
※この検証を含む個人開発の記録は note の入口記事にまとめています(無料)。