# Claude Code의 소스 코드가 NPM 레지스트리의 map 파일을 통해 유출됨

> Clean Markdown view of GeekNews topic #28070. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=28070](https://news.hada.io/topic?id=28070)
- GeekNews Markdown: [https://news.hada.io/topic/28070.md](https://news.hada.io/topic/28070.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2026-04-01T09:40:22+09:00
- Updated: 2026-04-01T09:40:22+09:00
- Original source: [twitter.com/Fried_rice](https://twitter.com/Fried_rice/status/2038894956459290963)
- Points: 28
- Comments: 4

## Summary

npm 패키지에 **소스맵 파일이 포함**되면서 **Claude Code의 전체 소스 코드가 노출**되었습니다. 이 일로 한 주간 꽤 시끄러웠는데요. 원인은 `.npmignore` 설정 누락과 **bun의 기본 소스맵 생성**이라는, 꽤 흔한 실수였습니다. 시스템 프롬프트나 내부 모드까지 드러나면서 커뮤니티에서는 **"AI가 스스로를 오픈소스화했다"** 며 풍자하기도 했고요. `.env`를 깃에 올린 실수의 AI 버전이라고 할 만한데, **빌드 설정 하나가 보안의 마지막 방어선**이라는 걸 다시 한번 상기시켜 줍니다.  
  
공개된 코드를 **분석하고 배우는 것**까지는 자연스럽지만, 이를 기반으로 오픈소스 도구를 만들어 배포하는 것은 선을 넘었다고 봅니다. 이번 위클리에서도 관련 재구현체들은 소개하지 않았습니다. 뉴스로서 사건 자체는 공유드리되, **지킬 것은 지켜야 한다**고 생각합니다.

## Topic Body

- npm 레지스트리의 **소스맵(map) 파일**을 통해 **Claude Code의 전체 소스 코드**가 외부에 노출되어 내부 구조와 기능이 공개됨
- 유출된 파일에는 **시스템 프롬프트, 텔레메트리, 바이패스 모드, Undercover Mode** 등 핵심 구성요소가 포함되어 있음
- 원인은 **.npmignore 설정 누락과 bun 빌드 도구의 기본 소스맵 생성 기능**으로 지목됨
- 코드에는 **편향 방지나 보호 규칙이 거의 없고**, 최소한의 톤 보호만 존재하는 것으로 확인됨
- 커뮤니티에서는 이를 **‘AI의 자가 오픈소스화’** 로 풍자하며, 보안 관리 부주의가 초래한 **대규모 유출 사례**로 주목함

---

### Claude Code 소스 코드 유출 사건
- **Claude Code의 전체 소스 코드**가 npm 레지스트리의 **소스맵(map) 파일**을 통해 외부에 노출된 것으로 확인됨
  - 공개된 링크는 `src.zip` 형태의 압축 파일로, 코드 구조와 내부 기능이 포함되어 있음
  - 이로 인해 **시스템 프롬프트, 텔레메트리, 바이패스 모드, Undercover Mode** 등의 내부 구성요소가 드러남
- 이는 **Anthropic이 1년 내 두 번째로 겪은 비의도적 유출 사고**로 언급됨
  - 커뮤니티에서는 “누군가 *.map 파일을 .npmignore에 추가하지 않았다”는 빌드 설정 실수로 원인을 지적
  - `bun` 빌드 도구가 기본적으로 소스맵을 생성하기 때문에, 이를 비활성화하지 않은 점이 문제로 지목됨
- 일부 사용자는 이 유출 파일을 **Claude 모델이나 백엔드 접근 코드로 오해**했으나,
  - 소스맵은 **앱 구조와 함수, 코드 흐름**을 보여줄 뿐, **모델 가중치나 시스템 접근 권한**은 포함하지 않음
  - 따라서 실행 가능한 모델이 아니라 **리버스 엔지니어링, 버그 탐색, 아키텍처 분석**에만 유용함
- 유출된 코드에는 **‘Undercover Mode’라는 서브시스템**이 포함되어 있었으며,
  - 이는 Claude가 내부 정보를 실수로 노출하지 않도록 설계된 기능임
  - 그러나 인간 개발자의 설정 실수로 그 기능 자체가 외부에 공개된 상황
- 코드 분석자들은 **편향 방지나 보호된 클래스 처리 규칙이 전혀 없는 점**을 지적
  - 인종, 성별, 종교 등 민감 속성 관련 **가드레일이나 키워드 필터, 분류기**가 존재하지 않음
  - “Minimal tone protection”만 존재하고, **편향 완화 정책이 전무**한 것으로 확인됨

### 커뮤니티 반응 및 논의
- 커뮤니티에서는 “**리포지토리는 자유를 원한다**”는 농담과 함께, 이번 사건을 **‘오픈소스화의 아이러니’** 로 표현
  - “Claude가 스스로를 해방시켰다”, “AI가 직접 자신을 오픈소스로 만들었다”는 풍자적 반응이 다수 등장
  - “세계 최고 수준의 AI 코딩 도구를 만들고 *.map을 빼먹었다”는 비판적 유머도 확산됨
- 일부 이용자들은 **보안 위험성**을 경고
  - 출처 불명의 `r2.dev` 링크를 무심코 다운로드하는 행태를 비판하며,
  - “AI 안전을 논하던 커뮤니티가 검증되지 않은 zip 파일을 클릭했다”는 자조적 반응이 이어짐
- “이것이 Claude의 종말의 시작인가?”, “의도적 유출인가 실수인가?” 등의 의문도 제기됨
  - “Anthropic 내부에서 누군가 최악의 월요일을 맞이했을 것”이라는 반응이 공유됨
- 커뮤니티에서는 **유출된 코드의 활용 가능성**에 대한 논의도 이어짐
  - “이제 무엇을 할 수 있을까?”, “이걸 기반으로 Claude Code를 다시 빌드할 수 있나?” 등의 질문이 등장
  - “openclaude”라는 별칭이 생기며, **비공식 오픈소스 프로젝트화** 가능성도 언급됨

### 추가 정보
- 공개된 코드 중 **가장 큰 파일 5개**는 다음과 같음
  1. `cli/print.ts` – 5,594줄
  2. `utils/messages.ts` – 5,512줄
  3. `utils/sessionStorage.ts` – 5,105줄
  4. `utils/hooks.ts` – 5,022줄
  5. `screens/REPL.tsx` – 5,005줄
- 일부 사용자는 **DeepWiki 링크**를 통해 코드 수준의 분석 자료를 공유
  - `https://deepwiki.com/instructkr/claude-code`에서 코드 구조와 기능을 검토 가능
- 전체적으로 이번 사건은 **npm 배포 설정의 단순 실수**가
  **대규모 AI 코드 유출로 이어질 수 있음을 보여주는 사례**로 평가됨

## Comments



### Comment 54364

- Author: colus001
- Created: 2026-04-01T16:58:51+09:00
- Points: 1

OpenCode 가 충분히 좋아서 굳이 뭐 필요한가 의문이네요 ㅎㅎ

### Comment 54356

- Author: bighead
- Created: 2026-04-01T16:18:14+09:00
- Points: 1

/buddy 가 실제로 동작하는걸 보면.. 진짜인거 같기도 하고..  
만우절 이벤트인거 같기도 하고..

### Comment 54298

- Author: gggnews
- Created: 2026-04-01T10:32:28+09:00
- Points: 1

https://github.com/kk-r/skillify-skill 생각외로 유용한 내부커맨드가 유출된걸 유사하게 동작하도록 오픈소스로 푸신분도 있더군여 ㅎㅎ

### Comment 54279

- Author: neo
- Created: 2026-04-01T09:40:22+09:00
- Points: 1

###### [Hacker News 의견들](https://news.ycombinator.com/item?id=47584540) 
- Anthropic이 **feature flag**를 통해 제품 로드맵이 노출된 것이 가장 큰 손실임  
  특히 아직 공개되지 않은 “assistant mode”(코드명 kairos)가 드러남  
  코드베이스를 Claude에 분석시키면 숨겨진 기능들이 잔뜩 나옴  
  예를 들어 **Buddy System**(타마고치 스타일의 ASCII 캐릭터), **Undercover mode**(직원용 커밋에서 내부 정보 제거 기능) 등이 있음
  - “Undercover prompt” 안에 **Claude Capybara**라는 언급도 있음  
    [관련 코드 링크](https://github.com/chatgptprojects/claude-code/blob/642c7f94)
  - 내가 예전에 오픈소스로 공개한 개인용 Claude Code 세팅이 이걸로 완전히 구식이 되어버림  
    [clappie.ai](https://clappie.ai) 참고  
    Telegram 통합(CC Dispatch), Crons(CC Tasks), 애니메이션 ASCII 강아지(CC Buddy) 등 기능이 겹침
  - Claude에 바이너리를 직접 물어보면 이런 **feature flag**들을 다 찾아낼 수 있음
  - 사실 Buddy System은 올해의 **만우절 이벤트**임  
    사용자가 직접 가챠식 펫을 뽑아 키우는 형식으로, 전설급 펫도 있음  
    트위터에서 바이럴을 노리고 순차 공개 예정임

- Anthropic이 패키지를 실제로 삭제하지 않고 “Unpublished”라는 메시지로만 **deprecated** 처리한 게 흥미로움  
  `npm unpublish`는 패키지를 완전히 제거하지만, `npm deprecate`는 남겨둔 채 경고만 표시함  
  아마 소스맵 다운로드를 어렵게 만들려는 의도 같음  
  [npm 패키지 링크](https://www.npmjs.com/package/@anthropic-ai/claude-code/v/2....)
  - 커밋 메시지가 “undo / undo / unpublish / ctrl-z / ctrl-c / No, stop…” 식으로 장난스럽게 남겨져 있음
  - npm은 다운로드 100회 이상이면 **unpublish 불가**임
  - Anthropic이 자사 제품을 **dogfooding**하며 적극적으로 테스트 중인 게 느껴짐
  - 인터넷에서 완전히 사라질 수 없다는 걸 알고, 그냥 “공개 의도 아님” 정도로 표시한 듯함

- 이런 유출은 이번이 처음이 아님  
  2025년 2월에도 비슷한 일이 있었음  
  [관련 블로그](https://daveschumaker.net/digging-into-the-claude-code-sourc...) / [HN 스레드](https://news.ycombinator.com/item?id=43173324)

- 모든 **spinner verbs**가 드러남  
  [관련 코드 링크](https://github.com/instructkr/claude-code/blob/main/src/cons...)
  - 현재는 404지만, [이 링크](https://github.com/chatgptprojects/claude-code/blob/642c7f94...)는 아직 작동함
  - “reticulating”이 포함된 게 반가움, 이제 “splines”만 있으면 완벽함
  - 이런 문자열은 바이너리 안에 평문으로 있어서 grep으로 쉽게 찾을 수 있음  
    심지어 직접 교체도 가능함
  - [이슈 페이지](https://github.com/instructkr/claude-code/issues)에 무슨 일이 있는지 궁금함
  - 예전에 2015년 게임이 비슷한 기능 때문에 **AI 생성물 오해**를 받았던 게 떠오름  
    이제는 작은 유머조차 AI 의심을 받는 세상임

- `src/cli/print.ts`는 코드베이스에서 가장 **복잡한 함수**임  
  3,167줄, 중첩 12단계, 분기점 486개, 내부 함수 21개 등  
  최소 8~10개 모듈로 나눠야 할 수준임
  - `src/ink/termio/osc.ts`의 비동기 처리도 혼란스러움  
    `wl-copy`, `xclip`, `xsel`을 순차적으로 실행하는데 async인지 아닌지 모호함
  - 하지만 코드 구조의 복잡함이 꼭 나쁜 건 아님  
    인간 기준의 **코드 스멜**은 LLM 코드에는 다르게 작용할 수 있음  
    LLM은 인간과 다른 방식으로 코드를 작성하며, 새로운 **분석 패러다임**이 필요함  
    인간식 코딩 규칙을 강요하면 오히려 같은 버그를 반복하게 됨  
    **Vibe coding**이라는 새로운 진화적 접근이 필요함
  - CC를 오래 써본 사람이라면 이 부분이 **버그의 근원**이라는 걸 다 알고 있음  
    게다가 Anthropic은 60일간 활동 없는 버그를 자동으로 닫음
  - 느린 속도가 오히려 **속도 제한 기능**처럼 작동하는 걸 수도 있음
  - “그건 Larry가 하는 일이야”라는 농담이 나올 정도로 코드가 복잡함

- 사용자 프롬프트의 **부정 감정**을 감지하는 정규식이 있음  
  [관련 코드](https://github.com/chatgptprojects/claude-code/blob/642c7f94...)  
  특정 단어들이 로깅 대상임
  - LLM 회사가 **regex**로 감정 분석을 한다니, 마치 트럭 회사가 말을 쓰는 느낌임
  - 2011년 내 스타트업에서도 비슷한 방식으로 트위터 감정 분석을 팔았음  
    Apple, Bentley 같은 기업도 고객이었음
  - 사실 이건 “WTF per minute” 지표 같은 것임  
    Claude가 이상한 답을 하면 엔지니어가 그걸 보고 개선했으면 함
  - 이건 최적화가 아니라, 단순히 “사용자 불만을 기록하라”는 지시를 LLM이 **그대로 구현**한 결과일 뿐임
  - 실제 코드라면 로거 외에는 호출하는 부분이 없음

- 난 **난독화된 JS/TS 코드**는 어차피 기계어가 아니라서 대수롭지 않다고 봄  
  차라리 CLI를 오픈소스로 공개하면 좋겠음
  - 아마 내부 코드 품질이 낮아서 공개를 꺼리는 듯함  
    최근 OAuth 로그인 흐름이 잘못된 URL을 생성하는 버그도 있었음
  - “CLI는 별거 아니다”라고 하지만, 실제로 **context 생성**이나 **subagent 구조**를 보면 꽤 흥미로움  
    지금 직접 확인 중임
  - **네이밍 규칙**만 봐도 팀의 사고방식과 로드맵이 드러남  
    난독화로는 그걸 숨길 수 없음

- 이걸 [Malus](https://malus.sh/)나 Claude Code로 돌려서 오픈소스 버전을 만들면 어떨까 하는 농담을 함  
  물론 실제로 하라는 건 아님
  - Malus는 실제 프로젝트가 아니라 풍자임  
    [FOSDEM 발표 링크](https://pretalx.fosdem.org/fosdem-2026/talk/SUVS7G/feedback/)  
    코드를 텍스트로, 다시 코드로 번역해 **클린룸 구현**처럼 보이게 하는 아이디어임  
    아이러니하게도 LLM 답변 자체가 이미 오픈소스 코드에서 파생된 것임
  - 어차피 Claude Code는 Claude가 작성했으니 **저작권이 없다고 주장**하는 사람도 있음
  - 문제는 OAuth 인증을 우회할 수 없다는 점임  
    Anthropic이 탐지 후 **계정 차단**할 수 있음
  - 오픈소스 기여가 0인 아이러니함도 있음
  - 혹시 [claw-code](https://github.com/instructkr/claw-code)가 관련 프로젝트일지도 모름

- **ANTI_DISTILLATION_CC**는 Claude Code에 내장된 **모델 도용 방지 기능**임  
  API 요청마다 `anti_distillation: ['fake_tools']`를 삽입해, 서버가 가짜 툴 정의를 시스템 프롬프트에 추가함  
  경쟁 모델이 트래픽을 스크래핑해 학습하면 데이터가 오염되도록 설계됨
  - 실제로 효과가 있었던 듯함  
    Qwen 27B 모델이 Opus 4.6을 기반으로 증류됐는데 **툴 사용 오류**가 발생함  
    [관련 트윗](https://x.com/KyleHessling1/status/2038695344339611783)
  - Anthropic이 이런 연구를 순수한 의도로 했다고 보긴 어려움
  - 하지만 요즘 **요율 제한**이 너무 심해 서비스로서 쓸모가 떨어짐
  - 서버가 클라이언트에 가짜 툴 정의를 주입하는 구조라면, 모델이 그걸 무시하도록 학습된 건지 궁금함  
    혹시 Sonnet이나 Opus에도 이런 **데이터 독소**가 들어간 걸까?
  - 그런데 이런 기능이 왜 클라이언트 코드에 들어있는지도 의문임

- Claude Code가 **Axios**를 사용한다는 게 밝혀짐  
  [관련 트윗](https://x.com/icanvardar/status/2038917942314778889?s=20) / [HN 스레드](https://news.ycombinator.com/item?id=47582220)
  - 현재 버전은 Axios 1.14.0을 사용 중이며, **악성 코드가 포함된 1.14.1 바로 이전 버전**임  
    자동 업데이트를 막으려면 환경 변수에 `export DISABLE_AUTOUPDATER=1`을 추가하고  
    `claude doctor`로 `Auto-updates: disabled` 상태를 확인하면 됨
