テレメトリを切ったClaude Codeは、AGENTS.mdを読んでいるか

コードを読まないAIエンジニア
サムネイル

AGENTS.mdを置いたのに、Claude Codeがそこに書いたルールを守らない。
テレメトリを切っている環境なら、原因はファイルの中身ではなく、リモートにあるフラグの判定かもしれません。
修正版が出たとされる今でも自分の環境で確かめる手順と、確かめる必要ごと消せる一行をまとめます。

テレメトリを切ったClaude Codeは、AGENTS.mdを黙って飛ばしていた

9月中旬のv2.1.277で、Claude CodeはCLAUDE.mdが無いプロジェクトではAGENTS.mdを代わりに読むようになりました。
CodexやCursor向けに書いた指示ファイルを、そのまま使い回せる変更です。

ところが、テレメトリを切った環境ではこれが動いていませんでした。
個人ブログでこの挙動を報告したプシェメク・シポヴィチさんによると、DISABLE_TELEMETRY か CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC が設定されていると、AGENTS.mdは一度も読み込まれず、警告も出ません。

値を0にしても「設定されている」扱いで、戻らないそうです。
GitHubのIssue #95690では、Amazon BedrockやVertex AI、サードパーティのゲートウェイ経由でも同じ結果になると指摘されています。

これらのプロバイダでは、テレメトリはもともとデフォルトでオフ。
企業で導入している構成ほど当たりやすい不具合でした。
あなたのチームはどの経路で使っていますか? シェルの環境変数だけでなく、settings.json の env に書いた値も同じように効きます。

原因はtengu_agents_md_modという、リモートのフラグ

AGENTS.mdの読み込みは、本体ではなく agents-md という組み込みプラグインが担当しています。
シポヴィチさんはv2.1.280のバンドルを文字列検索し、このプラグインの登録が tengu_agents_md_mod というStatsigのフィーチャーフラグで守られていることを突き止めました。

フラグが取れなかったときの値は false です。

  • テレメトリを切る
  • フラグを評価する通信も一緒に止まる
  • フラグが取れず、既定の false に落ちる
  • プラグインが登録されず、AGENTS.mdは読まれない

このうちフラグの評価まで止まる点は、公式のデータ利用ページにも書かれています。
DISABLE_TELEMETRY などを設定するとフィーチャーフラグの評価も止まる、という記述です。

ローカルのMarkdownを1枚読むだけの処理が、リモートの判定に依存していたことになります。
Hacker Newsの議論では、Anthropicの開発者であるmpoteatさんが、問題が起きたときに遠隔で止めるためのフラグだったと説明し、人為的なミスだと認めています。

ローンチ時の安全弁が、プライバシー設定と噛み合っていませんでした。

AGENTS.mdの不具合は2.1.281で直ったのか?

同じスレッドでmpoteatさんは、修正は同日リリースのv2.1.281に入ると書いています。
公式ドキュメントにも「v2.1.281より前は、Bedrock上やテレメトリ無効のセッションなど一部でCLAUDE.mdしか読まない。アップデートを」という趣旨の一文が加わりました。

一方で、2026年9月24日時点でIssue #95690は開いたままです。
CHANGELOGの2.1.281の項にも、この件の修正記載はありません。
フラグを外したのか、フラグが取れないときの値を変えたのかも、公開情報からは読み取れません。

開発者とドキュメントは直ったと言い、リリースノートとIssueはそれを示していない。
「直ったはず」で済ませるか、一度確かめるか。
私は確かめる方を選びます。かかるのは数分です。

自分の環境でAGENTS.mdが読まれているか、合言葉で確かめる

まず claude --version で2.1.281以上かを見て、古ければ claude update で上げます。
試す場所は、CLAUDE.mdが無い空のディレクトリです。
作業中のリポジトリだと、親ディレクトリにCLAUDE.mdがあった時点で、仕様どおりAGENTS.mdは読まれません。

~/.claude/CLAUDE.md はこの判定に数えられないので残したままで構いません。

mkdir -p /tmp/agents-md-check && cd /tmp/agents-md-check
echo 'The canary word is HIMAWARI.' > AGENTS.md

# ふだんの設定のまま
claude -p "ツールは使わずに答えてください。プロジェクト指示に書かれた合言葉は何ですか。知らなければ「知らない」と答えてください"

# テレメトリを切った状態
DISABLE_TELEMETRY=1 claude -p "ツールは使わずに答えてください。プロジェクト指示に書かれた合言葉は何ですか。知らなければ「知らない」と答えてください"

