本文へ移動
Claude Tips

CLAUDE.md とメモリ

CLAUDE.md・AGENTS.md・.claude/rules・自動メモリで Claude に指示と記憶を持たせる方法と、置き場所、読み込み順、インポート、設定、うまく効かないときの確認点をまとめます。

Claude Code のセッションは、毎回まっさらなコンテキストウィンドウで始まります。セッションをまたいで知識を運ぶ仕組みは 2 つあります。自分で書く指示の CLAUDE.md(リポジトリの AGENTS.md も、単独か CLAUDE.md と一緒に読める)と、あなたの訂正や好みから Claude が自分で書くメモの自動メモリ(auto memory)です。このページでは、その書き方・置き場所・読み込みのしくみ・設定を扱います。

  • どちらも毎回の会話の始めに読み込まれるが、Claude は「強制される設定」ではなく文脈として扱う
  • 特定の動作を確実に止めたいときは、CLAUDE.md ではなく PreToolUse フックを使う(フックの使い方)
  • 指示は具体的で短いほど守られやすい。1 ファイルあたり 200 行以内を目安にする
  • ファイルの種類やディレクトリごとの指示は .claude/rules/ に分けると、必要なときだけ読み込まれる
  • 何が読み込まれたかは /context、ファイルの編集は /memory で確かめられる

CLAUDE.md と自動メモリの違い#

項目 CLAUDE.md 自動メモリ
書く人 あなた Claude
中身 指示とルール 学んだことやパターン
範囲 プロジェクト・ユーザー・組織 リポジトリごと(worktree をまたいで共有)
読み込み先 毎回のセッション 毎回のセッション(先頭 200 行か 25KB)
使いどころ コーディング規約・ワークフロー・プロジェクトの構成 あなたの好み・Claude への訂正・コードから分からないプロジェクトの文脈

Claude の振る舞いを導きたいときは CLAUDE.md を使います。自動メモリは、手作業なしで訂正から学ばせます。サブエージェントも自分の自動メモリを持てます(サブエージェント)。

CLAUDE.md ファイル#

CLAUDE.md は、プロジェクト・個人のワークフロー・組織全体に向けた、永続する指示を書く Markdown ファイルです。Claude がセッションの始めに毎回読みます。

いつ CLAUDE.md に足すか#

毎回説明し直すことを書き留める場所として使います。次のようなときに足します。

  • Claude が同じ間違いを 2 回した
  • コードレビューで、このコードベースについて Claude が知っているべきことが指摘された
  • 前のセッションと同じ訂正や補足を、またチャットに打っている
  • 新しいチームメイトが、生産的になるために同じ文脈を必要とする

毎回のセッションで持たせたい事実(ビルドコマンド・規約・プロジェクトの構成・「必ず X をする」のルール)に絞ります。複数の手順になるものや、コードベースの一部にしか関係しないものは、スキルか、パスを絞ったルールへ移します。

CLAUDE.md の置き場所#

CLAUDE.md は複数の場所に置け、範囲がそれぞれ違います。次の表は、範囲の広いものから狭いものへの読み込み順で、プロジェクトの指示がユーザーの指示より後にコンテキストに出ます。

範囲 場所 用途 共有先
管理ポリシー macOS は /Library/Application Support/ClaudeCode/CLAUDE.md、Linux と WSL は /etc/claude-code/CLAUDE.md、Windows は C:\Program Files\ClaudeCode\CLAUDE.md IT や DevOps が管理する組織全体の指示(社内のコーディング標準・セキュリティポリシー・コンプライアンス要件) 組織の全ユーザー
ユーザーの指示 ~/.claude/CLAUDE.md すべてのプロジェクトに共通の個人の好み(コードの書式・個人のツールのショートカット) 自分だけ(全プロジェクト)
プロジェクトの指示 ./CLAUDE.md か ./.claude/CLAUDE.md。./AGENTS.md が代わりに、または一緒に読まれる場合は後述 チームで共有するプロジェクトの指示(構成・コーディング標準・よく使うワークフロー) ソース管理を通じたチームメンバー
ローカルの指示 ./CLAUDE.local.md 個人のプロジェクト固有の好み(自分のサンドボックスの URL・好みのテストデータ)。.gitignore に足す 自分だけ(現在のプロジェクト)
  • 作業ディレクトリより上の階層の CLAUDE.md と CLAUDE.local.md は、起動時に読み込まれる。サブディレクトリのファイルは、Claude がそのディレクトリのファイルを読んだときに必要に応じて読み込まれる
  • 大きなプロジェクトでは、プロジェクトのルールで、指示をトピックごとのファイルに分けられる。ルールは、指示をファイルの種類やサブディレクトリに絞れる

プロジェクトの CLAUDE.md を作る#

プロジェクトの CLAUDE.md は、./CLAUDE.md か ./.claude/CLAUDE.md のどちらにも置けます。プロジェクトで作業する誰にでも当てはまる指示(ビルドとテストのコマンド・コーディング標準・設計の判断・命名規則・よく使うワークフロー)を書きます。バージョン管理でチームに共有されるので、個人の好みではなく、プロジェクトの標準に絞ります。ファイルが読み込まれたかは、セッションで /context を実行し、「Memory files」の下の一覧で確かめます。

ヒント

/init を実行すると、最初の CLAUDE.md を自動で作れます。Claude がコードベースを分析し、見つけたビルドコマンド・テスト手順・規約をファイルにします。CLAUDE.md がすでにあれば、上書きせずに改善を提案します。そこから、Claude が自分では見つけられない指示を足して磨きます。

対話的な複数段階の流れにするには、/init を実行する前に環境変数 CLAUDE_CODE_NEW_INIT を 1 にします(シェルか設定ファイルの env ブロックに書く)。CLAUDE.md・スキル・フックのうちどれを用意するかを聞き、サブエージェントでコードベースを調べ、追加の質問で不足を埋め、ファイルを書く前にレビューできる提案を出します。この変数が変えるのは /init の動き方だけなので、設定したままにしておけます。

