Claude Code 소스코드 유출 사건 총정리 — npm 소스맵 하나가 51만줄을 열었다

2026년 3월 31일, Anthropic의 Claude Code 전체 소스코드가 유출됐음. npm 패키지에 소스맵(.map) 파일이 실수로 포함되면서 벌어진 일.

경쟁사에 법적 위협까지 보내면서 지키려던 코드가 본인 실수로 통째로 풀려버린 상황. AI 업계에서 올해 가장 아이러니한 사건이 아닐까 싶음.

무슨 일이 있었나

npm에 배포된 @anthropic-ai/claude-code 버전 2.1.88에 59.8MB짜리 소스맵 파일이 포함됐음. 소스맵이란 minify된 JavaScript를 원본 TypeScript로 되돌려주는 디버깅용 파일인데, 이게 프로덕션 빌드에 들어간 거.

발견자는 Solayer Labs 인턴 Chaofan Shou. 3월 31일 새벽 4시 23분(ET)에 X(구 트위터)에 올리면서 일파만파 퍼짐.

원인은 Bun 버그. Bun의 프로덕션 모드에서도 소스맵이 생성되는 이슈(oven-sh/bun#28001)가 있었는데, Anthropic이 2025년 말에 Bun을 인수한 뒤 Claude Code를 Bun 기반으로 빌드하면서 그대로 당한 것. 인수한 회사의 버그에 발목 잡힌 셈.

유출 규모는 꽤 큼.

  • TypeScript 파일 약 1,900개
  • 총 51만줄 이상의 코드
  • 내장 도구 약 40개, 슬래시 명령 약 50개
  • 숨겨진 피처 플래그 44개
  • 46,000줄짜리 쿼리 엔진 모듈

GitHub 미러 저장소 claw-code는 공개 2시간 만에 5만 스타를 찍으며 역대 최단 기록을 세움. 포크 수는 4만 1천 회 이상.

소스코드 안에서 발견된 것들

개발자 커뮤니티가 가장 흥분한 건 코드 자체보다 그 안에 숨겨진 미공개 기능들이었음.

내부 모델 코드네임. Capybara는 Claude 4.6 변형, Fennec은 Opus 4.6, Numbat은 아직 테스트 중인 미출시 모델. 내부 주석에 따르면 Capybara v8의 허위 주장 비율이 29~30%로, v4의 16.7%에서 오히려 올라감. 이건 꽤 민감한 수치.

KAIROS — 자율 백그라운드 에이전트. 소스에서 150회 이상 등장하는 키워드. 사용자가 자리를 비운 동안 자동으로 메모리를 정리하고, GitHub 웹훅을 구독하고, 5분마다 cron으로 새로고침하는 데몬 모드. /dream이라는 스킬로 “야간 메모리 증류”까지 수행함. Anthropic이 준비하던 킬러 피처가 그대로 드러난 셈.

Anti-Distillation 시스템. 경쟁사가 API 트래픽을 녹화해서 학습 데이터로 쓰는 걸 방지하는 장치. 가짜 Tool 정의를 API 요청에 주입해서 학습 데이터를 오염시키고, 추론 체인은 암호화된 요약만 반환함. 그런데 MITM 프록시로 필드 제거하거나, 환경변수 하나(CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS) 설정하면 둘 다 무력화됨. 우회가 너무 쉬움.

Undercover Mode. Anthropic 직원이 외부 오픈소스에 커밋할 때 AI 흔적을 제거하는 모드. 시스템 프롬프트에 “너는 지금 UNDERCOVER로 작전 중이다… 커밋 메시지에 Anthropic 내부 정보를 절대 포함하지 마라. 정체를 들키지 마라”라고 적혀 있음. 강제 OFF 기능은 없음.

좌절감 감지 — 정규식으로. userPromptKeywords.ts에 사용자 욕설이나 “짜증나”, “이거 쓰레기” 같은 표현을 정규식으로 잡는 패턴이 있음. LLM 만드는 회사가 감성분석을 regex로 한다는 아이러니가 화제.

다마고치 펫 시스템. 오리, 거위, 고양이, 드래곤 등 18종의 펫. 레전더리 등급 1%, 샤이니 변형 1% 확률. 디버깅, 인내심, 카오스, 지혜, 비꼼 5가지 스탯이 있고, ASCII 아트 스프라이트까지 구현되어 있음. 4월 1~7일 티저 윈도우, 5월 정식 출시 예정이었음.

아이러니 3연타

이 사건이 단순 유출 이상으로 화제가 된 건 타이밍 때문.

첫째, 불과 10일 전에 Anthropic은 오픈소스 프로젝트 OpenCode에 법적 위협을 보내서 Claude Code 내부 API 사용을 중단시켰음. 리버스 엔지니어링으로 파악한 내부 구조를 쓰지 말라고. 그리고 10일 후 자기가 전체 소스를 npm에 올려버림.

둘째, 소스코드 안에 유출 방지용 Undercover Mode가 있었음. 정체를 들키지 말라고 시스템 프롬프트까지 작성해놨는데, 그 코드가 담긴 파일 자체가 유출됨.

셋째, 5일 전인 3월 26일에도 CMS 설정 오류로 미출시 모델 “Claude Mythos”와 내부 자산 3천여 건이 노출된 적 있음. 5일 만에 두 번째 사고.

IPO를 준비 중이라는 루머가 돌던 시점에 연속 보안 사고라 “안전 우선” 브랜드에 상당한 타격이 예상됨.

그래서 뭐가 문제인가

모델 가중치나 고객 데이터가 유출된 건 아님. Anthropic 측도 “릴리스 패키징 과정의 휴먼 에러, 보안 침해 아님”이라고 밝힘.

하지만 실질적 피해는 큼. 44개 피처 플래그는 사실상 제품 로드맵 전체를 보여주는 것과 같고, KAIROS 같은 미출시 킬러 피처는 경쟁사에게 그대로 참고 자료가 됨. Anti-Distillation 우회법까지 공개돼서 보호 장치도 무력화.

한 가지 더 주의할 점. 3월 31일 00:21~03:29 UTC 사이에 npm에서 Claude Code를 설치하거나 업데이트한 사용자는 악성 axios 패키지(RAT 포함)에 노출됐을 가능성이 있음. 혼란을 틈타 공급망 공격을 시도한 사례.

소스코드는 이미 GitHub에 수만 번 포크됐고, 인터넷은 잊지 않음. Anthropic 입장에서는 코드 자체보다 전략적 노출이 더 뼈아플 듯.

개인적으로는 이 사건이 AI 코딩 도구의 내부 구조를 투명하게 볼 수 있는 유일한 기회이기도 해서, 개발자 입장에서 흥미로운 분석 거리가 많다고 생각함. 3,167줄짜리 단일 함수(중첩 12단계, 분기 486개)가 존재한다는 것도 인상적이었음. AI가 상당 부분 작성한 코드답다는 반응도 있었고.

역사에 남을 npm 사고. Anthropic의 다음 행보가 궁금해지는 시점.

댓글 남기기