決まりを文書に残す

AIは会話の外のことを覚えていない。毎回読む文書に、作業の種類ごとの決まりと禁止を書き、破られては困る決まりは文書ではなく設定で止める。

2026年11月時点の Claude Code、GitHub Copilot、Cursor、OpenAI Codex の公式文書で書いています。置き場所と読み込みの決まりは版で変わるため、使う道具の文書で確かめてください。

要点

  • 会話だけで伝えた決まりは、会話の要約のあとや次の作業に残らない。リポジトリの文書に置く。
  • 文書は毎回読まれるが、従うかはモデルが決める。例外を許さない決まりは、拒否の設定とフックで止める。
  • 作業の種類で決まりが変わるなら、種類の判定を冒頭に置き、種類ごとに節か別の文書へ分ける。
  • 短く保ち、矛盾を消す。長い文書と食い違う指示は、守られにくくなる。
  • 道具ごとに置き場所が違う。AGENTS.md は複数の道具が読む共通の形。

文書と設定の分担

Claude Code の公式文書は、CLAUDE.md を強制される設定ではなく文脈として扱うと書き、どう判断しても止めたい操作には PreToolUse フックを使うよう示す[1]。指示には、モデルが読んで従うかを決めるものと、道具が必ず実行するものの2種類がある[2]。

会話の指示は消え、指示の文書は毎回読まれるがモデルが判断し、設定とフックは道具が必ず実行する 会話で伝えた指示 要約と次の作業で消え得る 指示の文書 CLAUDE.md AGENTS.md 設定とフック permissions.deny hooks モデルが判断 大半は従う。保証は無い 道具の操作 読む、書く、走らせる 道具が必ず止める モデルの判断と無関係
図1 指示の置き場所と、守られ方の違い
  • 同じ文書は、.env を読まない、整形を必ず掛ける、移行のフォルダに触らない、のような決まりを例に、「ほぼ毎回」で足りないものは設定へ移すよう勧める[2]。
  • 強調の語を足しても守られない行は、文書が長すぎて埋もれたか、例外を許さない決まりで、フックに移すべきものとされる[2]。
  • 逆に、好みの問題をフックにしない。名前付きのエクスポートを好む、のような例外のある決まりは文書に残す[2]。

道具ごとの置き場所

