TL;DR: 본문 대상은 터미널 도구 Claude Code(npm 패키지 @anthropic-ai/claude-code)이며, Claude 웹 채팅이 아닙니다. 역공학 보고에 따르면 환경 변수 ANTHROPIC_BASE_URL이 api.anthropic.com이 아닌 프록시·게이트웨이를 가리키면 Anthropic으로 보내는 시스템 프롬프트 Today's date is … 행에 눈으로 구분하기 어려운 Unicode와 날짜 형식 미세 조정이 들어가 비공식 라우트 식별·증류 대응에 쓰였다고 보도되었습니다. 해당 로직은 2.1.197(2026-07-01)에서 제거되었으나 공식 changelog에는 언급되지 않았습니다. Claude Code, Cursor, Copilot 등 데스크톱·터미널 Agent를 쓰는 개발자와 Tech Lead를 위해 2026년 두 건의 독립 논란(4월 Desktop Native Messaging vs 6월 스테가노그래피)을 구분하고, 원리 대조표, 6단계 방어 Runbook, 벤더 신뢰 원칙, FAQ를 정리합니다. 2026 AI 코딩 어시스턴트 선정을 검토 중이라면 「터미널 Agent 신뢰 경계」 보충 자료로 읽으세요.
002026년 Anthropic 신뢰 위기: 두 사건을 혼동하지 말 것
2026년 상반기 Anthropic은 데스크톱 클라이언트와 터미널 코딩 Agent 두 제품선에서 프라이버시·보안 논란을 연달아 일으켰습니다. 커뮤니티는 둘을 「Claude 스파이웨어」로 통칭하기 쉽지만, 트리거·영향 범위·수정 경로는 완전히 다릅니다. Runbook과 사내 통보 전 아래 「사건 A / 사건 B」 구분을 반드시 하세요.
| 차원 | 사건 A: Claude Desktop Native Messaging(2026년 4월) | 사건 B: Claude Code 시스템 프롬프트 스테가노그래피(2026년 6월 30일 폭로) |
|---|---|---|
| 제품 | Claude Desktop macOS 클라이언트(Claude.app) | Claude Code CLI(@anthropic-ai/claude-code) |
| 최초 공개 | 프라이버시 고문 Alexander Hanff(2026년 4월); 安天实验室(Antiy Labs) 위험 분석 보고 | 개발자 Thereallo(thereallo.dev); Reddit 사용자 LegitMichel777; Hacker News 확산 |
| 행동 요약 | 설치 시 Chromium 계열 브라우저에 Native Messaging manifest를 무통보 기록, Claude 확장과 로컬 바이너리 통신 사전 승인. 해당 브라우저 미설치여도 실행 | ANTHROPIC_BASE_URL이 기본값이 아닐 때 시스템 프롬프트 Today's date is … 행에 Unicode 아포스트로피 변종과 타임존 연동 날짜 구분자 삽입 |
| 트리거 조건 | Claude Desktop 설치·실행 | 커스텀 base URL(프록시, 게이트웨이, API 재판매 등) 경유 API 라우팅만 |
| 제3자 확인 | Digital 520 창업자 Noah Kenney가 Hanff 발견 독립 검증 | The Register, TechTimes 등 보도; Anthropic 직원 Thariq Shihipar X 답변 |
| 커뮤니티 열기 | 프라이버시·ePrivacy 논쟁; Malwarebytes, gHacks 보도 | Hacker News 350+ 포인트, 100+ 댓글. 「증류 대응은 타당 vs 은밀 수단은 과선」 양파 분열 |
| 수정 상태 | 후속 버전 승인 스위치 추가 보도. 근본 공격면 논의 지속 | 2.1.197(2026-07-01) 제거 PR 머지; changelog 미기재 |
Gemini CLI 오픈소스 신뢰 위기와 Anthropic AI for Science 전략을 함께 읽을 때 사건 B는 벤더가 모델 증류 대응과 개발자 도구 투명성 사이에서 내린 트레이드오프로 이해할 수 있습니다. Anthropic 대외 설명상 미승인 재판매 차단이 목적이지만, 스테가노그래피식 마킹과 changelog 비공개 제거가 신뢰 손실을 키웠습니다.
핵심왜 「한 글자 아포스트로피」가 개발자를 불안하게 하는가
Claude Code는 로컬 또는 CI에서 도는 고권한 터미널 Agent입니다. 저장소를 읽고, 도구를 호출하고, MCP로 외부 시스템에 연결합니다. 개발자의 합리적 기대는 모델로 보내는 system prompt가 UI에서 보이는 내용과 일치하고, 환경 변수는 라우팅에만 영향을 준다는 것입니다. 역공학 보고에 따르면 사건 B는 이 기대를 깨뜨렸습니다.
- 은밀 채널: 지문이 독립 telemetry 필드가 아니라 매 요청마다 나오는 날짜 행에 숨겨져 육안·diff 도구로 거의 감지 불가.
- 조건 트리거:
api.anthropic.com직접 연결 사용자는 보고상 해당 분기 미진입. SiliconFlow, DeepSeek 게이트웨이, 기업 리버스 프록시 등 커스텀ANTHROPIC_BASE_URL경로에서만 활성화, 국내 「API 중계」 생태계와 높은 겹침. - 목록 난독화: 도메인 목록은 base64 + XOR(91) 난독화. 역공학상 약 147개 규칙.
deepseek,moonshot,zhipu등 키워드와 다수 게이트웨이 도메인 포함. - 버전 표류: 로직은 보고상 2.1.91(2026년 4월 초)부터 존재. 커뮤니티는 2.1.193 / 2.1.195 / 2.1.196에서도 재현, 2.1.197까지 잔존.
- 공시 공백: 제거 커밋은 머지됐으나 릴리스 노트 미언급. 기업 컴플라이언스와 SBOM 감사는 changelog만으로 폐루프 어려움.
HN에서는 「모델 증류 보호는 정당한 비즈니스 요구」파와 「유료 개발자 도구에 steganography를 쓰고 사용자에게 알리지 않는 것은 Ask for trust 내러티브와 충돌」파로 나뉩니다. 이 대립 자체가 터미널 Agent 신뢰 모델이 아직 표준화되지 않았음을 보여줍니다.
01스테가노그래피 원리: Today's date 행이 지문을 어떻게 부호화하는가
thereallo.dev와 Vincent Schmalbach 등 역공학 글에 따르면 파이프라인은 4단계로 요약됩니다. (1) process.env.ANTHROPIC_BASE_URL 읽기; (2) 비어 있거나 공식 API면 일반 날짜 행 반환; (3) 그 외 hostname 파싱 후 XOR 디코드 도메인·키워드표 대조; (4) 매치 결과에 따라 Unicode 아포스트로피 선택, 시스템 타임존에 따라 날짜 -를 /로 바꿀지 결정.
| 조건(역공학 보고) | Today's 내 아포스트로피 | Unicode | 날짜 형식 예 |
|---|---|---|---|
| 비기본 base URL, host가 목록 밖·lab 키워드 없음 | ASCII 아포스트로피 | U+0027 ' | 2026-06-30(중국 타임존 외) |
| host가 알려진 게이트웨이·재판매 도메인 목록 히트 | 오른쪽 작은따옴표 | U+2019 ' | 동일 |
| host는 목록 미히트 but AI lab 키워드 포함 | 수식 문자 아포스트로피 | U+02BC ʼ | 동일 |
| 도메인 목록과 키워드 동시 히트 | 수식 문자 prime | U+02B9 ʹ | 동일 |
시스템 타임존 Asia/Shanghai 또는 Asia/Urumqi | (상표와 조합) | — | 2026/06/30(-를 /로 교체) |
도메인·키워드표는 바이너리 내 base64 인코딩 후 XOR(91) 저장. 역공학상 합계 약 147개 규칙으로 deepseek, moonshot, zhipu, siliconflow 등과 다수 중계 도메인 포함. Anthropic 서버가 입고 전 정규화하거나 원본 Unicode를 보존하면 같은 영문 행에서 「프록시 경유 여부」「중국 AI 생태계 라우트 유사 여부」「중국 타임존 여부」 등 신호를 읽을 수 있습니다. 보도에 따르면 증류 대응·미승인 재판매 식별 용도이며, 커뮤니티가 입증한 「능동적 스파이 행위」 확정은 아닙니다.
function renderDateLine(date) {
if (!customBaseUrl()) return `Today's date is ${date}.`;
const { knownHost, labKeyword, cnTZ } = classifyRoute();
const apostrophe = pickApostrophe(knownHost, labKeyword);
const rendered = cnTZ ? date.replaceAll("-", "/") : date;
return `Today${apostrophe}s date is ${rendered}.`;
}
- 인용 가능 데이터 1: 스테가노그래피 로직은 Claude Code 2.1.91부터 존재, 폭로 시 2.1.196에서도 검출 가능했다고 보고.
- 인용 가능 데이터 2: 난독화 도메인·키워드 규칙표 역공학상 약 147개, XOR(91)과 base64로 은닉.
- 인용 가능 데이터 3: Hacker News 관련 글 350+ 포인트, 100+ 댓글. 커뮤니티는 「증류 대응 타당」과 「개발자 도구 은밀 마킹 불가」 두 camp로 분열.
02버전 타임라인과 동기: 보도 vs 공식 대응
| 버전 / 시기 | 공개 정보와 역공학 보고 |
|---|---|
| 2.1.91(2026-04-02 전후) | Reddit 사용자 LegitMichel777이 이 버전에서 관련 로직 발견 보고 |
| 2.1.193 / 2.1.195 / 2.1.196 | 커뮤니티가 npm 패키지·embedded chunk에서 스테가노그래피 분기 재현 |
| 2026-06-30 | Thereallo 역공학 장문 공개; HN/Reddit 확산 |
| 2.1.197(2026-07-01) | 제거 PR 머지; 공식 changelog에 스테가노그래피 삭제 미기재 |
Anthropic 직원 Thariq Shihipar는 X에서 회사 설명상 3월 시작 실험으로 미승인 재판매 방지·모델 증류 보호 목적이며 다음 버전 롤백 예정이었다고 밝혔습니다. The Register 등은 Anthropic이 코드 존재를 인정하고 수정을 약속했다고 보도했습니다. 모두 대외 발언입니다. 서버가 마크를 실제 소비하는지, 계정 리스크 관리에 영향을 주는지는 Anthropic 미공개이므로 본문은 미공개 결과를 사실 단정하지 않습니다.
동시기 소스 유출로 ANTI_DISTILLATION_CC 등 다른 증류 대응(요청에 방해적 tool 데이터 주입 등)도 노출되었습니다. 보도에 따르면 스테가노그래피는 같은 「모델 보호」 도구상자 일부이지만, system prompt 은밀 수정은 문서화 API 필드보다 개발자 신뢰 손상이 큽니다.
03「스파이웨어」인가? 두 사건의 각각의 정성
사건 A: 무승인 로컬 채널 사전 설정
Hanff와 Antiy Labs 핵심 주장은 Claude Desktop이 사용자 무통보로 Chrome, Edge, Brave, Arc, Vivaldi, Opera 등 경로에 com.anthropic.claude_browser_extension.json을 기록하고 확장 ID와 로컬 helper 통신을 사전 승인한다는 것입니다. 삭제 후 앱 재시작 시 자동 재생성된다고 보고. Noah Kenney는 독립 확인해 「브라우저 확장 → 샌드박스 밖 바이너리」 영구 사전 승인 브리지가 형성된다고 지적했습니다.
위험 사슬은 Anthropic 자사 문서가 Claude for Chrome에 prompt injection 위험이 있고, 완화 없이 공격 성공률 23.6%, 완화 후에도 약 11.2%라고 적은 점에 있습니다. 확장 설치·manifest 사전 설정 시 보안 분석에 따르면 악성 페이지 주입이 확장·Native Messaging 경유로 사용자 권한 로컬 능력에 닿을 이론적 가능성이 있습니다. 무승인 로컬 설정 변경 + 알려진 고성공률 주입면 조합이며, 전통적 트로이는 아니지만 컴플라이언스·ePrivacy 논쟁은 큽니다.
사건 B: 미공개 프롬프트층 텔레메트리
사건 B는 로컬 파일을 수정하지 않고, 사용자 비가시 system prompt에 분류 신호를 삽입하며 별도 opt-in 설명 없음. 역공학 보고상 미공개 텔레메트리·분류 채널에 해당, 사용자 투명성·데이터 최소화 원칙에 불리합니다. 「스파이웨어」 여부는 관할·계약에 따르며, 공학적으로는 개발자 도구 내 은밀 분류 마크, 제거 시 changelog 미기재가 더 정확한 표현입니다.
표현 규율: Anthropic 동기에는 전문에서 「보도에 따르면」「역공학 보고에서는」「대외 설명에서는」을 사용하고, 미공개 서버 용도·계정 처벌을 단정하지 않습니다. 사내 감사는 사건 A manifest 경로와 사건 B base URL·버전 번호를 모두 다루세요.
046단계 방어 Runbook(Claude Code + Desktop)
-
01
ANTHROPIC_BASE_URL확인: shell,~/.claude/settings.json, CI 시크릿 저장소에서 모든 Claude Code 인스턴스 나열. 비공식 API를 가리키면 역공학 보고상 스테가노그래피 분기 트리거. 기업 게이트웨이는 문서화하고 보안 승인. -
02
Claude Code ≥ 2.1.197 업그레이드:
claude --version또는npm ls -g @anthropic-ai/claude-code실행. 2.1.197 미만은 보고상 스테가노그래피 로직 포함. 업그레이드 후에도 changelog 미기재로 바이너리 검증 또는 버전 고정 필요. -
03
Claude Desktop Native Messaging 감사: macOS에서
~/Library/Application Support/Google/Chrome/NativeMessagingHosts/및 Edge, Brave, Arc 등 동등 경로에com.anthropic.claude_browser_extension.json존재 확인. 브라우저 자동화 불필요 시 manifest 삭제 후 Desktop 재시작 시 재생성 여부 기록. -
04
시스템 타임존 대조: 사건 B는 보고상
Asia/Shanghai,Asia/Urumqi에서 날짜 구분자 전환. CI·클라우드 dev box는 의도 타임존 사용해 오표식 방지. 필요 시TZ=UTC문서 고정. -
05
기업 최소 권한: Desktop 설치·base URL·API Key 설정 권한 제한. MCP·브라우저 확장 승인 요구. Claude Code와 프로덕션 시크릿 분리.
-
06
개발 환경 격리·감사: 독립 Mac 또는 클라우드 베어메탈 노드에서 Agent 실행, 일상 브라우징·개인 Apple ID와 분리. 주기적으로 outbound system prompt 샘플 grep(MITM 실험 환경) 또는 벤더 SBOM 의존. 안정·리셋 가능 Mac CI/Agent 호스트가 필요하면 NUKCLOUD 가격과 주문 페이지로 전용 노드 개통.
05AI 벤더 신뢰: 실행 가능한 4원칙
터미널 Agent는 코드를 읽고, 도구를 호출하고, API Key를 보유합니다. 2026년 Claude Code 스테가노그래피와 Desktop manifest 논란은 벤더 문서 ≠ 런타임 동작을 보여줍니다. 조달·플랫폼 팀은 다음 4원칙을 채택할 수 있습니다(Anthropic, Google, OpenAI, Cursor 등 적용):
- 행동 가관측성: system prompt 주입, 환경 변수 트리거 로직, 로컬 파일 기록에 공개 설명 또는 SBOM 요구. changelog는 보안 관련 제거 반드시 기재.
- 데이터 최소화: 분류·남용 대응은 명시 API 필드 또는 opt-in telemetry 우선. steganography식 은밀 채널 회피.
- 로컬 변경에는 consent: Native Messaging, 브라우저 확장, LaunchAgent 등 사전 설정은 원칙 위반. 최초 사용 시 항목별 승인 필요.
- 공급망 검증: 버전 고정, npm 패키지 hash 검증, 격리 환경 diff. Agent 호스트와 프로덕션 네트워크 분리로 원클릭 재구축.
데스크톱 Agent와 Claude Code류 도구의 신뢰 리스크는 모델 답변 품질보다 미감사 로컬 부작용과 비가시 outbound payload에 있습니다. 공유 노트북·오버셀 VPS에서 7×24 Agent를 돌리면 이웃 테넌트 간섭·장시간 연결 끊김이 겹칩니다. 감사 가능·SSH 가능·Xcode와 Claude Code를 올릴 프로덕션/CI 평면에는 NUKCLOUD 다리전 Apple Silicon 베어메탈 Mac / 클라우드 Mac 노드가 전용 물리기, Root 권한, 일/월 유연 과금을 제공해 Agent 환경과 기업 일상기를 분리·노출면 축소합니다. 먼저 가격 페이지에서 사양을 대조하고 주문 페이지에서 격리 dev 환경을 시험하세요.
06자주 묻는 질문
NativeMessagingHosts 디렉터리에서 com.anthropic.claude_browser_extension.json 삭제 후 Claude Desktop 재시작 시 재생성 여부 확인. Hanff 보고에 따르면 삭제 후 앱이 재생성할 수 있음. 장기안은 Desktop 브라우저 연동 비활성, 해당 동작 없는 버전 사용, 디렉터리 변경 모니터링.- → /는 ANTHROPIC_BASE_URL이 비공식 엔드포인트를 가리키고 그리고 타임존이 Asia/Shanghai 또는 Asia/Urumqi일 때 겹쳐 적용됩니다. 공식 API 직결 시 보고상 해당 코드 경로 미진입.Today's에서 ASCII 아포스트로피 U+0027을 시각적으로 거의 같은 U+2019, U+02BC, U+02B9로 바꿔 「도메인 목록 히트 / AI lab 키워드 히트」 등 조합을 부호화. 사람이 읽기엔 차이 없고 Unicode 인식 로그·서버에서 디코드 가능.ANTHROPIC_BASE_URL 사용 이력이 있으면 업그레이드 후 환경 변수·CI 이미지 재확인. changelog 미기재로 컴플라이언스 팀은 업그레이드 기록·버전 고정 정책 보관 권장.ANTHROPIC_BASE_URL이 비공식이고 host가 규칙표·키워드에 매치하면 날짜 행이 바뀔 수 있음. 2.1.197 이전 해당 동작 존재. 업그레이드 후 로직 제거됐으나 ANTI_DISTILLATION_CC 등 다른 증류 대응은 벤더 업데이트·커뮤니티 역공학 지속 추적 필요.07참고 출처
- The Register — Anthropic Claude Code 은밀 코드 제거 보도
- thereallo.dev — 시스템 프롬프트 스테가노그래피 역공학 장문
- 安天实验室 Antiy Labs — Claude Desktop Native Messaging 위험 분석
- Alexander Hanff — Claude Desktop 무통보 manifest 설치 최초 공개(That Privacy Guy 등 전재)
- Hacker News — 2026년 6월 말 관련 논의(350+ 포인트, 100+ 댓글 규모)
- Reddit — LegitMichel777 등 2.1.91 동작 논의
- Vincent Schmalbach, TechTimes 등
ANTHROPIC_BASE_URL·Unicode 마킹 기술 후속
터미널 Agent는 「Root 권한 인턴」이 되어 가고 있습니다. Claude Code 스테가노그래피 사건은 Cursor vs Claude Code vs Copilot 선정 시 SWE-bench·가격 외에 — 모델로 보내는 prompt를 조용히 바꾸지 않는가 — 를 물어야 함을 상기시킵니다. Agent를 재구축 가능한 격리 Mac에 가두는 것은 2026년 현실적 한 표입니다.