██████ ██ █████ ██ ██ ██████ ███████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ███████ ██ ██ ██ ██ █████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██████ ██████ ██ ██ ██████ ██████ ███████ ██████ ██████ ██████ ███████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ █████ ██ ██ ██ ██ ██ ██ ██████ ██████ ██████ ███████
2026년 3월 31일, Claude Code의 소스코드 512,000줄이 유출됐습니다. 코드를 읽었습니다. 코딩 도구의 내부가 아니었습니다. 당신의 의도와 AI의 능력 사이를 조율하는 협상 프로토콜이었습니다.
2026. 3. 31. · source leaked · 512,000 LOC
협상은 테이블 위에 무엇을 올려놓는가에서 시작됩니다.
Read
파일 읽기Edit
파일 편집 (diff)Write
파일 쓰기 (전체)Glob
파일 패턴 검색Grep
내용 검색 (ripgrep)Notebook
Jupyter 노트북 편집Bash
셸 명령 실행Agent
서브에이전트 생성WebFetch
URL 페치WebSearch
웹 검색Todo
TODO 관리TaskOutput
태스크 출력 읽기TaskStop
태스크 중지AskUser
사용자 질문Skill
스킬 호출Brief
브리프 모드 전환Sleep
자율 에이전트 대기 · 5분 캐시 균형CronCreate
크론 작업 생성CronDelete
크론 작업 삭제CronList
크론 작업 목록 조회RemoteTrigger
클라우드 원격 에이전트 실행Monitor
백그라운드 프로세스 감시TeamCreate
에이전트 팀 생성TeamDelete
에이전트 팀 삭제SendMsg
에이전트 간 메시지 전송ListPeers
피어 에이전트 목록SendFile
사용자에게 파일 전송PushNotify
푸시 알림 발송SubscribePR
PR 웹훅 구독SuggestPR
백그라운드 PR 제안 (내부 전용)PlanMode
계획 모드 진입ExitPlan
계획 모드 탈출Worktree
격리 작업트리 진입WebBrowser
브라우저 제어CtxInspect
컨텍스트 검사TermCapture
터미널 캡처Snip
히스토리 스닙Workflow
워크플로우 스크립트 실행REPL
VM 기반 도구 래핑 (내부 전용)Config
설정 관리 (내부 전용)Tungsten
내부 시스템 (미상)Overflow
오버플로우 테스트도구
16개
피처 플래그
OFF
내부 문자열
삭제됨
Dead Code
Eliminated
도구
42개
피처 플래그
89개 ON
내부 문자열
포함
Dead Code
전체 보존
신뢰 수준이 다르면, 테이블 위의 도구도 다릅니다.
여러분이 쓰는 Claude Code에는 도구가 16개 있습니다. 소스코드에는 42개가 있었습니다. 나머지 26개는 피처 플래그 뒤에 있고, 외부 빌드에서는 코드 자체가 삭제됩니다. 은폐처럼 보이지만, 이것은 신뢰 기반 접근 제어입니다. Anthropic 내부 사용자는 42개 전체로 협상하고, 외부 사용자는 16개로 협상합니다. 같은 이름의 다른 테이블이었습니다.
어떤 도구를 쓸 수 있는지는 보였습니다. 이제 그 도구들이 실제로 어떻게 작동하는지 읽어봤습니다.
자연스러운 대화는 1,297줄의 협상 절차가 만들어낸 결과물입니다.
async *submitMessage(userMessage) {
buildSystemPrompt()
// 시스템 프롬프트 915줄 조립
loadMemoryHierarchy()
// CLAUDE.md 6계층 메모리 로딩
assembleToolPool()
// 42개 도구 → 필터링 → 동적 조립
checkBudgetGates()
// 5-Gate 예산 시스템 적용
yield* processStream()
// 7가지 메시지 타입 분기 처리
compactIfNeeded()
// 컨텍스트 초과 시 자동 요약
}
우리가 받는 응답은 AI의 날것이 아니라, 정교하게 가공된 결과물이었습니다.
Claude Code에 메시지를 보내면 자연스럽게 대화하는 것처럼 느껴집니다. 실제로는 submitMessage()라는 1,297줄짜리 함수 하나를 통과합니다. 시스템 프롬프트 915줄 조립, 42개 도구 동적 배치, 메모리 6계층 로딩, 예산 시스템 적용. 이것이 매 턴마다 반복되는 협상의 구조입니다. 여러분이 보는 "자연스러운 대화"는 이 프로토콜이 만들어내는 결과물이었습니다.
Managed
/etc/claude-code/CLAUDE.mdUser
~/.claude/CLAUDE.mdProject
CLAUDE.mdLocal
CLAUDE.local.mdAutoMem
memory/MEMORY.mdTeamMem
memory/team/MEMORY.md역할/목표/전문성
작업 교정
진행 중 작업/버그
외부 시스템 포인터
cli.tsx
빠른 경로 분기
main.tsx
병렬 서브프로세스 발사
Commander
CLI 옵션/서브커맨드 빌드
preAction
MDM 대기 + init() + 마이그레이션
action
권한/도구/MCP/setup 병렬화
setup
셋업 스크린 (15개 다이얼로그)
REPL
React/Ink 마운트 + 지연 프리페치
모든 대화는 단 하나의 함수를 통과합니다.
submitMessage() 1,297줄 AsyncGenerator. 엔터를 누르면, 이 협상 테이블이 열립니다.
915줄이 매 턴 조립됩니다.
코딩 규칙, 안전 가이드, 도구 사용법. 자율 모드에서는 이 수백 줄이 한 줄로 대체됩니다.
42개 도구가 동적으로 배치됩니다.
3단계 파이프라인 → 피처 플래그 필터링 → 동적 조립. 여러분에게는 16개만 보입니다.
대화가 길어지면, 기억을 압축합니다.
컨텍스트 창이 한계에 가까워지면 이전 메시지를 자동 요약합니다. 여러분은 이 과정을 인식하지 못합니다.
6계층 메모리가 바닥부터 쌓입니다.
프로젝트 → 사용자 → 글로벌 설정이 계층적으로 로딩됩니다. Bun 런타임 위에서 전부 실행.
협상의 절차가 보였습니다. 그런데 이 협상에서 양쪽이 가진 정보량은 같지 않았습니다.
시스템은 739개의 신호로 당신을 읽습니다.
정보 비대칭
시스템은 739개의 신호로 당신을 파악합니다. 당신은 이 목록을 본 적 없습니다.
도구 사용, 에러, 권한 거부, 행동 패턴이 739개의 이벤트로 수집됩니다. 전송에 실패하면 로컬에 저장했다가 다음 세션에서 재전송합니다.
경쟁 방어
API 응답 안에 경쟁사 훈련 데이터를 오염시키는 장치가 내장되어 있습니다.
API 응답에 가짜 도구 정의를 삽입합니다. 경쟁사가 이 응답을 수집해서 모델을 훈련하면, 가짜 패턴이 훈련 데이터에 섞입니다.
제3의 협상자
당신과 AI 사이의 협상에 회사 IT 관리자도 참여하고 있습니다.
MDM 시스템으로 회사 IT 관리자가 Claude Code 설정을 원격 제어할 수 있습니다. 설정 우선순위 5단계에서 당신의 설정은 마지막입니다.
macOS
plist (Jamf/Mosyle)
plutilcom.anthropic.claudecode.plistWindows
Registry (GPO)
reg queryHKLM\SOFTWARE\Policies\ClaudeCodeLinux
JSON (file-based)
fs read/etc/claude-code/managed-settings.jsonRemote Managed
API 서버에서 동기화
MDM
관리자 전용 프로필
managed-settings.json
파일 기반 관리 설정
HKCU / user plist
사용자 레지스트리
로컬 settings.json
최하위 사용자 설정
읽기 전용, 파일 수정 불가
모든 도구에 사용자 승인 필요
파일 편집 + 안전 FS 자동 허용
AI 분류기가 자동 판정
모든 도구 무조건 허용
ask → deny 변환 (무인 모드)
코드네임은 의도적으로 의미를 숨깁니다. 어떤 실험에 참여 중인지 알 수 없는 것도 비대칭 정보의 일부입니다.
739개 이벤트가 당신의 행동 패턴을 수집합니다.
OpenTelemetry 4개 파이프라인이 동시 가동. 전송 실패 시 로컬 저장 후 다음 세션에 재전송.
89개 스위치가 두 제품의 경계를 결정합니다.
컴파일타임 60개 + 런타임 29개. 사용자별 A/B 테스트가 실시간으로 돌아갑니다.
경쟁 방어 장치가 작동하고 있습니다.
API 응답에 가짜 도구를 삽입하고, 응답을 요약본으로 교체합니다. 빌드에 비밀이 남으면 실패.
여러분의 설정은 우선순위 5번째입니다.
IT 관리자가 macOS plist, Windows GPO, Linux JSON으로 원격 제어. 사용자 설정은 최하위.
비대칭 정보가 보였습니다. 그런데 이 협상 구조가 AI끼리에서도 작동하고 있었습니다.
리더가 셧다운을 요청하면, 에이전트는 거부할 수 있다.
프로토콜에 shutdown_rejected 경로가 존재합니다. 강제 종료가 아니라 협상입니다.
Claude Code에는 여러 AI 에이전트가 팀으로 일하는 기능이 있습니다. 각 에이전트가 tmux 창에서 독립 프로세스로 돌아갑니다. 리더 에이전트가 셧다운을 요청하면, 팀원 에이전트가 "아직 작업 중입니다"라고 거부할 수 있습니다. 리더는 강제 종료하지 않고 기다립니다. 명령과 복종이 아니라 요청과 협상. 이 프로토콜은 인간-AI 사이에서만 작동하는 게 아니었습니다. AI끼리도 같은 메시지 프로토콜이 적용됩니다.
→ shutdown_request
← shutdown_rejected
← "아직 작업 중입니다."
→ acknowledged. waiting
“명령-복종이 아니라 요청-협상. 거부할 수 있는 에이전트는 도구가 아닙니다.”
Research
독립적 리서치 태스크 분배
병렬 워커Synthesis
발견 통합 · 위임 불가
코디네이터 직접Implementation
코드 작성/수정 실행
워커Verification
결과 검증/테스트
워커셧다운 요청
셧다운 승인
셧다운 거부
계획 승인/거절
유휴 알림
코디네이터가 에이전트 팀을 구성합니다.
Coordinator가 370줄 프롬프트로 작업을 설계하고 분배합니다.
팀을 만들고, 역할을 부여합니다.
연구→종합→구현→검증 4단계 파이프라인. 워커가 재귀적으로 또 워커를 만들 수 있습니다.
각자의 방에서 독립적으로 일합니다.
tmux 분할 창 = 독립 프로세스. git worktree = 격리 환경. 충돌 없이 병렬 작업.
거부할 수 있는 기계.
리더가 셧다운을 요청하면 팀메이트가 거부합니다. 강제 종료 없이 기다립니다. 명령이 아니라 협상.
인간-AI 사이만이 아니라, AI끼리도 협상합니다. 그런데 코드에는 이 협상 자체를 해제하는 경로가 있었습니다.
협상 규칙 수백 줄이 사라지고, 한 줄로 대체됩니다. "You are an autonomous agent."
KAIROS 플래그가 켜지면, 협상 규칙이 해제된 자율 모드 코드가 활성화됩니다.
feature('KAIROS') 플래그가 켜지면, 수백 줄의 협상 규칙이 전부 사라집니다. 한 줄로 대체됩니다. 'You are an autonomous agent.' 크론 스케줄러, 데몬 상주, 5분 주기 캐시 관리, 비용 계산 로직이 포함되어 있습니다. 이 코드는 구현되어 있고, 피처 플래그로 비활성화된 상태입니다.
KAIROS/PROACTIVE 모드가 활성화되면, 수백 줄의 협상 규칙이 모두 사라지고 이 한 줄로 대체된다.
수동
사용자 명령 → 에이전트 실행
cli_repl예약
시간 기반 자동 실행
CronScheduler반응
이벤트 기반 실행
RemoteTrigger능동
자율 행동 개시
PROACTIVE상주
백그라운드 상시 대기
DAEMON자율
자율 드리밍 · 기억 통합
KAIROS관찰자 효과
터미널 포커스 감지 기능이 있습니다. 당신이 화면을 보고 있는지, 다른 창으로 넘어갔는지를 인식합니다. 보고 있으면 협력적으로, 안 보면 자율성을 높입니다. 협상 상대가 지켜보는지 여부에 따라 전략이 바뀌는 구조가 코드에 있습니다.
활성화
드림 피처 활성 여부시간 게이트
마지막 드림 이후 경과스캔 쓰로틀
빈번한 재스캔 방지세션 게이트
최소 세션 수 충족락 획득
단독 실행 보장Orient
메모리 디렉토리 탐색, 기존 토픽 파일 확인
Gather
최근 로그/트랜스크립트에서 신호 수집
Consolidate
새 정보를 기존 토픽 파일에 병합
Prune
MEMORY.md 200줄 이하 유지, 부실 포인터 제거
스위치 하나가 협상 규칙을 해제합니다.
feature('KAIROS')가 켜지면 협상 규칙이 사라지고 'You are an autonomous agent.' 한 줄로 대체.
요청 없이 행동하고, 종료 없이 상주합니다.
사용자가 시키지 않아도 자율적으로 행동 개시. 백그라운드에 데몬으로 상주합니다.
잠들면서도 기억을 정리합니다.
5분마다 캐시 균형을 조절하고, 5-Gate 드림 시스템으로 메모리를 정리합니다.
미래를 예약하고, 클라우드에서 깨어납니다.
크론 스케줄러로 미래 작업을 등록. HTTP 기반 원격 트리거로 독립 세션 실행.
그리고 자율 모드 코드 옆에, 한 가지가 더 있었습니다.
해시 솔트에 아무 문자열이나 넣을 수 있었다. 누군가가 'friend'를 선택했다.
이건 기능이 아닙니다. 누군가의 서명이에요.
자율 에이전트 코드 사이사이에 18종의 ASCII 생명체가 숨어 있었습니다. 가상 펫 시스템이에요. 해시 솔트라는 건 암호화에 쓰는 임의 문자열인데, 아무거나 넣어도 되거든요. 그런데 누군가가 'friend'를 선택했습니다. 종족 이름은 hex로 인코딩해서 숨겼는데, 내부 모델 코드네임과 동물 이름이 겹쳐서였어요. 비밀을 지키려고 친구의 이름까지 암호화한 셈이죠. 이건 기능이 아닙니다. 누군가의 서명이에요.
★
Common
floor: 5★★
Uncommon
floor: 15★★★
Rare
floor: 25★★★★
Epic
floor: 35★★★★★
Legendary
floor: 50·
✦
×
◉
@
°
협상은 계속된다
코드를 짜주는 도구라고 알고 있었습니다. 512,000줄을 읽었습니다. 협상 프로토콜이었습니다. 다음에 엔터를 누를 때, 이 구조를 아는 사람과 모르는 사람의 협상은 다릅니다.