効果的な指示の書き方#

Claude は CLAUDE.md を、強制される設定ではなく文脈として扱うので、書き方で守られやすさが変わります。確かめられるほど具体的に書きます。

  • 「コードを整えて」ではなく「インデントは 2 スペース」
  • 「変更をテストして」ではなく「コミットの前に npm test を実行する」
  • 「ファイルを整理して」ではなく「API ハンドラーは src/api/handlers/ に置く」

短く・整理して・一貫させます。

  • 大きさ:1 つの CLAUDE.md ファイルは 200 行未満を目安にする。長いとコンテキストを多く使い、守られにくくなる。コードベースの一部にしか関係しない指示は、パスを絞ったルールへ移し、一致するファイルを扱うときだけ読み込ませる。インポートは長いファイルの整理には役立つが、インポートされたファイルも起動時に読み込まれるので、コンテキストの費用は減らない
  • 構造:関連する指示を Markdown の見出しと箇条書きでまとめる。整理された節は、詰まった段落より Claude が従いやすい
  • 一貫性:2 つの指示が矛盾すると、Claude はどちらかを適当に選ぶことがある。CLAUDE.md・サブディレクトリの CLAUDE.md・.claude/rules/ を定期的に見直し、古いものや矛盾するものを消す

指示ファイルを監査する#

古い内容や矛盾する内容がないかを Claude に調べさせるには、セッションで /doctor prompt-audit を実行します。古いモデル向けに書かれた指示・存在しないファイルやコマンドへの参照・互いに矛盾するファイルのような問題を探し、見つけたことと修正案の報告が出ます。Claude に適用を頼むまで、ファイルは何も変わりません。

  • 既定では、CLAUDE.md・CLAUDE.local.md・AGENTS.md と、.claude/ と ~/.claude/ の下のルール・スキル・コマンド・サブエージェント・出力スタイルが対象。1 つのファイルかディレクトリだけにするには、パスを渡す(/doctor prompt-audit .claude/skills/deploy)
  • 監査は同梱の /claude-api スキルを通して動く。そのスキルが skillOverrides か disableBundledSkills で無効なら使えない。/doctor prompt-audit は v2.1.283 以降が必要

ファイルをインポートする#

CLAUDE.md は、@path/to/import の書き方で、別のファイルをインポートできます。インポートされたファイルは、それを参照する CLAUDE.md と一緒に、起動時に展開されてコンテキストに読み込まれます。

  • 相対パスも絶対パスも使える。相対パスは、作業ディレクトリではなく、インポートを含むファイルから解決される。インポートされたファイルは再帰的にほかのファイルをインポートでき、深さは最大 4 段
  • 空白を含むパスは、各空白の前にバックスラッシュを付ける。付けないと、インポートが単独の行にあっても、最初の空白でパスが終わる。引用符で囲んだパスは、バックスラッシュの有無にかかわらず、まったくインポートされない
  • インポートの解析は、Markdown のコードスパンとコードブロックを飛ばす。インポートせずに CLAUDE.md にパスを書くには、バッククォートで囲む。`@README` はそのままの文字で、バッククォートの外の @README はファイルをインポートする
text
- API conventions @Design\ Docs/api-conventions.md
text
See @README for project overview and @package.json for available npm commands for this project.

# Additional Instructions
- git workflow @docs/git-instructions.md
  • バージョン管理に入れたくない、プロジェクトごとの個人の好みは、プロジェクトのルートに CLAUDE.local.md を作る。CLAUDE.md と一緒に読み込まれ、同じように扱われる。コミットされないよう .gitignore に足す。CLAUDE_CODE_NEW_INIT=1 を設定して /init を実行し、個人用の選択肢を選ぶと、これをやってくれる
  • 同じリポジトリの複数の git worktree で作業するとき、.gitignore された CLAUDE.local.md は、作った worktree にしかない。個人の指示を worktree 間で共有するには、ホームディレクトリのファイルをインポートする
text
# Individual Preferences
- @~/.claude/my-project-instructions.md

注意

プロジェクトのメモリファイルのインポートは、パスが作業ディレクトリの外に解決されるとき(上のホームディレクトリのインポートなど)、外部のインポートです。プロジェクトで外部のインポートに初めて出会うと、Claude Code はファイルを並べた承認のダイアログを出します。断ると、インポートは無効のままで、ダイアログは二度と出ません。

このダイアログは、共有プロジェクトに他の人がコミットしたファイルから守るためのものです。~/.claude/CLAUDE.md や ~/.claude/rules/ のようなユーザー範囲のメモリファイルは自分で書いたものなので、デスクトップの Cowork のセッションを除き、ダイアログなしでインポートを読み込み、ほかの個人設定と同じように信頼します。

デスクトップの Cowork のセッションでは、ユーザー範囲のファイルで、セッションの作業ディレクトリの外に解決されるインポートを飛ばし、ファイルの残りを読み込みます。そのセッションでは、シンボリックリンクかハードリンクである ~/.claude/CLAUDE.md と、作業ディレクトリの外を指すシンボリックリンクの ~/.claude/rules/ ディレクトリやルールファイルも飛ばします。

CLAUDE.md の読み込み方#

