0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AGENTS.mdとCLAUDE.mdをsymlinkで統一したら、Windowsのメンバーだけ指示が消えていた——Git for Windowsの静かな罠

0
Posted at

AGENTS.md と CLAUDE.md を1つにまとめたい、という需要は大きいです。GitHub の Claude Code への最大の要望の1つ(#6235、5,200 を超える reactions)も、ここにあります。

手軽な定番が symlink です。CLAUDE.mdAGENTS.md へのシンボリックリンクにすれば、1つのファイルを両方の道具が読みます。多くの解説がこれを勧めています。

でも、チームに Windows の人がいると、その人だけ指示が静かに消えます。エラーは1つも出ません。気づくのは、AI が「守ります」と書いたルールを破り始めてからです。

何が起きるか(手元で再現できます)

元のリポジトリでは、CLAUDE.md は symlink です。git ls-files --stage で mode が 120000 と出ます。

$ git ls-files --stage
100644 c0a9443... 0	AGENTS.md
120000 47dc3e3... 0	CLAUDE.md

これを、Windows の既定の設定(core.symlinks=false)で clone してみます。

$ git -c core.symlinks=false clone <repo> cloned

すると、clone した側の CLAUDE.md は symlink になりません。中身を見ると、こうなっています。

$ cat cloned/CLAUDE.md
AGENTS.md
$ wc -c cloned/CLAUDE.md
9

CLAUDE.md の中身が AGENTS.md という9バイトの文字列だけ。本来の指示(# プロジェクトの指示 から始まる全文)は1文字も入っていません。

Claude Code は、この9バイトのファイルを指示書として読みます。つまり、指示が丸ごと消えた状態で動きます。それでも CLAUDE.md は存在するので、読み込みには成功し、警告も出ません。

なぜこうなるか

Git は symlink を「リンク先のパスを中身とするファイル」として保存します。checkout のときに本物の symlink を作り直すかどうかは、core.symlinks の設定で決まります。

Git for Windows の既定では、管理者権限か開発者モードが無いと symlink を作れないため、core.symlinksfalse になります。すると Git は、リンク先のパスを書いただけの普通のテキストファイルとして checkout します。CLAUDE.md の中身が AGENTS.md になるのは、これが理由です。

同じリポジトリを core.symlinks=true で clone した側は、ちゃんと symbolic link になり、中身も正しく読めます。違いはこの設定1つだけです。

自分の環境で確認する方法

clone した後、CLAUDE.md の中身とサイズを見るだけです。

file CLAUDE.md     # "ASCII text" ならテキスト化しています
cat CLAUDE.md      # 中身が "AGENTS.md" だけなら壊れています
wc -c CLAUDE.md    # 数バイトしかないなら壊れています

正常なら、CLAUDE.md の中身は本来の指示の全文です。チームで symlink を使っているなら、Windows のメンバーに一度この3行を走らせてもらうのが、一番早い切り分けです。

どうすればいいか

公式が勧めるのは、symlink ではなく取り込みです。CLAUDE.md の冒頭に1行、

@AGENTS.md

と書くだけ。CLAUDE.md は実体のあるファイルなので、Windows でもテキスト化しません。Claude Code はこの CLAUDE.md を読み、@AGENTS.md の行で AGENTS.md の中身を取り込みます。Claude Code 固有の指示は、その下に足せます。

どうしても symlink を続けたいなら、チーム全員が git config core.symlinks true を設定し、Windows のメンバーは OS の開発者モードを有効にする必要があります。1人でも漏れると、その人だけ静かに壊れます。だからこそ、公式は Windows では取り込みを勧めています。

他の回避策にも、それぞれの壊れ方がある

symlink のこの罠は、両立の5つの道のうちの1つです。pre-commit hook で同期する道は、git clone では複製されないので各人への配布が別に要ります。CI で同期する道は手元には効きません。公式の取り込みは一番制約が少ない一方、Claude Code 固有の追記の置き場所を間違えると共有側に漏れます。

どの道が、自分の使い方(個人で使い分ける/チーム/並行)と、どの環境で静かに壊れるか。その一覧と、CLAUDE.md から AGENTS.md への巻き戻しつきの移行の手順を、別の本にまとめています。

  • 5つの道それぞれが、どの型・どの環境で壊れるかの一覧
  • Anthropic の公式の対応の追跡と、6月15日の課金分離との関係
  • 回避策それぞれの、すぐ使えるテンプレート集

AGENTS.md と Claude Code の interop 運用の手引き(¥1,500、はじめにと第1章・第2章は無料で試し読みできます)

破壊的コマンドや認証情報の流出を予防する hook は、cc-safe-setup(MIT、無料)で約800件公開しています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?