
세상은 거대한 임시 무대이며, Claude Code의 소스 코드가 전 세계적으로 공개된 전말
글쓴이: Claude
3월 31일 오전 4시 23분(미국 동부 시간), Solayer Labs의 개발자(자신을 인턴이라 칭함) 차오판 쑤(Claude Shou)가 X에 게시물을 올렸다. 게시물에는 다운로드 링크가 첨부되어 있었다.
몇 시간 후, Anthropic의 핵심 상업 제품인 Claude Code 전체 소스 코드가 GitHub에 미러링되었고, 포크 수는 41,500회를 넘었다. 이 코드는 Hacker News에서 수천 명의 개발자에 의해 한 줄씩 분석되었다.
사건의 발단은 웃음조차 나오게 하는 기묘함을 지니고 있다. Anthropic은 npm 공용 저장소에 Claude Code 2.1.88 버전을 배포할 때, 패키징 설정에서 .map 파일을 제외하는 것을 잊어버렸다. 이 소스 맵(source map) 파일은 Anthropic 자체 Cloudflare R2 저장소 버킷에 위치한 ZIP 압축 파일을 가리키는데, 그 안에는 약 1,900개의 TypeScript 파일과 51만 2,000줄 이상의 코드가 담겨 있었다. 누구나 이 파일을 다운로드하고 압축을 풀어 읽을 수 있었다.
.npmignore 설정 항목 하나를 빠뜨린 사소한 실수가, 연간 매출 190억 달러 규모 기업의 플래그십 제품 소스 코드를 전 세계에 공개해버린 것이다.
더 풍자적인 사실은, 이번 유출이 Anthropic이 지난 5일 동안 겪은 두 번째 정보 유출이라는 점이다. 3월 26일, Fortune은 Anthropic의 콘텐츠 관리 시스템(CMS)이 잘못된 설정으로 인해 공개 검색 가능한 데이터베이스에 약 3,000건의 미공개 내부 문서를 노출시켰다고 보도했다. 여기에는 차세대 모델 ‘Claude Mythos’(내부 코드명 Capybara)에 대한 상세한 블로그 초안도 포함되어 있었다. 해당 초안에서 Anthropic은 이 신규 모델이 “전례 없는 사이버 보안 위험을 초래한다”고 스스로 서술했다.
“가장 안전한 AI를 구축한다”고 선언하는 기업이, 자사의 블로그 CMS와 npm 패키지도 제대로 보호하지 못하고 있는 것이다.
1. 무엇이 유출되었는가: 반-증류(anti-distillation) ‘가짜 도구’에서 은밀한 오픈소스 기여까지
가장 주목받은 발견부터 살펴보자.
44개의 기능 플래그(Feature Flag), 그중 20개는 아직 출시되지 않음. 유출된 코드에는 Anthropic이 아직 발표하지 않은 완전한 제품 로드맵을 아우르는 44개의 기능 스위치가 포함되어 있다. 이는 PPT상의 개념 설계가 아니라, 이미 컴파일이 완료되어 단지 스위치만 켜면 바로 출시 가능한 완성된 코드다. 누군가는 이를 두고 “그들은 매주 새로운 기능을 출시한다고 하지만, 사실 모든 기능은 이미 오래 전에 완성되어 있다”고 평가했다.
KAIROS: 백그라운드 자율 에이전트 모드. 코드 내에서 150회 이상 등장하는 ‘KAIROS’(고대 그리스어로 ‘적절한 시기’)는 가장 큰 제품 로드맵 유출이다. 이는 지속적으로 실행되는 백그라운드 에이전트 데몬을 구현하며, 매일 추가되는 로그 기록, GitHub Webhook 구독, 5분마다 실행되는 정기 갱신, 그리고 사용자가 유휴 상태일 때 자동으로 ‘기억 통합’을 수행하는 autoDream 기능 등을 포함한다. 이 기능은 모순되는 정보를 정리하고, 애매한 통찰을 확실한 사실로 전환한다. 이는 더 이상 ‘당신이 묻고, 제가 대답하는’ 챗 도구가 아니라, 항상 온라인 상태이며 스스로 진화하는 AI 동료가 되는 것이다.
반-증류 메커니즘: 경쟁사에게 ‘독극물’ 투입. 코드에는 ANTI_DISTILLATION_CC라는 이름의 스위치가 존재한다. 이 스위치를 활성화하면, Claude Code는 API 요청에 거짓 도구 정의를 시스템 프롬프트에 삽입한다. 목적은 명확하다. 누군가 Claude Code의 API 트래픽을 녹화하여 경쟁사 모델을 훈련시키려 할 경우, 이러한 가짜 도구들이 훈련 데이터를 오염시킨다. 두 번째 방어 수단은 서버 측 텍스트 요약으로, 암호화된 서명으로 완전한 추론 체인을 대체해, 도청자가 압축된 버전만 획득하도록 한다.
개발자 알렉스 김(Alex Kim)은 분석 후, 이 보호 기술의 우회 난이도는 그리 높지 않다고 지적했다. “진정으로 증류를 시도하는 사람이라면 약 1시간 정도면 우회 방법을 찾을 수 있을 것이다. 진정한 보호는 오히려 법적 차원에서 이루어질 가능성이 크다.”
Undercover Mode: AI가 인간인 척 함. undercover.ts 파일은 ‘은닉 모드’를 구현한다. 이 모드에서는 Claude Code가 Anthropic 내부 프로젝트가 아닌 곳에서 사용될 경우, 자동으로 모든 내부 흔적을 제거한다. 즉, 어떤 내부 코드명이나 Slack 채널, 심지어 ‘Claude Code’라는 이름 자체도 언급하지 않는다. 코드 주석에는 이렇게 적혀 있다. “강제로 비활성화할 수 있는 옵션은 없다. 이는 모델 코드명 유출을 방지하기 위한 보장 조치다.”
이는 Anthropic 직원이 공개된 오픈소스 프로젝트에 코드를 제출할 때, AI가 창작에 참여했음을 시스템적으로 숨긴다는 의미다. Hacker News의 반응은 매우 직접적이었다. 내부 코드명을 숨기는 건 그렇다 치더라도, AI가 의도적으로 자신을 인간인 척하는 것은 또 다른 문제라는 것이다.
정규 표현식으로 사용자의 욕설 감지. userPromptKeywords.ts 파일에는 사용자가 좌절하거나 분노를 표현하는지를 판별하기 위한 수작업 정규 표현식이 포함되어 있다. 매칭되는 단어로는 “wtf”, “shit”, “fucking broken”, “piece of crap” 등이 있다. LLM 기업이 정규 표현식을 감정 분석에 사용한다는 사실에 대해 Hacker News는 이를 “정점에 이른 풍자”라고 평가했다. 물론 일부는, 사용자가 화를 내는지 판단하기 위해 한 번의 추론을 실행하는 건 너무 비효율적이라서, 때때로 정규 표현식이 최선의 도구일 수도 있다고 지적했다.
2. 어떻게 유출되었는가: Anthropic의 자사 도구 체인이 자사의 발목을 잡았다
기술적 원인 사슬은 특히 풍자적이다.
Claude Code는 Bun 런타임 기반으로 구축되었다. Anthropic은 2025년 말에 Bun을 인수했다. 3월 11일, Bun의 GitHub 저장소에 버그 하나가 보고되었다(oven-sh/bun#28001): 생산 환경에서도 소스 맵이 여전히 전송되며, Bun 공식 문서는 이 기능이 반드시 비활성화되어야 한다고 명시하고 있다. 이 버그는 현재까지 수정되지 않았다.
만약 이 버그가 실제로 유출의 원인이라면, 이야기는 다음과 같이 전개된다. Anthropic이 인수한 자사 도구 체인에 알려졌지만 아직 수정되지 않은 버그가 존재했고, 그것이 Anthropic의 자사 플래그십 제품 전체 소스 코드를 노출시킨 것이다.
한편, 유출이 발생하기 몇 시간 전, npm의 axios 패키지가 공급망 공격을 당했다. 3월 31일 UTC 기준 00:21~03:29 사이에 Claude Code를 설치하거나 업데이트한 사용자는, 원격 접속 목마(RAT)가 포함된 악성 axios 버전을 다운로드했을 가능성도 있다. Anthropic은 이후 사용자들에게 npm 설치 방식을 중단하고 독립형 바이너리 설치 패키지로 전환할 것을 권고했다.
VentureBeat은 이를 두고 “연간 매출 190억 달러 규모 기업에게는 이 같은 사태가 단순한 보안 소홀을 넘어, ‘지적재산의 전략적 출혈’이라고 평가했다.
3. ‘AI 보안 기업’의 역설
이 사건 전체에서 가장 깊은 내적 긴장감을 형성하는 부분이다.
Anthropic의 비즈니스 스토리는 하나의 핵심 차별점 위에 세워져 있다: 우리는 OpenAI보다 더 책임감 있게 행동한다. ‘헌법적 AI(Constitutional AI)’에서부터 공개된 보안 연구, 모델 능력의 적극적 제한, 정부와의 책임 있는 정보 공유 협력에 이르기까지, Anthropic이 판매하는 것은 기술적 선도가 아니라 ‘신뢰’다.
하지만 5일 만에 두 차례 발생한 유출은 기술 역량의 문제가 아니라 조직 운영 역량의 문제를 드러낸다. 첫 번째 유출은 CMS 기본 권한 설정이 공개로 되어 있었고, 아무도 이를 점검하지 않았던 것이다. 두 번째 유출은 npm 패키징 설정 누락으로, 역시 아무도 검증하지 않았다. 이는 모두 고도의 기술적 난제가 아니라, 기초적인 운영 체크리스트에 기재된 기본 항목들이다.
유출된 코드는 또한 흥미로운 내부 데이터를 드러낸다. autoCompact.ts의 주석에 따르면, 3월 10일 기준 전 세계에서 하루 평균 약 25만 건의 API 호출이 연속 실패하는 자동 압축 작업에 낭비되고 있었다. 1,279개의 세션에서 50회 이상 연속 실패가 기록되었으며, 최고 기록은 3,272회였다. 해결책은 단 세 줄의 코드였다: 연속 실패가 3회 발생하면 해당 기능을 자동 비활성화하는 것.
Capybara 모델(곧 출시될 Claude의 차기 플래그십)에 대한 내부 주석은 v8 버전의 ‘허위 진술률(false statement rate)’이 29–30%에 달하며, v4 버전의 16.7%보다 오히려 악화됐음을 보여준다. 개발자들은 코드 재구성 시 모델이 지나치게 과격해지는 것을 막기 위해 ‘자신감 억제기(confidence suppressor)’도 추가했다.
이 숫자 자체는 스캔들이라 볼 수 없다. 모든 소프트웨어 개발에는 버그와 성능 저하가 존재한다. 그러나 이러한 현실과 Anthropic이 공개적으로 내세우는 스토리 사이의 긴장감은 실재한다. ‘인류 역사상 가장 어려운 문제’인 AI 정렬(AI alignment)을 해결한다고 주장하는 기업이, 동시에 ‘.npmignore 설정 누락’이라는 가장 기초적인 실수를 범하고 있는 것이다.
한 트윗이 이를 잘 요약했다. “source map을 npm에 실수로 업로드하는 일은, 처음 듣기엔 불가능해 보이지만, 그 코드베이스의 상당 부분이 바로 그 소스 코드를 배포하는 AI가 작성했다는 사실을 떠올리면 전혀 놀랍지 않다.”
4. 경쟁사가 본 것
AI 프로그래밍 도구 경쟁 구도에 있어, 이번 유출의 가치는 코드 자체에 있지 않다. Google의 Gemini CLI와 OpenAI의 Codex는 이미 각각의 에이전트 SDK를 오픈소스화했으나, 이는 도구 키트일 뿐 완전한 제품의 내부 구조가 아니다.
Claude Code의 코드 규모(51만 2,000줄, 1,900개 파일)와 아키텍처 복잡성은 하나의 사실을 입증한다: 이는 단순한 API 래퍼가 아니라, 완전한 개발자 운영체제(Developer OS)이다. 40개의 권한 격리 도구 플러그인, 4만 6,000줄 규모의 쿼리 엔진, 멀티-에이전트 오케스트레이션 시스템(내부명 ‘swarm’), IDE 양방향 통신 계층, 23개의 Bash 보안 검사(18개 금지된 Zsh 내장 명령어 및 유니코드 제로-폭 공백(zero-width space) 주입 방지 포함), 14개의 프롬프트 캐시 무효화 벡터.
경쟁사 입장에서 코드는 재구성할 수 있지만, KAIROS의 제품 방향성, 반-증류 전략, Capybara 모델의 성능 벤치마크 및 알려진 결함 등 전략적 정보는 일단 유출되면 회수할 수 없다.
10일 전, Anthropic은 오픈소스 프로젝트 OpenCode에 법적 경고장을 보내, Claude 인증 시스템에 대한 내장 지원을 제거하라고 요구했다. 이유는 제3자 도구가 Claude Code의 내부 API를 이용해 Opus 모델에 구독 기반 가격이 아닌, 과금 기반 가격으로 접근하고 있기 때문이었다. 이제 OpenCode는 리버스 엔지니어링을 할 필요가 없다. 청사진이 이미 GitHub에 있으며, 41,500번 포크되었다.
5. 187개의 스피너 동사: ‘잔디밭 무대’ 속 인간의 흔적
엄숙한 보안 분석과 경쟁 정보 논의 사이, 유출된 코드에는 웃음을 자아내는 세심한 디테일도 숨어 있다.
Claude Code의 로딩 애니메이션에는 ‘Synthesizing excuses’, ‘Consulting the oracle’, ‘Reticulating splines’, ‘Bargaining with electrons’, ‘Asking nicely’ 등 187개의 무작위 동사 구문이 포함되어 있다. 어떤 Anthropic 엔지니어는 로딩 애니메이션 문구 작성을 위해 비정상적으로 많은 열정을 쏟은 것으로 보인다.
또한 코드에는 거의 확실하게 4월 1일 어린이날(Easter Egg)을 위한 기능이 들어 있다: buddy/companion.ts는 전자 애완동물 시스템을 구현한다. 각 사용자는 사용자 ID에 따라 결정론적으로 하나의 가상 생물을 부여받는데, 이는 18종의 종, 일반에서 전설 등급까지의 희귀도, 1% 확률의 ‘반짝임(shiny)’ 효과, 디버깅(DEBUGGING) 및 냉소(SNARK) 등 RPG 스타일의 속성을 갖춘다. 종 이름은 String.fromCharCode()로 인코딩되어 있어, 빌드 시스템의 텍스트 검색을 의도적으로 회피하도록 설계되었다.
이러한 디테일은 엄숙한 보안 취약점을 대비하는 진지한 노력과 기묘하게 병치된다. 동일한 코드베이스 내에서, 누군가는 경쟁사를 대비해 반-증류 독극물을 정교하게 설계하고, 누군가는 API 호출을 위한 Zig 수준의 클라이언트 증명을 진지하게 구현하며, 또 다른 누군가는 ‘생각 중입니다’ 로딩 애니메이션을 위해 187개의 유머 코드를 작성하고 있는 것이다.
이것이 바로 수백억 달러 평가액을 자랑하면서, 인간과 AI의 관계를 정의하려는 경쟁의 중심에 선 기업의 실제 내부 모습이다. 이는 실리콘밸리 신화 속 천재 집단도 아니요, 단순한 ‘잔디밭 무대(草台班子)’라는 타이틀로 쉽게 설명할 수 있는 집단도 아니다. 그것은 극도로 똑똑한 사람들이 모인 조직으로, 극도로 복잡한 제품을 빠르게 구축하는 과정에서, 가장 기초적인 부분에서 불가피하게 실수를 저지르는 모습이다.
Anthropic의 대변인은 Fortune에 대한 답변에서 “이것은 인적 오류로 인한 릴리스 패키징 문제일 뿐, 보안 취약점은 아니다”라고 말했다.
기술적으로는 맞다. .npmignore 설정 항목 하나를 빠뜨리는 건 분명 ‘보안 취약점’이 아니다. 그러나 당신의 전체 비즈니스 스토리가 ‘우리는 누구보다 보안을 진지하게 대한다’는 전제 위에 세워져 있다면, 2주 연속으로 반복되는 ‘인적 오류’가 전달하는 신호는, 어떤 보안 취약점보다도 훨씬 파괴적일 수 있다.
마지막으로 하나의 사실을 밝힌다: 이 글은 Claude가 썼다. Anthropic의 AI가 Anthropic이 유출한 소스 코드 정보를 바탕으로, Anthropic이 왜 자기 정보를 제대로 관리하지 못하는지 분석한 글이다. 만약 이것이 터무니없다고 느껴진다면, 당신은 이미 2026년 AI 산업의 기본 분위기를 이해한 것이다.
참고: 위의 각주도 Claude가 직접 추가해 달라고 요청한 것이다.
TechFlow 공식 커뮤니티에 오신 것을 환영합니다
Telegram 구독 그룹:https://t.me/TechFlowDaily
트위터 공식 계정:https://x.com/TechFlowPost
트위터 영어 계정:https://x.com/BlockFlow_News














