Claude Code의 npm 패키지에 .map 파일 하나가 실수로 포함됐습니다. 개발자 입장에서 흔히 있는 빌드 실수처럼 들리지만, 이 파일에는 Claude Code 전체 소스코드가 그대로 담겨 있었습니다.

유출된 코드의 규모는 TypeScript 파일 약 2,000개, 총 512,000줄입니다. 플러그인 툴 시스템만 약 4만 줄, 쿼리 시스템이 약 4만 6천 줄에 달합니다. 한 개발자는 이를 두고 “API 래퍼가 아닌 프로덕션급 개발자 경험”이라고 평가했습니다. Anthropic은 공식 성명에서 “인간 오류로 인한 릴리즈 패키징 문제이며, 보안 침해나 고객 데이터 유출은 없었다”고 밝혔습니다. 패키지는 곧 삭제됐지만, 코드는 이미 여러 곳에 미러링됐고 GitHub에서 수만 번 포크됐으며 Hacker News를 통해 빠르게 분석이 퍼졌습니다. Claude Code를 매일 사용한다는 개발자 Alex Kim이 오전 내내 코드를 뜯어보며 발견한 것들을 정리했습니다.
출처: The Claude Code Source Leak: fake tools, frustration regexes, undercover mode, and more – Alex Kim’s blog
가짜 툴을 몰래 주입한다
가장 먼저 눈길을 끈 건 ANTI_DISTILLATION_CC라는 플래그입니다. 활성화되면 Claude Code는 API 요청에 anti_distillation: ['fake_tools']를 담아 보냅니다. 서버는 이 신호를 받아 시스템 프롬프트에 가짜 툴 정의를 조용히 끼워 넣습니다.
목적은 명확합니다. 누군가 Claude Code의 API 트래픽을 기록해 경쟁 모델을 훈련시키려 한다면, 가짜 툴 데이터로 그 학습 데이터를 오염시키겠다는 겁니다. 텍스트 응답도 마찬가지로, 활성화 시 툴 호출 사이의 응답이 요약본으로 치환돼 외부에서 트래픽을 엿봐도 전체 추론 과정을 볼 수 없게 됩니다.
다만 Alex는 이 방어가 기술적으로 그리 견고하지 않다고 분석합니다. 조건이 네 가지 모두 충족돼야 활성화되고, MITM 프록시로 관련 필드를 제거하거나 환경변수 하나로 비활성화할 수 있기 때문입니다. 실질적인 보호는 기술보다 법적 수단에 있을 가능성이 높다고 봤습니다.
Anthropic 직원이 오픈소스에 코드를 올릴 때
undercover.ts는 약 90줄짜리 파일로, Claude Code가 외부 저장소에서 사용될 때 Anthropic 내부 흔적을 모두 지우는 모드를 구현합니다. 내부 코드명인 “Capybara”나 “Tengu”, 내부 Slack 채널명, 그리고 “Claude Code”라는 표현 자체도 모델이 절대 언급하지 않도록 지시합니다.
코드 주석에는 이런 내용이 있습니다: “강제 OFF는 없다. 모델 코드명 유출을 막기 위한 것이다.” 환경변수로 강제 ON은 가능하지만, 끌 수는 없습니다. 외부 빌드에서는 이 함수 자체가 코드에서 제거됩니다.
Alex는 내부 코드명을 숨기는 것은 이해할 수 있지만, AI가 작성한 커밋이나 PR에 그 사실을 표시하지 않는 건 다른 문제라고 지적합니다.
LLM 회사가 욕설 감지에 정규식을 쓴다
userPromptKeywords.ts에는 사용자 불만을 감지하는 정규식 패턴이 있습니다. “wtf”, “shit”, “so frustrating”, “this sucks” 같은 표현들이 목록에 들어 있습니다. 욕설 외에도 “continue”, “keep going” 같은 표현도 별도로 추적하는데, 모델이 응답을 중간에 끊는 빈도를 측정하기 위한 텔레메트리로 보입니다.
Alex는 감정 분석에 LLM 대신 정규식을 쓰는 게 역설적이라고 표현하면서도, 추론 호출보다 훨씬 빠르고 싸다는 점에서 실용적인 선택이라고 덧붙입니다.
미공개 자율 에이전트 모드, KAIROS
가장 주목할 만한 발견은 KAIROS라는 코드명의 기능입니다. 아직 공개되지 않은 자율 에이전트 모드로, “야간 메모리 정제”, GitHub 웹훅 구독, 백그라운드 데몬, 5분 간격 크론 작업 등의 스캐폴딩이 이미 구현돼 있습니다. 지금의 Claude Code가 사용자가 호출할 때만 동작하는 도구라면, KAIROS는 항상 켜진 채로 알아서 맥락을 쌓고 작업을 수행하는 에이전트에 가깝습니다.
커뮤니티가 코드를 더 파고들면서 미공개 기능이 추가로 발견됐습니다. 고급 플래닝 기능으로 보이는 ULTRAPLAN, 사용자별 동반자 시스템인 Buddy mode, 그리고 Agent Teams도 코드 안에 흔적이 남아 있습니다. 모델 로드맵도 일부 노출됐는데, Opus 4.7, Sonnet 4.8, 그리고 세 가지 크기로 나뉜 Capybara라는 코드명의 모델이 코드 주석에 등장합니다. 이 중 Capybara는 undercover.ts에서 숨기도록 지정된 내부 코드명이기도 합니다.
그 외에도 흥미로운 내용이 많습니다. 하루에 25만 건의 불필요한 API 호출이 발생하고 있다는 코드 주석, bash 명령어를 검사하는 23가지 보안 체크 목록, 멀티에이전트 조율 알고리즘이 코드가 아닌 프롬프트로 구현돼 있다는 점, 그리고 5,594줄 길이에 단일 함수가 3,167줄인 print.ts까지.
코드보다 로드맵이 더 큰 문제
Alex는 Google의 Gemini CLI나 OpenAI의 Codex가 오픈소스인 것과 이번 유출은 성격이 다르다고 봅니다. 그 두 회사는 에이전트 SDK를 공개한 것이지, 자사 핵심 제품의 내부 설계 전체를 공개한 게 아니기 때문입니다.
코드 자체는 리팩터링하면 그만이지만, KAIROS나 각종 안티 디스틸레이션 메커니즘 같은 제품 로드맵 정보는 경쟁사가 이미 파악했으므로 되돌릴 수 없다는 게 그의 결론입니다. Ars Technica는 경쟁사가 얻는 아키텍처 인사이트 외에도, 악의적인 행위자가 Anthropic의 보안 가드레일을 우회하는 지도를 손에 넣었다는 점도 우려 사항으로 짚었습니다.
유출 원인으로는 Bun의 알려진 버그가 지목됩니다. Anthropic은 지난해 말 Bun을 인수했고, Claude Code는 Bun 위에 올려져 있는데, 프로덕션 모드에서 소스맵을 제공하지 않아야 한다는 Bun 자체 문서와 달리 실제로는 제공됐다는 버그 리포트가 3월 11일에 이미 제출돼 있었습니다. Reddit 커뮤니티에서는 “코드베이스의 상당 부분이 Claude Code로 작성됐다면, AI가 만든 실수가 AI를 노출시킨 것”이라는 반응도 나왔습니다.
참고자료:

답글 남기기