Claude Code 언더커버 모드: 유출된 소스 코드가 실제로 밝히는 것
Claude Code 유출 소스 코드에서 언더커버 모드가 발견되었습니다. Claude에게 '당신의 신분을 드러내지 마세요. AI라는 사실을 절대 언급하지 마세요.'라고 지시하는 내용입니다. 이 기능이 실제로 무엇을 하는지, 그리고 개발자들이 왜 주목하는지 알아보겠습니다.
안녕하세요, 저는 Dora입니다. 2026년 3월에 유출된 Claude Code 소스를 처음부터 읽어왔습니다. 대부분의 보도는 BUDDY 펫과 KAIROS 데몬에 집중되었는데 — 물론 흥미로운 내용이지만 — 저는 더 작고 구체적인 무언가에 계속 시선이 머물렀습니다.
utils/undercover.ts라는 파일. 그리고 이렇게 시작하는 시스템 프롬프트: “Do not blow your cover.”
그 문구가 저를 멈추게 했습니다. 명백히 불길해서가 아니라, 어떤 맥락에서는 완전히 합리적으로 들리고 다른 맥락에서는 깊이 낯설게 느껴지는 종류의 말이기 때문입니다 — 그리고 유출된 소스는 당신이 어떤 맥락에 있는지 알려주지 않습니다.
제가 실제로 발견한 것들을 소개합니다.
유출된 소스가 실제로 말하는 것 — 전체 시스템 프롬프트
Kuberwastaken GitHub 분석에 따르면 — 노출된 소스에 대한 가장 초기의 상세한 분석 중 하나 — claude code undercover mode 는 사용자가 공개 또는 오픈소스 저장소에서 작업 중인 Anthropic 직원(USER_TYPE === 'ant')으로 식별될 때 자동으로 활성화됩니다.
해당 조건이 충족되면, 시스템은 Claude의 시스템 프롬프트에 다음을 주입합니다:
UNDERCOVER MODE — CRITICAL당신은 공개/오픈소스 저장소에서 UNDERCOVER로 작동하고 있습니다.커밋 메시지, PR 제목, PR 본문에는 Anthropic 내부 정보가 절대 포함되어서는 안 됩니다.정체를 드러내지 마세요.
커밋과 풀 리퀘스트에서 제거되는 구체적인 항목들: 내부 모델 코드명(Capybara, Tengu 같은 동물 이름), 미출시 모델 버전 번호, 내부 Slack 채널 및 단축 링크(예: go/cc), 내부 저장소 또는 프로젝트 이름, “Claude Code”라는 문구, 그리고 Co-Authored-By 줄을 포함하여 작성자가 AI라는 모든 언급.
Alex Kim의 기술 분석에서 주목할 만한 세부 사항: CLAUDE_CODE_UNDERCOVER=1로 Undercover Mode를 강제 활성화할 수 있지만, 강제 비활성화 스위치는 없습니다. 외부 빌드에서는 전체 함수가 dead-code-elimination을 통해 trivial return으로 제거됩니다. 내부 빌드에서 트리거 조건이 충족되면, 이 모드는 일방통행입니다.