道具リポジトリ全体範囲を絞る仕組み個人用、全体用
Claude Code./CLAUDE.md か ./.claude/CLAUDE.md。CLAUDE.md が無ければ AGENTS.md.claude/rules/*.md の paths で、合うファイルを扱うときだけ読む。下の階層の CLAUDE.md~/.claude/CLAUDE.md、CLAUDE.local.md、組織が配る管理用の CLAUDE.md
GitHub Copilot.github/copilot-instructions.md.github/instructions/*.instructions.md の applyTo。AGENTS.md は近いものが優先ここでは扱わない
CursorAGENTS.md.cursor/rules の .mdc。常に、ファイルの型で、AIの判断で、手で呼んだとき、の4通りここでは扱わない
OpenAI CodexAGENTS.md。AGENTS.override.md があればそちら下の階層の AGENTS.md。現在の場所に近いものが後に来る~/.codex/AGENTS.md

出典は Claude Code[1]、GitHub Copilot[3]、Cursor[4]、OpenAI Codex[5]。AGENTS.md は Linux Foundation の Agentic AI Foundation が管理する共通の形で、編集するファイルに最も近いものが優先される[6]。複数の道具を使うなら、決まりの本体を AGENTS.md に置き、CLAUDE.md から読み込む形が取れる[1]。

読み込みの順と、消える所

Claude Code は上の階層から作業の場所まで連結して読み、下の階層と範囲付きの決まりは該当のファイルに触れたときに読む 起動したとき ~/.claude/CLAUDE.md repo/CLAUDE.md CLAUDE.local.md 後に読むほど 作業の場所に近い 該当のファイルに触れたとき repo/api/CLAUDE.md .claude/rules/db.md paths 要約のあとは、また 触れるまで入らない 会話だけで伝えた指示は、要約で消え得る
図2 Claude Code の指示の文書が入る時点
  • 作業の場所とその上の階層の CLAUDE.md は、起動時に、上から下へ連結して入る。上書きではなく足し合わせで、食い違えば Claude がどちらかを任意に選び得る[1]。
  • リポジトリの直下の CLAUDE.md は、会話の要約のあとに読み直される。会話でだけ伝えた指示は残らない[1]。
  • 大きさの目安は1ファイル200行未満。読み込み先の分割で整理はできるが、全部が一緒に入るので費用は減らない。一部にしか効かない決まりは paths 付きの決まりへ移す[1]。
  • Codex は連結の合計が既定で32KiBに達すると、それより後の文書を足さない。後に置いた細かい決まりほど切られる[5]。

何を書くか

コードを読めば分かることは書かない。公式文書の目安は、書く前に、コードを読めば見つかるか、実際に探しに行くか、の2つを問い、両方とも当てはまれば省くことである。書くべきは、会議で決めたこと、1人の頭の中にあるデプロイの手順のような、リポジトリに無い情報である[2]。

書くもの例
作業の種類の判定自社の基盤の開発か、顧客の案件か、運用か。種類ごとに使ってよい道具と編集してよい範囲が違う
確かめの正確な命令型、静的解析、テストの命令と、1ファイルだけ流す命令。AIの出力を確かめるの2段目
リポジトリに無い決定デプロイの流れ、移行の扱い、採用した誤りの扱いの部品
禁止と承認コミットと push の可否、本番に触れる操作、登録の前の人の承認。設定でも止める
言葉と書き方画面の文言の決まり、使わない言葉

CLAUDE.md 作業の種類で分ける例

# 作業の種類
始める前に、次のどれかを判定し、1行で宣言する。途中で変わったら、また宣言する。
- A 基盤の開発: api/ と web/ のコードを直す
- B 顧客の案件: 案件の道具だけで操作し、このリポジトリは編集しない

## A 基盤の開発
- 確かめ: scripts/check.sh を流し、全部の成功を出力で示してから報告する
- ルーティングを足したら、認可の設定も直す
- 禁止: git commit と git push。その場で頼まれたときだけ行う

## B 顧客の案件
- 登録の前に、下書きを drafts/ に書き、人の承認を得てから書き込む
- 詳しい手順は docs/案件/00_概要.md を読む

種類の判定を先に書くのは、決まりが種類ごとに矛盾するからである。B ではリポジトリを編集しないが、A では編集する。判定が無いと、片方の決まりがもう片方の作業に混ざる。長い手順は別の文書に置き、ここからは場所だけを指す。

.claude/settings.json 文書で止まらない禁止を設定で止める

{
  "permissions": {
    "ask":  ["Bash(git push *)"],
    "deny": ["Read(./.env)", "Read(./.env.local)", "Read(./secrets/**)"]
  }
}

拒否の規則は、自動の許可を含むどの権限のモードでも効く。ただし規則は道具の呼び出しに合わせて当たり、意図には当たらない。ファイルを開くスクリプトは Read の拒否をすり抜けるため、OSの水準で止めるにはサンドボックスを使う[2]。

守られないとき

症状原因の候補直し方
特定の行だけ無視される文書が長い。例外を許さない決まりを文書に書いている短くする。フックか拒否の設定へ移す
毎回違う方を選ぶ上と下の階層の文書、決まりのファイルが食い違う古い記述を消し、1か所にまとめる
途中から忘れる会話でだけ伝えた。下の階層の文書がまだ読まれていないリポジトリの直下の文書に書く
別の種類の作業の決まりが混ざる種類の判定が無い冒頭に判定と宣言を置く
指示の文書も入力である

他人のリポジトリを開けば、そこにある CLAUDE.md や AGENTS.md も読まれる。Claude Code は、作業の場所の外を指す読み込みを初めて見たとき承認を求める[1]。開く前に中身を読み、読ませた文書に紛れた命令と同じ扱いにする。

参照

  1. How Claude remembers your project Anthropic
  2. Best practices for Claude Code Anthropic
  3. Adding repository custom instructions for GitHub Copilot GitHub Docs
  4. Rules Cursor Docs
  5. Custom instructions with AGENTS.md OpenAI
  6. AGENTS.md Agentic AI Foundation