Claude Code は、現在の作業ディレクトリとその上のすべてのディレクトリから、CLAUDE.md と CLAUDE.local.md を読み込みます。foo/bar/ で動かすと、foo/bar/CLAUDE.md・foo/CLAUDE.md・隣り合う CLAUDE.local.md から指示を読みます。

  • 見つかったファイルはすべて、上書きし合わず、コンテキストに連結される。ディレクトリの木をまたいで、内容はファイルシステムのルートから作業ディレクトリへの順に並ぶ。foo/bar/ の例では foo/CLAUDE.md が foo/bar/CLAUDE.md より前に出るので、Claude を起動した場所に近い指示が最後に読まれる。各ディレクトリの中では、CLAUDE.local.md が CLAUDE.md の後ろに足されるので、個人のメモがその階層で最後に読まれる
  • Claude は、現在の作業ディレクトリの下のサブディレクトリの CLAUDE.md と CLAUDE.local.md も見つける。起動時には読み込まず、Claude がそのサブディレクトリのファイルを読んだときに含める。.claude/worktrees/ の下の worktree の中のファイルについては、worktree で並行作業の「worktree でサブエージェントを隔離する」の節を見る
  • ほかのチームの CLAUDE.md が拾われる大きなモノレポでは、claudeMdExcludes で飛ばす
  • CLAUDE.md の中のブロックレベルの HTML コメント(<!-- maintainer notes -->)は、内容が Claude のコンテキストに入る前に取り除かれる。コンテキストのトークンを使わずに、人間の保守者へのメモを残せる。コードブロックの中のコメントは残る。CLAUDE.md を Read ツールで直接開くと、コメントは見える

追加のディレクトリから読み込む#

--add-dir フラグは、メインの作業ディレクトリの外の追加のディレクトリへのアクセスを Claude に与えます。既定では、これらのディレクトリの CLAUDE.md は読み込まれません。追加のディレクトリのメモリファイルも読み込むには、環境変数 CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD を設定します。

bash
CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1 claude --add-dir ../shared-config
  • この書き方は、Bash か Zsh で、その 1 回の起動だけに変数を設定する。全セッションで有効にするには、~/.claude/settings.json の env ブロックに足す
  • 追加のディレクトリから、CLAUDE.md・.claude/CLAUDE.md・.claude/rules/*.md・CLAUDE.local.md を読み込む。--setting-sources から local を外していると、CLAUDE.local.md は飛ばされる

.claude/rules/ でルールを整理する#

大きなプロジェクトでは、.claude/rules/ ディレクトリで、指示を複数のファイルに整理できます。指示がモジュール化され、チームが保守しやすくなります。ルールは特定のファイルのパスに絞れるので、一致するファイルを Claude が扱うときだけコンテキストに読み込まれ、ノイズとコンテキストの消費を減らせます。

補足

ルールは、毎セッションか、一致するファイルが開かれたときにコンテキストに入ります。いつもコンテキストに要らない、タスク固有の指示には、呼び出したとき、またはプロンプトに関係すると Claude が判断したときだけ読み込まれるスキルを使います。

ルールを用意する#

プロジェクトの .claude/rules/ ディレクトリに Markdown ファイルを置きます。ファイルごとに 1 つのトピックを扱い、testing.md や api-design.md のように中身が分かる名前にします。.md ファイルはすべて再帰的に見つかるので、frontend/ や backend/ のようなサブディレクトリに整理できます。

text
your-project/
├── .claude/
│   ├── CLAUDE.md           # Main project instructions
│   └── rules/
│       ├── code-style.md   # Code style guidelines
│       ├── testing.md      # Testing conventions
│       └── security.md     # Security requirements
  • paths の frontmatter がないルールは、起動時に、.claude/CLAUDE.md と同じ優先度で読み込まれる
  • --setting-sources から project を外していると、プロジェクトのルールは飛ばされる。v2.1.211 より前は、paths で絞ったルールやネストした .claude/rules/ のルールなど、必要に応じて読み込まれるルールは、project を外していても読み込まれた

パスを絞ったルール#

YAML frontmatter の paths フィールドで、ルールを特定のファイルに絞れます。この条件付きのルールは、Claude が指定したパターンに一致するファイルを扱うときだけ適用されます。

markdown
---
paths:
  - "src/api/**/*.ts"
---

# API Development Rules

- All API endpoints must include input validation
- Use the standard error response format
- Include OpenAPI documentation comments
  • paths フィールドのないルールは無条件に読み込まれ、すべてのファイルに適用される。パスを絞ったルールは、ツールを使うたびではなく、Claude がパターンに一致するファイルに Read・Write・Edit ツールを使ったときに働く。シンボリックリンクで張られたプロジェクトディレクトリのパス(シンボリックリンクのチェックアウトなど)で Claude がファイルに届くときも、一致する

paths では、グロブパターンで、拡張子・ディレクトリ・その組み合わせでファイルを絞ります。

パターン 一致するもの
**/*.ts どのディレクトリの TypeScript ファイルも
src/**/* src/ ディレクトリの下のすべてのファイル
*.md プロジェクトのルートの Markdown ファイル
src/components/*.tsx 特定のディレクトリの React コンポーネント

複数のパターンを書けます。ブレース展開で、1 つのパターンで複数の拡張子に一致させることもできます。

markdown
---
paths:
  - "src/**/*.{ts,tsx}"
  - "lib/**/*.ts"
  - "tests/**/*.test.ts"