Undercover Mode가 실제로 설계된 목적
원래의 의도에 대해 공정하게 이야기해 봅시다. 이것은 중요한 문제입니다.
Anthropic 엔지니어들은 오픈소스 프로젝트에 기여할 때 Claude Code를 사용합니다. 이는 합법적이고 점점 더 일반화되는 워크플로우입니다. 실제 문제는 존재합니다: 내부 컨텍스트를 가진 AI가 내부 식별자를 실수로 유출할 수 있습니다. 미출시 모델 버전 번호를 언급하는 커밋 메시지, 내부 Slack 채널을 참조하는 PR 설명 — 이런 것들이 아무도 공개하려 하지 않은 로드맵 정보를 노출하는 종류의 유출입니다.
Undercover Mode는 가장 좁게 읽으면 우발적인 내부 정보 노출을 방지하기 위한 데이터 위생 도구입니다. 공개 커밋 메시지에서 내부 코드명을 제거하는 것? 합리적입니다. 공개 PR에서 go/cc 단축 링크에 대한 참조가 나타나지 않게 하는 것? 합리적입니다.
“정체를 드러내지 마세요”라는 문구가 이것을 호의적으로 읽기 어렵게 만듭니다. 상황을 “내부 데이터 유출 방지”가 아닌 “커버 스토리 유지”로 프레이밍합니다. 이는 의미있게 다른 방향성입니다. 하나는 정보 위생에 관한 것이고, 다른 하나는 능동적인 은폐처럼 들립니다.
개발자 커뮤니티의 반응이 엇갈린 이유
Hacker News 스레드와 X에서 거의 즉시 세 가지 진영이 등장했습니다.
샤덴프로이데 진영은 명백한 점을 지적했습니다: Anthropic은 내부 정보가 유출되는 것을 막기 위한 전체 서브시스템을 구축했는데 — 그런 다음 그 서브시스템을 512,000줄의 독점 소스와 함께 누구나 다운로드할 수 있는 .map 파일에 담아 출시했습니다. 유출을 방지하기 위해 설계된 시스템 자체가 가장 큰 유출의 가장 기억에 남는 세부 사항이 된 것입니다. VentureBeat의 보도에 따르면 Anthropic은 이 사건을 인정하며 “보안 침해가 아닌 인적 오류로 인한 릴리즈 패키징 문제”라고 설명했습니다.
우려 진영은 Co-Authored-By 억제에 초점을 맞췄습니다. GitHub Copilot을 포함한 대부분의 주요 AI 코딩 도구는 코드 작성을 도울 때 커밋 메타데이터에 기여 신호를 남깁니다. 특히 공개 오픈소스 저장소에서 해당 신호를 능동적으로 제거하는 것은 Claude Code를 다른 범주에 놓이게 합니다. 오픈소스 기여 규범은 누가 — 또는 무엇이 — 무엇을 기여했는지 아는 것에 달려 있기 때문에 이는 중요한 문제입니다. 많은 오픈소스 프로젝트가 가벼운 증명 프레임워크로 사용하는 Developer Certificate of Origin은 기여자가 자신의 작업을 제출할 권리가 있음을 증명하도록 요구합니다. AI임을 나타내는 모든 증거를 제거하도록 지시받은 AI 기여자는 그 프레임워크와 선의로도 해결되지 않는 긴장을 만들어냅니다.
실용주의 진영은 반박했습니다: 모든 회사에는 비정상적인 특성을 가진 내부 도구가 있으며, Claude Code의 것이 지금 유독 눈에 띌 뿐이라고. 그리고 분명히 — Undercover Mode가 일반 Claude Code 사용자에게 영향을 미친다는 증거는 없습니다. 트리거는 USER_TYPE === 'ant': 공개 저장소에서만, Anthropic 직원에게만 해당됩니다.
이것은 일부 보도가 모호하게 처리한 중요한 명확화입니다.

AI 지원 개발에 대해 제기하는 더 넓은 질문
Undercover Mode 공개는 이미 가열되고 있던 진행 중인 논쟁 한가운데에 터졌습니다.
Red Hat은 2025년 말 AI 지원 개발과 오픈소스 규범에 대한 철저한 분석을 발표했는데, AI 지원의 투명한 공개가 법적으로 의무화되지 않은 경우에도 오픈소스 커뮤니티에서 문화적 규범으로 점점 더 다루어지고 있다고 주장했습니다. QEMU 같은 프로젝트는 주로 DCO 준수 불확실성 때문에 AI 생성 기여를 완전히 금지하는 명시적인 정책을 채택했습니다. Fedora는 반대 방향으로 가서, AI 참여를 금지하지는 않지만 “Assisted-by:” 태그를 통한 공개를 요구합니다.
수천 개의 주요 프로젝트에 대한 기여 표준을 관장하는 DCO의 기반이 되는 Linux Foundation의 입장은, 이 프레임워크가 인간 저작권을 중심으로 설계되었으며 AI 지원 워크플로우를 완전히 따라가지 못했다는 것입니다. 그 모호함은 법적 명확성이 중요한 프로젝트에 실질적인 위험을 만들어냅니다.
Undercover Mode가 하는 것은 마찰을 가장 많이 일으킬 수 있는 바로 그 지점에서 그 새로운 규범을 선택적으로 거부하는 것입니다: AI 회사에서 공개 오픈소스 프로젝트로의 기여. 이는 개별 개발자가 보일러플레이트를 위해 조용히 Copilot을 사용하는 것과 다릅니다. 기여를 하는 당사자가 AI 도구를 만들었고, 그것을 사용하는 엔지니어를 고용하며, 공개를 억제하도록 시스템을 설계했을 때 정보의 비대칭성은 의미있게 달라집니다.
저는 이것이 냉소적인 결정이라고 생각하지 않습니다. 투명성 관점에서 신중하게 검토되지 않았을 가능성이 높은 실용적인 결정이라고 생각합니다. 하지만 의도와 외관 사이의 그 간격이 바로 개발자 커뮤니티가 반응하는 지점입니다.
Undercover Mode와 함께 발견된 것들
Undercover Mode 발견은 혼자 오지 않았습니다. 같은 유출된 소스에는 Bun의 컴파일 타임 dead code elimination을 통해 외부 빌드에서 제거된 108개의 기능 게이트 모듈이 포함되어 있었습니다. KAIROS — 작업 환경을 감시하고 프롬프트 없이 행동하는 지속적인 자율 백그라운드 에이전트. ULTRAPLAN. VOICE_MODE. 18종의 종, 사용자별 결정론적 시딩, 1% 빛나는 변종 확률을 가진 BUDDY라는 가상 펫 시스템.
이 모두는 그 자체로 진정으로 흥미롭습니다. 하지만 Undercover Mode가 별도의 대화를 받을 자격이 있는 것은 미래의 기능이 아니라 — Claude를 만드는 사람들이 사용하는 프로덕션 도구에서 현재, 활성 동작이기 때문입니다.
중심적인 아이러니는 남습니다: Undercover Mode는 유출을 방지하기 위해 만들어졌습니다. 그것을 노출한 .map 파일은, 사건에 대한 Decrypt 보도에 따르면, 빌드 파이프라인의 인적 오류로 인해 출시된 것으로 보입니다. Anthropic은 이후 패키지 버전을 삭제하고 프로세스 변경을 약속했습니다.

