Claude Code reads AGENTS.md only when telemetry is on
텔레메트리를 켜야 AGENTS.md를 읽던 Claude Code
Claude Code 2.1.280에서는 원격 기능 플래그를 가져오지 못하면 AGENTS.md 로더가 꺼져 텔레메트리를 비활성화한 환경에서 프로젝트 지침을 읽지 않았습니다. 작성자는 우회 방법과 함께 문제를 보고했고, Anthropic 개발자는 임시 배포 설정 실수였으며 2.1.281에서 수정했다고 밝혔습니다.
- 주제
AI 요약
Claude Code 2.1.277은 프로젝트에 CLAUDE.md가 없을 때 AGENTS.md를 프로젝트 지침으로 읽는 기능을 추가했습니다. 하지만 작성자가 텔레메트리를 끄고 시험하자 파일이 로드되지 않았습니다. 2.1.280 번들의 코드를 살펴보니 로더는 agents-md라는 내장 플러그인이며, 기본 활성화 값은 false였습니다. 플러그인의 사용 가능 여부는 원격 기능 플래그 tengu_agents_md_mod에 달려 있었습니다. 플래그를 가져오지 못하면 로컬 디렉터리의 Markdown 파일을 읽는 기능도 실행되지 않았습니다.
재현과 측정
작성자는 AGENTS.md만 있는 빈 디렉터리를 만들고, 파일에 ‘The canary word is PERIWINKLE.’라는 문장을 넣었습니다. 이어 claude -p로 프로젝트 지침의 단어를 묻되 파일을 직접 읽지 말라고 요청했습니다. 설정 하나당 세션을 두 번 실행했습니다. 첫 세션은 기능 플래그를 가져오고, 두 번째 세션이 그 값을 사용하기 때문입니다.
측정 결과 CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1과 DISABLE_TELEMETRY=1 중 하나라도 설정하면 AGENTS.md가 로드되지 않았습니다. 두 변수를 0으로 바꿔도 차단은 풀리지 않았습니다. 문서상 변수는 값이 무엇이든 설정된 상태로 취급하기 때문입니다. 프로젝트의 .claude/settings.json에서 두 변수를 비워도 효과가 없었지만, 세션을 시작할 때 --settings로 값을 비우면 두 번째 세션부터 작동했습니다. 어느 경우에도 파일을 건너뛰었다는 경고는 출력되지 않았습니다. 글은 Bedrock, Vertex, 서드파티 게이트웨이에서도 원격 플래그가 참으로 설정되지 않는 문제가 있다고 전합니다.
우회 방법은 CLAUDE.md에 @AGENTS.md 한 줄을 넣는 것입니다. 이 가져오기는 기능 플래그에 의존하지 않아 비필수 트래픽 차단 상태에서도 카나리 단어를 읽었습니다. 다만 AGENTS.md 지원으로 없애려던 저장소별 CLAUDE.md를 다시 추가해야 합니다.
작성자의 문제 제기
작성자는 텔레메트리를 끄면 진단 데이터 전송만 멈추길 기대했는데, 이 설정이 로컬 파일 읽기까지 조용히 끈다고 지적합니다. 기능 플래그를 가져오지 못할 때 문서에 명시한 동작을 유지하거나, AGENTS.md를 건너뛴다는 경고를 보여야 한다는 주장입니다. 특히 여러 에이전트가 함께 쓰는 지침을 관리하는 사람이나 Bedrock·Vertex·게이트웨이를 정책상 사용하는 팀이 영향을 받는다고 설명합니다.
글은 사용자가 원하는 개선점도 제시합니다. 로컬 파일 읽기를 텔레메트리와 분리하고, 단계적 배포를 위해 기능을 막아야 한다면 시작 시 알림을 띄우자는 것입니다. 또 사용자 홈 디렉터리 수준의 AGENTS.md 지원과 .agents/skills 및 ~/.agents/skills 경로의 스킬을 복사 없이 읽는 기능도 요청합니다. 작성자는 Claude Code가 프로젝트의 .agents/skills는 찾지 못했지만 .claude/skills에서는 스킬을 찾았다고 했습니다. 현재는 스킬 디렉터리를 심볼릭 링크로 연결해 사용한다고 덧붙였습니다.
Hacker News 반응
- @nfRfqX5n — 가장 황당한 점은 이게 의도된 동작인지 버그인지 알 수 없다는 것입니다.
- @vaylian — 이 경우에 말이 되는 버그를 하나라도 떠올릴 수 있나요?
- @hgoel — 바이브 코딩이죠.
- @thejazzman — 프로덕션에서 문제를 일으키는, LLM이 자주 만들어내는 미묘한 버그일 가능성이 높습니다. ‘의도된 동작’으로 시작해 거기서 끝나는 근거 없는 음모론을 왜들 생각하는지는 모르겠습니다.
- @jpitz — 의도한 동작이라고 가정하면, 동기가 뭔가요?
- @chrisjj — 바이브 코딩의 정수네요.
- @tjoff — 잘 찾아냈네요. 다만 이 글을 작성하는 데 쓴 프롬프트를 읽고 싶습니다. 글은 필요한 분량의 열 배쯤 되고 읽기가 꽤 고통스럽네요.
- @sandrello — 지금까지 이런 도구를 써본 경험으로는, AI가 만든 패치를 코드베이스에 계속 쌓으면서 코드를 신경 쓰지 않을 때 생기는 미묘하지만 심각한 버그처럼 보입니다.
- @hgoel — 맞아요. 긴 컨텍스트에서는 특히 그렇고, 같은 컨텍스트에서 직전에 텔레메트리를 다뤘다면 더 그렇습니다. AI는 이상한 조건문을 끼워 넣고, 알아차릴 만큼 주의를 기울이면 “말씀하신 게 맞습니다”라고 하죠.
- @crazygringo — 정반대인 것 같습니다. 버그가 아니라 완전히 인간의 실수였다고 합니다. AI 패치와는 무관하고, 타당해 보였던 임시 배포 설정이었습니다.
- @lucfranken — 기능을 점진적으로 배포하고 문제를 텔레메트리로 확인하려고 기능 플래그를 쓰는 방식 아닌가요? 나중에 플래그 검사 안쪽 코드를 기본 코드로 옮기는지, 계속 플래그를 유지하는지는 모르겠습니다. 모든 기능을 플래그 뒤에 둔다면 텔레메트리를 끄면 쓸 수 있는 기능이 별로 없겠네요.
- @teekert — Pro 요금제에서 끌 수 있는 건 전부 껐는데도 Claude가 제 AGENTS.md를 문제없이 읽었습니다. 제가 놓친 텔레메트리가 있는 건가요? 방금 Docker 이미지를 업데이트해 2.1.280을 쓰고 있는데, 그사이에 수정된 건가요?
- @mpoteat — 죄송합니다. 배포 중 문제가 생겼을 때 원격 기능 플래그로 기능을 끌 수단이 필요했는데, 텔레메트리를 끄면 그 플래그를 받지 못합니다. 오늘 배포되는 2.1.281에서 이미 수정했습니다. 이번 일은 제 인간적인 실수였습니다. 더 나은 킬 스위치 배포 방법을 찾았어야 했습니다.
- @piltdownman — 빠르게 답하고, 겸손하고, 솔직하게 설명해줘서 정말 좋습니다.
- @mpoteat — AGENTS.md 지원은 Claude Code의 새 확장 시스템인 Mods로 구현했습니다. 곧 공개할 예정입니다. Mod는 함수 훅이라는 새 유형을 지원하는 플러그인입니다. 사용해보신다면 관련 이슈에 의견을 남겨주세요. Mod로 많은 부분을 사용자화하고 제어할 수 있다고 믿습니다.
- @rickette — CLAUDE.md와 AGENTS.md의 차이는 파일 이름뿐입니다. 이 용도에 플러그인 시스템 전체가 필요한가요? 한 줄로 바꿀 수 있었을 것 같은데요.
- @arrowsmith — Claude Code는 읽을 수 있는 CLAUDE.md가 있으면 기본 설정에서 AGENTS.md를 읽지 않습니다. 저장소뿐 아니라
~/CLAUDE.md가 있는 경우에도 해당합니다. 둘 다 읽으려면 ‘Project instructions’ 설정을 기본값이 아닌claude-md-and-agents-md로 바꿔야 합니다. - @pmlnr — 이런 문제를 잡아낸 테스트가 없었나요? 어떻게 놓쳤죠?
원문: 개인 블로그 / 번역·요약: Trawling