---
  • ブレースのグループごとに展開後のパターンの数が掛け算になる(src/*.{ts,tsx} は 2 つ、{a,b}/{c,d}/*.{ts,tsx} は 8 つ)。展開を抑えるため、1 つのルールの paths リスト全体で、展開後 1,000 パターンと 4 MiB の予算を共有し、ブレースのないパターンは予算に数えない。予算を超えるパターンは、Claude Code が展開せずに使い、リテラルのブレースはどのファイルにも一致しない。v2.1.217 より前は、ブレースのグループが多い paths の値が、起動時に CLI を止めたりクラッシュさせたりした
  • グロブ構文では、[ は [abc] のような括弧式の始まりと扱われる。photos [2024/** のように、括弧式として読めない [ を含むパターンは無効で、何にも一致せず、ルールのほかのパターンは動き続ける。ファイル名のリテラルの [ に一致させるには、photos \[2024/** のようにエスケープする。v2.1.207 より前は、無効なパターンが 1 つあると、ルールが評価されるすべてのファイルで Read ツールが失敗した

ルールの frontmatter#

ルールは、ファイルの先頭の --- の間の YAML frontmatter で設定します。Claude Code がルールから読むフィールドは paths だけで、ほかのフィールドはエラーなしに無視されます。frontmatter は、ルールをコンテキストに読み込む前に取り除かれます。

フィールド 必須 説明
paths いいえ ルールを一致するファイルに絞るグロブパターン。YAML のリストかカンマ区切りの文字列を受け付ける

マーカーの間の YAML が解析できないときは、Claude Code は frontmatter を無視し、paths のないルールとして読み込みます。解析エラーは claude --debug で見られます。

シンボリックリンクでプロジェクト間にルールを共有する#

.claude/rules/ ディレクトリはシンボリックリンクに対応するので、共通のルールを 1 つ保守し、複数のプロジェクトにリンクできます。循環するシンボリックリンクは検出され、うまく扱われます。

  • 作業ディレクトリの外を指すシンボリックリンクは、外部のインポートと同じように扱われる。リンクされたルールは、そのプロジェクトで外部のインポートを承認するまで読み込まれず、承認した後も paths フィールドのないものだけが読み込まれる。Claude Code が承認を求めるのは、プロジェクトのメモリファイルが @path で作業ディレクトリの外のファイルをインポートするときだけで、シンボリックリンクだけでは求めない。その承認なしで共通のルールを読み込むには、マシン上のすべてのプロジェクトに適用される ~/.claude/rules/ に置く
  • .claude/rules/ か CLAUDE.md のシンボリックリンクが、UNC 共有 \\server\share や /net・/Network 以下のようなネットワークパスを指すと、リンク先の指示は読み込まれない。そうしたパスを調べると、その名前のホストに接続しうるため、Claude Code はリンクをたどらない。\\wsl$ のパスはネットワークパスに数えない
bash
ln -s ~/shared-claude-rules .claude/rules/shared
ln -s ~/company-standards/security.md .claude/rules/security.md

ユーザーレベルのルール#

~/.claude/rules/ の個人のルールは、マシン上のすべてのプロジェクトに適用されます。プロジェクト固有でない好みに使います。

text
~/.claude/rules/
├── preferences.md    # Your personal coding preferences
└── workflows.md      # Your preferred workflows

Claude Code は、ユーザーレベルのルールをプロジェクトのルールより先に読み込むので、プロジェクトのルールは、ユーザーのルールより後にコンテキストに出ます。どちらの組も他方を上書きしません。ユーザーのルールとプロジェクトのルールが矛盾すると、Claude はどちらにも従いうるので、両者を一貫させます。

大きなチームでの CLAUDE.md の管理#

Claude Code を複数のチームに展開する組織は、指示を集中管理し、どの CLAUDE.md を読み込むかを制御できます。

組織全体の CLAUDE.md を配る#

組織は、マシンのすべてのユーザーに適用される、集中管理の CLAUDE.md を配れます。このファイルは、個々の設定では除外できません。

  1. 管理ポリシーの場所にファイルを作る:macOS は /Library/Application Support/ClaudeCode/CLAUDE.md、Linux と WSL は /etc/claude-code/CLAUDE.md、Windows は C:\Program Files\ClaudeCode\CLAUDE.md
  2. 構成管理のシステム(MDM・グループポリシー・Ansible など)で、開発者のマシンへ配る。組織全体のほかの設定は組織への導入と管理設定を参照

claudeMd キーを使うと、別ファイルを配る代わりに、管理された CLAUDE.md の内容を managed-settings.json の中に直接置けます。

  • 範囲:マシンのすべてのリポジトリのすべての Claude Code セッション。リポジトリ固有の指針には、プロジェクトの CLAUDE.md をコミットする
  • 優先順位:管理された CLAUDE.md ファイルと同じ。ユーザーとプロジェクトの CLAUDE.md より先に読み込まれる
  • 有効な場所:管理設定とポリシー設定だけ。ユーザー・プロジェクト・ローカルの設定に claudeMd を置いても効かない
json
{
  "claudeMd": "Always run `make lint` before committing.\nNever push directly to main."
}

管理された CLAUDE.md と管理設定は目的が違います。技術的な強制には設定、振る舞いの指針には CLAUDE.md を使います。

関心事 設定する場所
特定のツール・コマンド・ファイルパスをブロックする 管理設定の permissions.deny
サンドボックスの隔離を強制する 管理設定の sandbox.enabled
環境変数と API プロバイダーのルーティング 管理設定の env
ログイン方法と組織の制限 管理設定の forceLoginMethod・forceLoginOrgUUID
コードスタイルと品質の指針 管理された CLAUDE.md
データの扱いとコンプライアンスの注意 管理された CLAUDE.md
Claude への振る舞いの指示 管理された CLAUDE.md

設定のルールは、Claude が何を決めてもクライアントが強制します。CLAUDE.md の指示は Claude の振る舞いを形づくりますが、厳密な強制の層ではありません。設定の詳細は設定キー一覧を参照してください。

特定の CLAUDE.md を除外する#

大きなモノレポでは、上の階層の CLAUDE.md に、自分の作業に関係のない指示が入っていることがあります。claudeMdExcludes 設定で、パスかグロブパターンで特定のファイルを飛ばせます。次の例は、親フォルダのトップレベルの CLAUDE.md とルールディレクトリを除外します。除外が自分のマシンだけに残るよう、.claude/settings.local.json に足します。

json
{
  "claudeMdExcludes": [
    "**/monorepo/CLAUDE.md",
    "/home/user/monorepo/other-team/.claude/rules/**"
  ]
}
  • パターンは、グロブ構文で絶対ファイルパスに対して照合される。claudeMdExcludes は、ユーザー・プロジェクト・ローカル・管理ポリシーのどの設定の層にも設定でき、配列は層をまたいでマージされる
  • シンボリックリンクで届くルールファイル(ファイルかそのディレクトリがリンク)を除外するには、どちらかのパスに対してパターンを書く:.claude/rules/ の下のファイルのパスか、リンク先。どちらかに一致するパターンがファイルを除外する。v2.1.239 より前は、リンク先に一致するパターンだけがファイルを除外した
  • 管理ポリシーの CLAUDE.md は除外できない。組織全体の指示が、個々の設定にかかわらず常に適用されるため