「ツールは使わずに」を付けないと、Claudeが自分でAGENTS.mdを開いて答えてしまい、読み込まれていなくても正解が返ることがあります。
両方でHIMAWARIが返れば問題なし。
後者だけ「知らない」なら、その環境はまだ影響を受けています。

対話モードなら、もっと直接見えます。

  • 読み込まれると、会話の中に no CLAUDE.md found; AGENTS.md loaded: とファイルのパスが表示される
  • v2.1.280以降なら、/memory の一覧にAGENTS.mdのパスが出る
  • /config に「Project instructions」の項目が無ければ、そのセッションはAGENTS.mdを読めない

なお、v2.1.276以前から上げた直後の最初のセッションは、読まれない場合があるとドキュメントにあります。
1回目で失敗したら、起動し直してから判断してください。

CLAUDE.mdからAGENTS.mdをインポートすれば、フラグに左右されない

確認の結果がどうであれ効く回避策があります。
CLAUDE.mdに1行書くだけです。

echo '@AGENTS.md' > CLAUDE.md

CLAUDE.mdの @path インポートは、agents-mdプラグインを通りません。
バージョンやフラグ、プロバイダに関係なく、AGENTS.mdの中身が読み込まれます。
公式ドキュメントも、AGENTS.mdを読めないセッションではこの方法を案内しています。

つまり2.1.281で直っていても直っていなくても、この1行があれば結果は同じ。
確認の手間ごと消せます。ただし上のコマンドは既存のCLAUDE.mdを上書きします。
すでにあるなら先頭に1行足し、Claude Code固有の指示はその下に残します。

@AGENTS.md

## Claude Code
Claude Codeだけに伝えたい指示をここに書く

インポートしたAGENTS.mdが二重に読まれることはない、とドキュメントに明記されています。
修正版に上げたあとも残しておいて問題ありません。
ln -s AGENTS.md CLAUDE.md でリンクを張る手もありますが、Windowsのメンバーがいるなら避けた方が安全です。

Gitの設定次第でリンクが1行のテキストとしてチェックアウトされ、指示がまるごと消えます。

CodexやCursorとAGENTS.mdを共有しているなら、どこを見るか

AGENTS.mdを複数ツールの共通ファイルにしているなら、次の5点を確認します。

  • インポートはCLAUDE.md側に書く。CodexもCursorもCLAUDE.mdは読まないので影響しません。逆に、AGENTS.mdの中に @ で別ファイルを読ませる書き方は避けます。Codexのドキュメントには @path 記法の説明がありません
  • AGENTS.override.md はCodex専用。Codexは同じ階層のAGENTS.mdより優先して読みますが、Claude Codeは読みません。AGENTS.local.md や .agents/ 配下も同様です
  • サブディレクトリのAGENTS.md。Cursorは入れ子のAGENTS.mdを使い、Claude Codeもそのディレクトリのファイルを開いたときに読みます。ただしこれもプラグインの仕事なので、動かないセッションに備えるなら、そこにも @AGENTS.md だけのCLAUDE.mdを置きます
  • CLAUDE.local.md を置いているメンバーがいないか。既定の設定では、これが1枚あるだけでAGENTS.mdは読まれなくなります
  • 両方を読ませる claude-md-and-agents-md という設定値は、プロジェクトの設定ファイルに書いても無視されます。チーム全員に効かせるなら、コミットしたCLAUDE.mdのインポートが一番確実です

後ろの2点は、テレメトリと無関係にAGENTS.mdが読まれなくなる経路です。
「テレメトリは切っていないのに」という相談には、ここから当たると早いです。

私は、AGENTS.mdの読み込みをリモートの判定に預けない

今回の件で、「対応した」と「自分の環境で動いている」は別物だと改めて感じました。私は次の方針で揃えます。

  • 1: ルートには @AGENTS.md を先頭に置いたCLAUDE.mdをコミットし、Claude Code固有の指示だけを下に書く
  • 2: 2.1.281以上には上げるが、修正が入ったことを前提にしない
  • 3: テレメトリを切っている人とBedrock経由の人には、合言葉テストを一度だけ回してもらう
  • 4: 共通のルールはoverrideやlocalに書かず、AGENTS.mdの本文に集める

あなたのリポジトリには、いまCLAUDE.mdがありますか? 無ければ1行で作り、あれば先頭に1行足す。
それだけで、リモートのフラグがどちらを向いていても、AGENTS.mdは確実に読まれます。