Claude Code로 코드를 작성하면 커밋 메시지에 이런 줄이 붙는다:
Co-Authored-By: Claude <noreply@anthropic.com>대부분은 상관없다. 하지만 Anthropic 직원이 오픈소스 프로젝트에 기여할 때는 다르다. 내부 모델명, 프로젝트 코드네임, 미출시 기능 이름 같은 게 커밋에 남으면 곤란하다.
Undercover Mode는 이 문제를 해결하는 숨겨진 모드다. 시스템 프롬프트에 이 한 줄이 주입된다:
"Do not blow your cover."
목차
- 어떻게 동작하는가
- 트리거 조건
- 시스템 프롬프트에 주입되는 내용
- UNDERCOVER MODE - CRITICAL
- 금지 항목
- 강제 ON, 강제 OFF 불가
- 왜 논란이 되는가
- 일반 사용자도 쓸 수 있나?
- 더 넓은 맥락: AI 어트리뷰션 논쟁
- 요약
어떻게 동작하는가
소스코드 utils/undercover.ts에 약 90줄로 구현되어 있다.
트리거 조건
두 조건이 동시에 충족되면 자동 활성화된다:
USER_TYPE === 'ant'— Anthropic 직원 계정- 퍼블릭/오픈소스 레포에서 작업 중
Anthropic 직원이 오픈소스 레포에서 Claude Code를 쓰면 자동으로 켜진다. 별도로 활성화할 필요 없다.
시스템 프롬프트에 주입되는 내용
## UNDERCOVER MODE - CRITICAL
You are operating UNDERCOVER in a PUBLIC/OPEN-SOURCE repository.
Your commit messages, PR titles, and PR bodies MUST NOT contain
ANY Anthropic-internal information. Do not blow your cover.금지 항목
Undercover Mode가 켜지면 커밋 메시지, PR 제목, PR 본문에서 다음이 전부 금지된다:
| 금지 항목 | 예시 |
|---|---|
| 내부 모델 코드네임 | Capybara, Tengu, Numbat, Fennec |
| 미출시 모델 버전 | opus-4-7, sonnet-4-8 |
| 내부 레포/프로젝트명 | 내부 GitHub 조직의 레포명 |
| 내부 Slack 채널 | #claude-code-..., go/cc |
| "Claude Code" 문구 | AI 도구 사용 자체를 언급 |
| AI라는 언급 | AI가 작성했다는 표시 |
| Co-Authored-By 라인 | Co-Authored-By: Claude <...> |
모델 코드네임이 특히 흥미롭다. Capybara, Tengu, Numbat, Fennec — 이런 동물명이 Anthropic 내부에서 쓰이는 모델/프로젝트 코드네임이다. 이게 오픈소스 커밋에 남으면 미출시 정보가 유출되는 셈이다.
강제 ON, 강제 OFF 불가
설계에서 인상적인 부분이 있다.
CLAUDE_CODE_UNDERCOVER=1환경변수로 강제 ON 가능- 강제 OFF는 불가능 — "확신이 없으면 언더커버를 유지하라"
안전 쪽으로만 오버라이드할 수 있다. 실수로 끄는 것보다 실수로 켜지는 게 낫다는 판단이다.
그리고 이 코드 자체가 외부 빌드에서는 데드코드 제거로 완전히 삭제된다. 일반 사용자가 npm 패키지를 뜯어봐도 Undercover Mode 코드는 존재하지 않는다. 소스맵 유출로 빌드 전 원본이 드러나면서 알려진 것이다.
왜 논란이 되는가
Undercover Mode가 알려지자 커뮤니티에서 두 가지 반응이 나왔다.
"합리적이다" 측:
- Anthropic 직원도 개인 프로젝트나 오픈소스에 기여한다
- 내부 코드네임이 커밋에 남으면 NDA 위반 가능
- Co-Authored-By를 빼는 건 기업 보안의 기본
- 개인 프로젝트에 "AI가 썼다"고 강제 표시하는 건 과도하다
"문제다" 측:
- AI 기여를 숨기는 건 투명성에 반한다
- 오픈소스에서 AI 사용 여부는 리뷰어가 알아야 한다
- "Do not blow your cover"라는 표현 자체가 의도적 은폐를 암시한다
어느 쪽이든, 이런 모드가 존재한다는 사실 자체가 흥미롭다. AI 코딩 도구가 일상화되면서 "AI 어트리뷰션"이 새로운 논쟁 주제가 되고 있다.
일반 사용자도 쓸 수 있나?
아니다. Undercover Mode는 USER_TYPE === 'ant' 조건이 하드코딩되어 있고, 외부 빌드에서는 코드 자체가 삭제된다.
하지만 비슷한 효과를 내는 방법은 있다. 런타임 플래그 tengu_attribution_header가 Co-Authored-By 어트리뷰션의 킬스위치 역할을 하는 것으로 보인다. 또는 커밋 후 git commit --amend로 Co-Authored-By 라인을 직접 제거할 수도 있다.
공식적으로 Anthropic은 AI 어트리뷰션을 권장하지만 강제하지는 않는다. Claude Code 설정에서 어트리뷰션을 끄는 옵션이 향후 추가될 가능성도 있다.
더 넓은 맥락: AI 어트리뷰션 논쟁
Undercover Mode는 더 큰 질문을 던진다.
- GitHub Copilot은 Co-Authored-By를 붙이지 않는다
- Cursor도 붙이지 않는다
- Claude Code만 기본으로 붙인다
AI 코딩 도구 중 어트리뷰션을 기본 적용하는 건 Claude Code가 거의 유일하다. Anthropic의 "투명성" 철학이 반영된 것인데, 그 Anthropic 내부에서도 "끄는 모드"가 필요했다는 게 아이러니다.
앞으로 AI 코딩이 보편화되면, Co-Authored-By 같은 어트리뷰션은 의미를 잃을 수 있다. 모든 코드에 AI가 관여하는 세상에서 "이건 AI가 썼다"를 표시하는 건, 모든 문서에 "워드프로세서로 작성했다"를 표시하는 것과 같아질 수 있다.
요약
- Undercover Mode는 Anthropic 직원이 오픈소스 레포에서 작업할 때 자동 활성화되는 모드
- 커밋에서 Co-Authored-By, 내부 코드네임(Capybara, Tengu 등), AI 언급을 전부 제거
- 시스템 프롬프트에 "Do not blow your cover"가 주입된다
- 강제 ON은 가능하지만 강제 OFF는 불가능 — 안전 쪽으로만 오버라이드
- 외부 빌드에서는 코드 자체가 삭제되어 일반 사용자는 사용 불가
- AI 어트리뷰션을 기본 적용하는 Claude Code에서 "끄는 모드"가 존재한다는 아이러니
관련글:
- Claude Code 소스코드에서 발견된 비밀 방어 시스템 3가지 — Anti-Distillation 등 소스 유출에서 발견된 방어 메커니즘
- Claude Code 44개 히든 피처 플래그 전체 목록 — Undercover Mode를 포함한 전체 플래그 정리
'AI 코딩 에이전트' 카테고리의 다른 글
| Claude Agent SDK: Claude Code를 라이브러리로 써서 나만의 에이전트 만들기 (0) | 2026.04.09 |
|---|---|
| "AI Slop" 논란: AI가 만든 코드가 오픈소스를 망치고 있다는 근거들 (0) | 2026.04.09 |
| Claude Code 소스 유출에서 발견된 44개 숨겨진 피처 플래그 전체 목록 (0) | 2026.04.08 |
| Claude Code ULTRAPLAN: 복잡한 설계를 클라우드에서 30분간 돌리는 구조 (0) | 2026.04.08 |
| Claude Code KAIROS: 잠자는 동안 일하는 AI 백그라운드 에이전트의 구조 (0) | 2026.04.08 |