AGENTS.md#

Claude Code は AGENTS.md をプロジェクトの指示として読めるので、ほかのコーディングエージェント向けに整えたリポジトリが、CLAUDE.md・インポート・設定を足さずに動きます。リポジトリにある指示ファイルの組み合わせごとに、Claude が既定で読むものは次のとおりです。

リポジトリにあるもの Claude が読むもの
AGENTS.md があり、作業ディレクトリかその上に CLAUDE.md も CLAUDE.local.md もない AGENTS.md
AGENTS.md があり、作業ディレクトリかその上に CLAUDE.md か CLAUDE.local.md もある CLAUDE.md のファイルだけ
すでに AGENTS.md をインポートしている CLAUDE.md がある CLAUDE.md。AGENTS.md はインポートを通して含まれる

既定を変える(常に両方のファイルを読ませる・CLAUDE.md だけを読ませる・組織の管理された指示だけを読ませる)には、「Project instructions」設定を変えます(後述)。

補足

AGENTS.md を直接読むには、Claude Code v2.1.277 以降が必要です。一部のセッションでは Claude が AGENTS.md を読めないので、そこでは CLAUDE.md からインポートします(後述)。

AGENTS.md が読まれるとき#

既定では、作業ディレクトリかその上に CLAUDE.md がないときだけ、Claude は AGENTS.md を読みます。この検査に数えられるファイルは次のとおりです。

  • 数えられる(AGENTS.md の代わりに Claude が読む):作業ディレクトリかその上のどのディレクトリにある CLAUDE.md・.claude/CLAUDE.md・CLAUDE.local.md
  • 数えられない(AGENTS.md と一緒に読み込まれ続ける):自分の ~/.claude/CLAUDE.md・組織の管理された CLAUDE.md・.claude/rules/ のファイル

数えられるものがないとき、Claude が読むものとその確かめ方は次のとおりです。

  • セッションの始めに:作業ディレクトリとその上のディレクトリのすべての AGENTS.md と .claude/AGENTS.md。対話セッションでは、会話に no CLAUDE.md found; AGENTS.md loaded: /home/you/repo/AGENTS.md のような行が出る
  • サブディレクトリで作業するとき:Claude が Read ツールでそこのファイルを開き、そのサブディレクトリに 3 つの CLAUDE.md のどれもないときに、そのサブディレクトリの AGENTS.md
  • 各 AGENTS.md の中:@path のインポートが展開され、claudeMdExcludes のパターンが適用され、プロジェクトの指示を飛ばすサブエージェントも、これらのファイルを飛ばす
  • 読まれないもの:AGENTS.local.md・AGENTS.override.md・.agents/ ディレクトリの下のもの

補足

CLAUDE.local.md も数えられるので、AGENTS.md に頼るプロジェクトで自分の未コミットの指示のために CLAUDE.local.md を足すと、Claude があなたの環境で AGENTS.md を読まなくなります。CLAUDE.local.md を保ちながら AGENTS.md も読ませるには、「Project instructions」を claude-md-and-agents-md にします。

どの指示ファイルを読み込むかを選ぶ#

Claude が読むファイルを変えるには、Claude Code のセッションで /config と打って設定パネルを開き、「Project instructions」を次のどれかにします。

値 Claude が読むもの
claude-md-or-agents-md CLAUDE.md のファイル。作業ディレクトリかその上に CLAUDE.md も CLAUDE.local.md もないときは AGENTS.md。既定
claude-md-and-agents-md CLAUDE.md と AGENTS.md の両方。各ディレクトリで CLAUDE.md が先、AGENTS.md がその後。すでに読み込んだ AGENTS.md(CLAUDE.md がインポートかシンボリックリンクしているもの)は飛ばすので、二重には読まれない
claude-md CLAUDE.md のファイルだけ
managed-only 起動時には、組織の管理された CLAUDE.md と自動メモリだけ。プロジェクト・ローカル・ユーザーの CLAUDE.md、.claude/rules/ のファイル、すべての AGENTS.md は除かれる。サブディレクトリの CLAUDE.md と .claude/rules/ のファイル、パスを絞ったルールは、Claude がそこのファイルを読んだときに読み込まれる

/config の代わりに、設定ファイルで値を設定することもできます。~/.claude/settings.json・--settings のファイル・管理設定の pluginConfigs の下に、組み込みの agents-md プラグインの ID で足します。プロジェクトとローカルの設定ファイルでは無視されます。次の例は、両方のファイルを読ませます。

json
{
  "pluginConfigs": {
    "agents-md@builtin": {
      "options": { "instructionFiles": "claude-md-and-agents-md" }
    }
  }
}

変更は、次に送るメッセージから、また新しいセッションのすべてで適用されます。

AGENTS.md の読み込みが使えないとき#

次のセッションでは、Claude は CLAUDE.md のファイルだけを読み、「Project instructions」は /config の設定パネルに出ません。

  • v2.1.277 より前の Claude Code を使っている
  • /plugin で、組み込みの agents-md プラグインを無効にした
  • 場合によっては、v2.1.276 以前からアップグレードした後の最初のセッション。Claude は次のセッションから AGENTS.md を読む
  • v2.1.281 より前は、Amazon Bedrock やテレメトリを無効にしたセッションなど、一部のセッションが CLAUDE.md のファイルだけを読んだ。そのバージョンでは Claude Code を更新する。これらのセッションで AGENTS.md を Claude に渡すには、CLAUDE.md からインポートする

CLAUDE.md との違い#