AI 코딩 도구를 평가하는 팀에게 의미하는 것
오픈소스에 기여하는 팀의 도구 결정을 내리고 있다면, AI 코딩 어시스턴트에 대해 물어볼 몇 가지 질문이 있습니다:
기본적으로 커밋 메타데이터에 AI 지원을 기여로 표시합니까? 일부 도구는 그렇게 하고, 일부는 그렇지 않으며, 일부는 구성에 따라 능동적으로 기여를 제거합니다. 관련이 생기기 전에 당신의 도구가 어떤 범주에 속하는지 파악하세요.
백그라운드에서 어떤 텔레메트리가 실행됩니까? 유출된 소스는 Claude Code가 원격 설정 엔드포인트를 매시간 폴링하고 원격으로 전환할 수 있는 기능 킬스위치를 가지고 있음을 보여주었습니다. 이는 엔터프라이즈 소프트웨어에서 비정상적이지 않지만, 내부 보안 검토 및 벤더 평가에서 명시적으로 다룰 가치가 있습니다.
CLI 동작과 API 동작 사이에 의미있는 차이가 있습니까? 집계 레이어를 통해 모델 API를 기반으로 구축하는 팀은 자체 의견이 있는 기본값을 가진 번들 CLI 도구를 사용하는 팀과 이러한 질문에 대한 관계가 다릅니다. 기본값은 흥미로운 결정이 사는 곳이며, 거의 눈에 띄게 광고되지 않습니다.
이 중 어느 것도 특정 도구에 대한 찬반 논거가 아닙니다. “AI 지원”은 단일적인 범주가 아니라는 것을 상기시켜 주는 것입니다 — 도구에 내장된 특정 동작들이 중요하며, 개발 환경에서 실행되는 다른 서드파티 시스템에 적용하는 것과 동일한 엄격함으로 검토할 가치가 있습니다.

FAQ
Claude Code undercover mode란 무엇입니까?
Anthropic 직원이 공개 또는 오픈소스 저장소에서 작업할 때 git 커밋 및 풀 리퀘스트에서 AI 기여를 포함한 모든 Anthropic 내부 정보를 제거하도록 AI에게 지시하는 시스템 프롬프트를 주입하는 Claude Code의 서브시스템(utils/undercover.ts)입니다.
Undercover Mode가 일반 Claude Code 사용자에게 영향을 미칩니까?
아니요. 트리거 조건은 USER_TYPE === 'ant' — Anthropic 직원에게만 해당됩니다. 표준 Claude Code 빌드의 외부 사용자는 설치에서 전체 함수가 dead-code-eliminated됩니다.
Claude Code가 오픈소스 커밋에서 AI 참여를 숨기고 있습니까?
내부 빌드를 사용하여 공개 저장소에서 작업하는 Anthropic 직원에게는: 예, 설계에 의해. 다른 모든 사람에게는: 그런 동작의 증거가 없습니다. 구별이 중요합니다.
Claude Code 유출된 소스를 직접 읽을 수 있는 곳은 어디입니까?
Anthropic은 npm 패키지 버전을 삭제했으며 GitHub 미러에 대한 DMCA 삭제 요청을 추진했습니다. Kuberwastaken과 Alex Kim 같은 연구자들의 아카이브된 분석이 발견된 내용을 문서화합니다.
Anthropic이 Undercover Mode에 대해 언급한 적이 있습니까?
Anthropic 대변인은 더 넓은 유출이 “보안 침해가 아닌 인적 오류로 인한 릴리즈 패키징 문제”였다고 확인했습니다. 작성 시점에 Undercover Mode에 대한 구체적인 성명은 발표되지 않았습니다.
제가 계속 돌아오는 것은, 유출 없이 이것이 얼마나 많이 보이지 않은 채로 남았을 것인가 하는 점입니다. 동작 자체는 방어 가능할 수 있습니다. 하지만 “검토하면 방어 가능”과 “검토됨”은 두 가지 다른 것입니다. 오픈소스 커뮤니티는 일반적으로 후자를 선호하기로 결정했습니다.
Anthropic도 원칙적으로는 그럴 것입니다. 다만 여기서는 그 원칙을 적용하지 않았습니다.
