Claude Code 소스 코드가 npm으로 유출된 이야기

|Operation Risk|7분 읽기

예상치 못한 발견

지난 3월 31일, Anthropic의 Claude Code 전체 소스코드가 npm 소스맵을 통해 세상에 공개되어 있었던 거죠.

유출된 저장소는 순식간에 1,100개 이상의 스타와 1,900개의 포크를 기록했고, 그 안을 들여다보니... 생각보다 훨씬 더 정교한 시스템이었습니다.

숫자로 보는 Claude Code의 규모

코드베이스를 살펴보니 장난이 아니더라고요:

  • 1,900개의 TypeScript 파일
  • 512,000줄 이상의 코드
  • 40여 개의 내장 도구
  • 50여 개의 슬래시 명령

단순한 CLI 도구 수준을 완전히 넘어선 규모입니다. Bun 런타임에서 돌아가고, 터미널 UI는 React with Ink로 구현했더군요. 모든 것이 모듈식 도구 기반 아키텍처로 설계되어 있었습니다.

아키텍처에서 눈에 띈 부분들

도구 시스템

가장 인상적이었던 건 플러그인 방식의 도구 아키텍처였습니다. 파일 읽기, bash 실행, 웹 페치, LSP 통합 등 각 기능이 개별 권한을 가진 독립된 도구로 구현되어 있어요. 기본 도구 정의만 해도 TypeScript 29,000줄이었거든요.

interface Tool {
  name: string;
  permissions: PermissionGate;
  execute(context: ToolContext): Promise<ToolResult>;
}

쿼리 엔진

46,000줄에 달하는 쿼리 엔진이 모든 LLM API 호출과 스트리밍, 캐싱을 담당합니다. 코드베이스에서 가장 큰 단일 모듈이었죠.

멀티 에이전트 오케스트레이션

복잡한 작업을 위해 하위 에이전트들을 생성할 수 있는 "스웜" 시스템도 구현되어 있었습니다. 각 에이전트가 고유한 도구 권한을 가진 독립된 컨텍스트에서 실행되는 방식이에요.

기술적 선택들이 흥미로웠던 이유

개발팀의 기술 선택을 보면서 몇 가지 인상적인 부분이 있었습니다:

런타임으로 Bun 선택: 빠른 시작 시간과 데드 코드 제거를 위해 Node 대신 Bun을 택했더군요.

터미널에서 React 사용: Ink를 써서 터미널 UI를 컴포넌트 기반으로 구현한 건 꽤 과감한 선택이었습니다. 상태 관리까지 포함해서 웹앱처럼 동작하는 터미널 인터페이스를 만든 거죠.

Zod v4로 검증: 모든 도구 입력, API 응답, 설정 파일에 스키마 검증이 적용되어 있었습니다.

어떻게 이런 일이 생겼을까

원인은 의외로 단순했습니다. npm 패키지에 소스맵 파일이 포함되어 버린 거예요. 소스맵은 원래 디버깅용으로 설계된 건데, 최소화된 코드를 원본 소스로 매핑해주는 역할을 하거든요. 프로덕션 npm 배포에 이게 들어가면 사실상 전체 코드베이스를 읽기 쉬운 형태로 공개하는 거나 마찬가지죠.

아이러니하게도, 더 나은 코드를 작성하도록 돕는 도구가 빌드 설정 실수로 인해 노출된 셈입니다.

개발자들이 놓쳐선 안 될 교훈

이번 사건에서 우리가 배울 수 있는 건 몇 가지가 있습니다:

  1. npm 배포 전 점검하기: npm pack --dry-run으로 포함되는 파일들을 미리 확인하는 습관이 필요합니다.

  2. 소스맵은 소스코드나 마찬가지: 의도하지 않았다면 프로덕션 패키지에 절대 포함하지 말아야 해요.

  3. 아키텍처 설계의 중요성: 상황이야 어떻든, Claude Code의 도구 시스템과 권한 게이트, 멀티 에이전트 패턴은 AI 기반 도구를 만드는 사람들에게 좋은 참고가 될 것 같습니다.

AI 코딩 도구의 미래를 보여주는 단면

유출 자체는 아쉬운 일이지만, 공개된 코드를 통해 AI 코딩 도구 분야의 기준이 얼마나 높아졌는지 확인할 수 있었습니다. 단순한 API 래퍼가 아니라 프로덕션급 개발자 경험을 만들기 위한 엄청난 투자가 들어간 게 보이더라고요.

권한 시스템, 멀티 에이전트 오케스트레이션, IDE 브리지, 지속적 메모리 관리... 이런 수준의 엔지니어링이 이 분야의 표준이 되어가고 있는 것 같습니다.

빌드 설정 하나로 이렇게 큰 일이 생기는 걸 보니, 우리가 당연하게 여기는 것들도 다시 한번 점검해볼 필요가 있겠더라고요.

#Claude Code#소스코드 유출#npm#소스맵#개발보안