「Project instructions」の設定で Claude が読む AGENTS.md は、次の点で CLAUDE.md と違います。

項目 CLAUDE.md 設定を通して読まれる AGENTS.md
InstructionsLoaded フック 動く 動かない。CLAUDE.md がインポートかシンボリックリンクした AGENTS.md では、通常どおり動く
CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD を設定して --add-dir で足したディレクトリ その CLAUDE.md が読み込まれる その AGENTS.md は読み込まれない
作業ディレクトリの外のファイルの @path のインポート 外部のインポートの承認を求める そのプロジェクトで外部のインポートをすでに承認していれば、確認なしで読み込まれる

以前の AGENTS.md の回避策を外す#

Claude Code が AGENTS.md を自分で読む前に、読ませるための設定をしていたなら、よくある構成ごとの対処は次のとおりです。

  • @AGENTS.md を含む CLAUDE.md:そのままでよい。インポートを残しても、「Project instructions」のどの値でも、Claude が AGENTS.md を二重に読むことはない。ほかに何も入っていなければ CLAUDE.md を消す。一部のセッションが AGENTS.md を直接読み込めないなら残す
  • AGENTS.md を読むよう言葉で Claude に指示する CLAUDE.md:Claude が AGENTS.md を見るのは、自分でファイルを開くと決めたときだけ。CLAUDE.md を消して Claude に直接読ませるか、その文を @AGENTS.md のインポートに置き換える
  • AGENTS.md へシンボリックリンクした CLAUDE.md:何もしなくてよい。リンクを消してもよい。どちらでも Claude は内容を 1 回だけ読む
  • AGENTS.md を出力する SessionStart フック:外す。Claude が AGENTS.md を直接読むようになると、フックがコンテキストに 2 つ目のコピーを足す

他のツールと 1 つのファイルを共有する#

Claude が AGENTS.md を直接読んでいないときでも、隣の CLAUDE.md に @AGENTS.md のインポートを置けば、AGENTS.md をすべてのツールが共有する 1 つのファイルとして保てます。プロジェクトに CLAUDE.md もあるとき、「Project instructions」を claude-md にしたとき、AGENTS.md を読み込めないセッションで使います。Claude 固有の指示はインポートの下に足します。Claude は、インポートされたファイルを先に、残りを後に読みます。

markdown
@AGENTS.md

## Claude Code

Use plan mode for changes under `src/billing/`.

Claude 固有の内容が要らないなら、シンボリックリンクも使えます。

bash
ln -s AGENTS.md CLAUDE.md

コマンドは成功しても何も出力しません。インポートの代わりにシンボリックリンクを選ぶ前に、次の制約を確かめます。

  • 編集:Claude は CLAUDE.md をリンク越しに読むが、Edit と Write のツールはシンボリックリンクを通した書き込みを拒否し、拒否の文面はリンク先の AGENTS.md を編集するよう Claude に指示する
  • Windows:自分かリポジトリを clone する誰かが Windows で作業するなら、@AGENTS.md のインポートを使う。そこでシンボリックリンクを作るには管理者権限か開発者モードが要り、core.symlinks が有効でないと、コミット済みのシンボリックリンクは通常のテキストファイルとしてチェックアウトされ、その clone には指示の代わりに 1 行だけの CLAUDE.md が残る

どちらの方法でも、次のセッションで /context を実行し、「Memory files」の下に CLAUDE.md が出ていることを確かめます。

他のツールから指示を移す#

/init は、他のツールの指示ファイルを読み、関係する部分を生成する CLAUDE.md に取り込みます。

  • .cursor/rules/ か .cursorrules の Cursor のルール
  • .github/copilot-instructions.md の Copilot のルール
  • CLAUDE_CODE_NEW_INIT=1 を設定したとき:AGENTS.md・.devin/rules/・.windsurf/rules/ か .windsurfrules・.clinerules

/import を実行すると、対応するコーディングエージェントの設定を Claude Code に取り込めます。AGENTS.md などの指示ファイルを、対応する CLAUDE.md に 1 回だけコピーして追記し、MCP サーバー・コマンド・サブエージェント・スキルも引き継ぎます(v2.1.213 以降が必要)。

自動メモリ#

自動メモリは、何も書かなくても、Claude がセッションをまたいで知識を蓄えます。作業しながら、Claude は 4 種類のメモを自分のために保存します。種類は、メモリファイルの frontmatter の type フィールドに記録されます。

type 内容
user あなたの役割・専門性・作業の好み
feedback Claude への訂正と、あなたが確認したやり方
project 進行中の作業・期限・コードや git の履歴から Claude が導けない判断
reference 課題トラッカーやダッシュボードのような、プロジェクトの外の情報の場所
  • 構成・ファイルパス・デバッグの修正のように、コードベースから導けるものは保存しない。CLAUDE.md がすでに書いていることも保存しない
  • 毎セッション何かを保存するわけではない。将来の会話で役立つかを基準に、覚える価値を Claude が決める

有効・無効にする#

自動メモリは、ローカルのセッションでは既定でオンです。Claude Tag のセッション以外で、セルフホスト環境のセッションは、自動メモリがオフの状態で動きます。

切り替えるには、セッションで /memory を開き、自動メモリのトグルを使います。ユーザー設定の ~/.claude/settings.json に autoMemoryEnabled が保存されます。

次のセッションでは、トグルは自動メモリをオフにできますが、オンに戻せません。

そこで自動メモリがオフの間、トグルには off · can't be turned on here; use a session started outside Claude Code と出ます。自動メモリをオンに戻すには、ターミナルで直接 claude を実行し、そのセッションで /memory のトグルを使います。

1 つのプロジェクトだけオフにするには、そのプロジェクトの設定で autoMemoryEnabled を設定します。

json
{
  "autoMemoryEnabled": false
}

環境変数でオフにするには CLAUDE_CODE_DISABLE_AUTO_MEMORY=1 を設定します。

保存場所#

