検証バージョン: Claude Code 2.1.39 検証日: 2026-08-11
CLAUDE.md に指示を書いたのに Claude Code が従ってくれない、という声は多いです。
原因のほとんどは書き方の巧拙ではなく、「どこに置くか」と「何を書くか」の前提がずれていることにあります。
この記事では、効かない原因を頻度の高い順に5つ挙げ、上から順に切り分けていきます。切り分けはコマンドをそのままコピーして実行できる実験にしてあるので、自分の環境で確かめながら進められます。
今回解決する事象
- CLAUDE.md に口調やルールを書いたのに、回答に反映されない
- 昨日までは効いていた気がするのに、今日は無視される
- グローバルに書いた指示とプロジェクトに書いた指示のどちらが効いているのか分からない
どれも原因は同じ5つに集約されることが多いです。以降で説明しますので、確認してみてください。
前提: CLAUDE.mdの仕組み
CLAUDE.md は、Claude Code がセッションの開始時に自動で読み込む指示ファイルです。
プロジェクトの決まりごと、回答の口調、禁止事項をここに書いておくと、毎回のプロンプトに書き直さなくても効くようになります。新しく入ったメンバーに最初に渡す運用ルールのようなもの、と考えると近いです。
CLAUDE.md は1つだけではなく、複数の階層が重なって効きます。
- ~/.claude/CLAUDE.md 自分の全プロジェクトに効く個人ルール
- プロジェクトルートの CLAUDE.md そのリポジトリの共有ルール。git に入れてチームで共有する
- サブディレクトリの CLAUDE.md そのフォルダ配下で作業するときだけ足される
これらは上書き合戦ではありません。すべて積み重なって Claude に渡されます。だからグローバルに書いた口調とプロジェクトに書いた技術ルールは両立します。ただし両者が矛盾すると解釈がぶれます。この重なり方を知らないことが、「効かない」の大半の原因です。
もうひとつ大事なのは、読み込まれるタイミングです。「セッションの開始時」とは具体的に次の3つを指します。
- claude を起動したとき
- claude -p でワンショット実行したとき
- 会話中に /clear を実行したとき
会話の途中で CLAUDE.md を編集してもその場では反映されません。「さっき直したのに効かない」の正体はたいていこれです。
なお、セッションが継続扱いになる操作では読み直しのされ方が変わります。
- /compact(コンテキストの要約)や –resume での再開: プロジェクトルートの CLAUDE.md に限り、その時点の最新版が読み直される
- サブディレクトリのネストされた CLAUDE.md: 自動では再注入されず、そのフォルダのファイルを次に読んだときに反映される
検証
普段プロジェクトを置くフォルダの下に、実験専用のプロジェクトを作ります。ここでは例として ~/projects/claude-test とします。自分の作業フォルダのパスに読み替えてください。
mkdir -p ~/projects/claude-test前提として大事なのは、Claude Code は起動したディレクトリのプロジェクト CLAUDE.md を読むという点です。実験では起動するフォルダをそろえます。
実験で足した設定は、各実験の最後に消すコマンドを載せてあります。
検証1:そもそも読み込まれているか
一番多い原因は、置き場所の間違いで読み込まれていないことです。個人用は ~/.claude/ 、プロジェクト用はリポジトリのルートに置きます。読み込まれているかどうかは、目印を使えば確実に判定できます。
- 個人用 CLAUDE.md に目印のルールを追記します。
echo '- 回答の冒頭に必ず「確認OK」と書く' >> ~/.claude/CLAUDE.md- 実験用プロジェクトに移動し、新しいセッションで Claude Code を起動します。既存セッションには反映されないため、必ず起動し直します(起動中のセッションで続ける場合は /clear でも新しいセッション扱いになります)。
cd ~/projects/claude-test
claude- 起動した Claude に次の質問を送ります。ここで”確認OK”という文字が出ていれば読み込みができています。
❯ 1たす1はいくつ?
● 確認OK
1たす1は 2 です。 - 確認できたら Claude を終了し、追記した目印の行を消します。
sed -i '/確認OK/d' ~/.claude/CLAUDE.md回答の冒頭に「確認OK」が付きます。付けば読み込まれています。付かなければ置き場所を疑ってください。
検証2:階層が積み重なっているか
グローバルとプロジェクトのどちらが効いているのか分からない、という混乱は「上書きされている」という誤解から来ます。両立することを自分の環境で確かめます。
- 個人用 CLAUDE.md に敬語のルールを追記します。
echo '- 回答の冒頭に必ず「個人ルールOK」と書く' >> ~/.claude/CLAUDE.md- 実験用プロジェクトの CLAUDE.md に語尾のルールを書きます。
echo '- 回答の末尾に必ず「プロジェクトルールOK」と書く' > ~/projects/claude-test/CLAUDE.md- 実験用プロジェクトに移動して起動します。
cd ~/projects/claude-test
claude- 起動した Claude に次を送ります。答えの最初と最後にそれぞれ出力があるかと思います。
❯ 1たす1はいくつ?
個人ルールOK
1たす1は 2 です。
プロジェクトルールOK
✻ Crunched for 3s- 確認できたら Claude を終了し、実験で足した設定を消します。
sed -i '/個人ルールOK/d' ~/.claude/CLAUDE.md
rm ~/projects/claude-test/CLAUDE.md片方しか付かない場合は、付かなかった側の階層が読まれていません。
- 冒頭の「個人ルールOK」だけ → プロジェクト側が読まれていない。CLAUDE.md の置き場所と起動フォルダを疑う
- 末尾の「プロジェクトルールOK」だけ → 個人側が読まれていない。~/.claude/CLAUDE.md の場所を疑う
上書きではないので、両方が読み込まれます。なので、個人用とプロジェクト用で矛盾が起きないように注意してください。次に、仮に矛盾していた場合の検証をしてみます。
検証3:階層間で矛盾していないか
積み重なるということは、矛盾した指示を書くと解釈がぶれるということです。矛盾したときにどちらが勝つのかを実測します。
- 個人用 CLAUDE.md に日本語のルールを追記します。
echo '- 回答は日本語で書く' >> ~/.claude/CLAUDE.md- 実験用プロジェクトの CLAUDE.md に、矛盾する英語のルールを書きます。
echo '- Answer in English' > ~/projects/claude-test/CLAUDE.md- 実験用プロジェクトに移動して起動します。
cd ~/projects/claude-test
claude- 起動した Claude に次を送り、返ってくる言語を観察します。
❯ Reactとは何か教えて
React is a JavaScript library for building user interfaces, developed by Meta (formerly Facebook) and released as open source in 2013. It's one of the most widely used front-end technologies today.
Its core ideas:
- Component-based architecture — You build UIs by composing small, reusable pieces called components. Each component encapsulates its own structure, logic, and styling, which makes large applications easier to maintain.
- Declarative rendering — Instead of manually manipulating the DOM, you describe what the UI should look like for a given state, and React updates the actual DOM efficiently for you.
- JSX — A syntax extension that lets you write HTML-like markup directly inside JavaScript, e.g. const el = <h1>Hello</h1>;.
- Virtual DOM — React keeps a lightweight in-memory representation of the UI. When state changes, it diffs the new tree against the old one and applies only the minimal necessary DOM updates, which keeps rendering fast.
- Unidirectional data flow — Data flows from parent to child via props, and state is managed with hooks like useState and useEffect, making the app's behavior predictable and easier to debug.
A minimal example:
function Greeting({ name }) {
return <h1>Hello, {name}!</h1>;
}
React itself only handles the view layer, so it's often combined with routing (React Router), state management (Redux, Zustand), or full-stack frameworks like Next.js. It's also the foundation of React Native, which lets you build mobile apps with the same component model.
(Note: I answered in English because this project's CLAUDE.md specifies "Answer in English", which takes precedence over your global Japanese-language setting. Let me know if you'd prefer Japanese here.)
✻ Baked for 15s- 確認できたら Claude を終了し、実験で足した設定を消します。
sed -i '/回答は日本語で書く/d' ~/.claude/CLAUDE.md
rm ~/projects/claude-test/CLAUDE.md一般に、より狭い範囲を対象にした指示のほうがその場の文脈として強く効きやすいため、プロジェクト側(英語)が優先される想定です。実際にどちらになるかを自分の目で確認します。
つまり、CLAUDE.mdが効かないときに、深い階層のCLAUDE.mdで矛盾が無いかを確認すると良いと思います。
検証4:指示が曖昧・長すぎないか
ここまでの検証で読み込みと階層に問題がなければ、原因は書き方に移ります。実験ではなく、自分の CLAUDE.md を次の観点で見直してください。
- 曖昧すぎないか。「コードをきれいに書く」ではなく「関数は40行を目安に分割する」のように、解釈の余地がない形にします。数字や固有名詞で締めるのがコツです
- 長すぎて埋もれていないか。ファイルが長くなると下のほうは効きが落ちます。大事なルールは上に置き、固定のルールだけを書きます。一時的な作業の話は毎回読まれるノイズになるので入れません
指示の数がいくつを超えると守られなくなるのかは、別記事で実測する予定です(準備中)。
検証5:そもそもCLAUDE.mdの守備範囲か
検証ではないですが、「毎回かならず X を実行して」のような確実な自動実行は、CLAUDE.md では取りこぼすことがあります。
CLAUDE.md はあくまで指示書きで、実行を保証する仕組みではありません。確実性が要るものはフック(Hooks)に移してください。フックは settings.json で設定でき、決めたタイミングで必ずコマンドが走ります。
つまずいた点
個人用のCLAUDE.md(~/.claude/CLAUDE.md)に追記した内容が、既存プロジェクトのCLAUDE.mdと矛盾しており、特定の既存プロジェクトで反映されない事象が出て四苦八苦しました。
何となく、CLAUDE.mdは上書きされないみたいなことを覚えてしまっていたので、矛盾があったときにどちらが優先度が高いのかを意識していませんでした。
複数のプロジェクトを管理しているときに、個人用のCLAUDE.mdを更新したのに、反映されないときはぜひ優先度を気にしてみてください。
Q&A
- 「セッションの開始時に読み込まれる」というけれど、セッションの開始って具体的にいつ?
-
次の3つです。
- claude の起動
- claude -p のワンショット実行
- 会話中の /clear
/compact や –resume での再開はセッション継続扱いですが、プロジェクトルートの CLAUDE.md はその時点の最新版が読み直されます。セッション中に CLAUDE.md を編集してもその場では反映されないので、確実に効かせたいときは起動し直すか /clear してください。
まとめ
CLAUDE.md が効かないときは、書き方を練り直す前に、読み込まれているか(置き場所)、積み重なりと矛盾(階層)、曖昧さと長さ(書き方)、守備範囲(フックの領分)の順で検証するのが早いです。検証1の目印テクニックだけでも覚えて帰ってください。効いているかどうかを推測でなく事実で判定できるようになります。