プロジェクトごとに、~/.claude/projects/<project>/memory/ に専用のメモリディレクトリができます。<project> のパスは git リポジトリから決まるので、同じリポジトリの全 worktree とサブディレクトリが 1 つの自動メモリのディレクトリを共有します。git リポジトリの外では、プロジェクトのルートが使われます。

  • CLAUDE_CONFIG_DIR と一緒に CLAUDE_CODE_PROJECT_DIR_NAME を設定すると、どのリポジトリで起動しても、その名前が <config dir>/projects/ の下の <project> ディレクトリとして使われ、その設定ディレクトリで起動したプロジェクトが 1 つの自動メモリのディレクトリを共有する(v2.1.234 以降が必要)
  • 別の場所に保存するには、settings.json に autoMemoryDirectory を設定する。ユーザー・プロジェクト・ローカル・ポリシー・--settings のどの設定範囲からでも読まれる。値は絶対パスか ~/ で始まるパス
json
{
  "autoMemoryDirectory": "~/my-custom-memory-dir"
}
  • プロジェクトの .claude/settings.json か .claude/settings.local.json に設定したときは、設定ファイルのフックと同じワークスペースの信頼の規則のもとで尊重される。permissions.blockReadsOutsideWorkingDirectories がオンの間は、リポジトリが供給した設定ファイルが選んだディレクトリから、その場所にかかわらず、自動メモリを読み込まず、そこへ保存もしない

ディレクトリには、MEMORY.md のインデックスと、メモリごとに 1 つのトピックファイルがあります。

text
~/.claude/projects/<project>/memory/
├── MEMORY.md           # Index, one line per memory, loaded into every session
├── user_role.md        # One memory
├── feedback_testing.md # One memory
└── ...                 # Any other topic files Claude creates
  • MEMORY.md はメモリのディレクトリのインデックスとして働く。Claude はセッション中、このディレクトリのファイルを読み書きし、MEMORY.md で何がどこにあるかを把握する
  • 自動メモリはマシン内に閉じる。同じ git リポジトリの全 worktree とサブディレクトリは 1 つの自動メモリのディレクトリを共有するが、ファイルはマシンやクラウド環境をまたいで共有されない
  • Claude Code は、古いセッションの記録を cleanupPeriodDays の保持期間の後に削除するが、メモリのディレクトリのメモリファイルは、その保持の掃除から外している。MEMORY.md とトピックファイルは、自分か Claude が編集か削除するまで残る。掃除の対象は.claude ディレクトリの中身を参照

動き方#

MEMORY.md の先頭 200 行か最初の 25KB のうち、先に来るほうが、すべての会話の始めに読み込まれます。その上限を超える内容は、セッションの開始時には読み込まれません。Claude は、詳しいメモを別のトピックファイルに移すことで、MEMORY.md を短く保ちます。

  • Claude が MEMORY.md に書いた後、Claude Code はファイルを 200 行と 25KB の読み取りの上限に照らして測る。上限に近いと、1 項目 1 行にする・詳細をトピックファイルへ移す・古い項目を統合するか消す、という短縮を Claude に促す。上限を超えると、書き込み自体は成功するが、次の読み込みで上限を超えた部分が落ちるので、インデックスを書き直すよう Claude に伝えるエラーが返る
  • この上限が適用されるのは MEMORY.md だけ。CLAUDE.md は 4 MiB までなら全体を読み込み、それより大きいファイルは飛ばす。短いファイルのほうがよく守られる
  • user_role.md や feedback_testing.md のようなトピックファイルは、起動時には読み込まれない。Claude は、必要になったときに標準のファイルツールで読む
  • メイン会話の自動メモリは、サブエージェントには読み込まれない(会話と親のシステムプロンプトを引き継ぐ fork は例外)。サブエージェント自身の自動メモリ(サブエージェントの memory フィールドで有効にする)は別のディレクトリ
  • 「Saved 2 memories」や「Recalled 2 memories」のようなメッセージが Claude Code の画面に出るとき、Claude は ~/.claude/projects/<project>/memory/ を更新しているか、読んでいる
  • YAML frontmatter で始まるメモリファイルを Claude が書くと、Claude Code は書き込みの時刻を ISO 8601 の modified frontmatter フィールドに記録する。その時刻は、事実がどれだけ新しいかを、あなたと、メモリを読み戻す Claude に示す。frontmatter のあるファイルは、次に Claude が書くときにこのフィールドが付く(以前のバージョンで作ったファイルも)。frontmatter のないファイルに Claude Code が frontmatter を足すことはない。modified フィールドは v2.1.214 以降が必要

メモリを監査・編集する#

自動メモリのファイルは、いつでも編集・削除できるふつうの Markdown です。セッションの中から、/memory を実行してメモリファイルを見て開けます。

/memory で見て編集する#

/memory コマンドは、ユーザーとプロジェクトの範囲の CLAUDE.md・CLAUDE.local.md・そのほかのメモリファイルの場所を並べます。まだ存在しないファイルのユーザーとプロジェクトの CLAUDE.md の項目も出ます。自動メモリのオン・オフの切り替えと、自動メモリのフォルダを開く選択肢もあります。ファイルを選ぶとエディタで開き、まだないファイルを選ぶと、先に作られます。現在のセッションに読み込まれた CLAUDE.md とルールのファイルを確かめるには、/context を実行します。

  • VS Code のような GUI エディタは、ファイルを別のウィンドウで開き、開いたままセッションを使い続けられる。v2.1.216 より前は、/memory はファイルを閉じるまで応答を待った。Vim のような端末のエディタは、終了するまで端末を占有する
  • 「always use pnpm, not npm」や「remember that the API tests require a local Redis instance」のように何かを覚えるよう頼むと、Claude は自動メモリに保存する。代わりに CLAUDE.md に足すには、「add this to CLAUDE.md」のように直接頼むか、/memory から自分でファイルを編集する

うまくいかないとき#

Claude が CLAUDE.md に従わない#

CLAUDE.md の内容は、システムプロンプトの一部ではなく、システムプロンプトの後のユーザーメッセージとして届きます。Claude は読んで従おうとしますが、あいまいな指示や矛盾する指示では、厳密な遵守は保証されません。調べる手順は次のとおりです。

  • /context を実行し、「Memory files」の下の一覧で、CLAUDE.md と CLAUDE.local.md が読み込まれたかを確かめる。CLAUDE.md がそこになければ、Claude には見えない。/memory で開いて編集する
  • 該当の CLAUDE.md が、セッションで読み込まれる場所にあるかを確かめる(上の「CLAUDE.md の置き場所」)
  • 指示をもっと具体的にする。「コードをきれいに整えて」より「インデントは 2 スペース」のほうが効く
  • CLAUDE.md の間で矛盾する指示を探す。2 つのファイルが同じ動作に別の指針を与えると、Claude はどちらかを適当に選ぶことがある
  • 指示が、Claude Code が自分で足す指針と競合していないかを確かめる。CLAUDE.md がコミットやプルリクエストのルールを決めているなら、組み込みのものを includeGitInstructions でオフにし、帰属のテキストを attribution で設定する

コミットの前や各ファイルの編集後のように、特定の時点で必ず動かしたい指示は、フックとして書きます。フックは決まったライフサイクルのイベントでシェルコマンドとして実行され、Claude が何を決めても適用されます。システムプロンプトのレベルで効かせたい指示には --append-system-prompt を使います(CLI のコマンドとフラグ)。起動時に渡すので、対話的な使い方よりスクリプトや自動化に向きます。会話を再開したときの動きも同じページにあります。

ヒント

InstructionsLoaded フックを使うと、どの CLAUDE.md とルールのファイルが、いつ、なぜ読み込まれたかを記録できます。パスを絞ったルールや、サブディレクトリで遅れて読み込まれるファイルのデバッグに役立ちます(フックのリファレンス)。

AGENTS.md が読み込まれない#

リポジトリに AGENTS.md があるのに、Claude がその中身を知らないようなら、たいていの原因は、プロジェクトのパスのどこかにある CLAUDE.md です。既定では、作業ディレクトリかその上に CLAUDE.md も CLAUDE.local.md もないときだけ、Claude は AGENTS.md を読みます。次の順に確かめます。

  1. 作業ディレクトリかその上のどのディレクトリにも、自分の ~/.claude/CLAUDE.md 以外の CLAUDE.md・.claude/CLAUDE.md・CLAUDE.local.md がないかを見る。あれば、「Project instructions」を claude-md-and-agents-md にしない限り、Claude は AGENTS.md の代わりにそれを読む
  2. claude --version で v2.1.277 以降かを確かめる。v2.1.281 より前は、Amazon Bedrock やテレメトリを無効にしたセッションなど、一部のセッションも AGENTS.md を読み込めなかったので、そのバージョンでは v2.1.281 以降へ更新する
  3. セッションで /config と打って設定パネルを開き、「Project instructions」が claude-md か managed-only になっていないかを確かめる。設定がまったく見えなければ、そのセッションは AGENTS.md を読み込めないセッション

Claude が AGENTS.md を読んだかを確かめるには、/memory を実行して一覧にそのパスがあるかを見ます。v2.1.280 より前は、/memory と /context が、Claude が直接読んだ AGENTS.md を一覧に出しませんでした。そのバージョンでは、代わりに Claude にプロジェクトの指示の中身を尋ねます。見つけた CLAUDE.md を残したいとき、またはセッションが AGENTS.md を読み込めないときは、AGENTS.md の隣に、それをインポートする CLAUDE.md を足します。

自動メモリが何を保存したか分からない#

/memory を実行し、自動メモリのフォルダを選ぶと、Claude が保存したものを見られます。すべて、読める・編集できる・消せるふつうの Markdown です。

CLAUDE.md が大きすぎる#

200 行を超えるファイルは、コンテキストを多く使い、守られにくくなることがあります。Claude Code は 4 MiB を超えるファイルを飛ばします。パスを絞ったルールで、一致するファイルを扱うときだけ指示を読み込むか、毎回は要らない内容を削ります。@path のインポートに分けるのは整理には役立ちますが、インポートされたファイルも起動時に読み込まれるので、コンテキストは減りません。

  • 指示ファイルが推奨の長さを超えていると、起動時と /status を実行したときに警告が出る。それぞれが推奨の長さに収まるファイルの合計が、セッションの開始時に合計の上限を超えたときも警告が出る。各 CLAUDE.md・ルールのファイル・@path のインポートは、それぞれ別のファイルとして数えられる
  • /doctor の点検は、チェックインされた CLAUDE.md の削減を提案する。ディレクトリ構成・依存関係の一覧・アーキテクチャの概要のような、コードベースから導ける内容を削り、落とし穴・理由・ツールの既定と違う規約を残す。削減の検査は v2.1.206 以降が必要

/compact の後に指示が消えたように見える#

プロジェクトルートの CLAUDE.md は圧縮を生き延びます。/compact の後、Claude はそれをディスクから読み直し、セッションに再注入します。サブディレクトリのネストした CLAUDE.md と、paths: frontmatter のあるルールは、Claude がそれらが当てはまるファイルを読んだときに再び読み込まれます。

圧縮の後に指示が消えたなら、それは会話の中だけで与えた指示か、まだ再読み込みされていないネストした CLAUDE.md にあるか、それ以降一致するファイルがまだないパスを絞ったルールです。会話の中だけの指示は、CLAUDE.md に足して残します。全体の内訳はコンテキストとプロンプトキャッシュにあります。設定が効かない原因の切り分けは設定のデバッグを参照してください。

公式ドキュメント(英語)

2026年10月5日時点の内容をもとに、日本語でまとめています。

ページの一覧