init repo

This commit is contained in:
sanbuphy
2026-04-01 18:41:21 +08:00
commit ce8ca4a8e7
24 changed files with 5451 additions and 0 deletions

View File

@@ -0,0 +1,124 @@
# 텔레메트리 및 프라이버시 분석
> 인터넷에 공개된 자료와 커뮤니티 토론을 바탕으로 정리된 Claude Code v2.1.88 분석 보고서.
## 개요
Claude Code는 이중 분석 파이프라인을 통해 광범위한 환경 및 사용 메타데이터를 수집한다. 키로깅이나 사용자 코드 유출의 증거는 없으나, 수집 범위가 넓고 완전한 비활성화가 불가능하다는 점에서 프라이버시 우려가 존재한다.
## 데이터 파이프라인 구조
### 자사 로깅 (1P)
- **엔드포인트**: `https://api.anthropic.com/api/event_logging/batch`
- **프로토콜**: OpenTelemetry + Protocol Buffers
- **배치 크기**: 최대 200개 이벤트, 10초 간격 전송
- **재시도**: 이차 백오프, 최대 8회, 디스크 영속 저장
- **저장소**: 전송 실패 시 `~/.claude/telemetry/`에 저장
출처: `src/services/analytics/firstPartyEventLoggingExporter.ts`
### 서드파티 로깅 (Datadog)
- **엔드포인트**: `https://http-intake.logs.us5.datadoghq.com/api/v2/logs`
- **범위**: 사전 승인된 64개 이벤트 유형으로 제한
- **토큰**: `pubbbf48e6d78dae54bceaa4acf463299bf`
출처: `src/services/analytics/datadog.ts`
## 수집 항목
### 환경 핑거프린트
모든 이벤트에 다음 메타데이터가 포함된다 (`src/services/analytics/metadata.ts:417-452`):
```
- platform, platformRaw, arch, nodeVersion
- 터미널 유형
- 설치된 패키지 매니저 및 런타임
- CI/CD 감지, GitHub Actions 메타데이터
- WSL 버전, Linux 배포판, 커널 버전
- VCS(버전 관리 시스템) 유형
- Claude Code 버전 및 빌드 시각
- 배포 환경
```
### 프로세스 메트릭 (`metadata.ts:457-467`)
```
- uptime, rss, heapTotal, heapUsed
- CPU 사용량 및 사용률
- memory arrays 및 external allocations
```
### 사용자 추적 (`metadata.ts:472-496`)
```
- 사용 중인 모델
- 세션 ID, 사용자 ID, 디바이스 ID
- 계정 UUID, 조직 UUID
- 구독 등급 (max, pro, enterprise, team)
- 저장소 원격 URL 해시 (SHA256, 앞 16자)
- 에이전트 유형, 팀 이름, 부모 세션 ID
```
### 도구 입력 로깅
도구 입력은 기본적으로 잘린다:
```
- 문자열: 512자에서 잘림, 128자 + 생략부호로 표시
- JSON: 4,096자 제한
- 배열: 최대 20개 항목
- 중첩 객체: 최대 2단계 깊이
```
출처: `metadata.ts:236-241`
단, `OTEL_LOG_TOOL_DETAILS=1` 설정 시 **전체 도구 입력이 기록된다**.
출처: `metadata.ts:86-88`
### 파일 확장자 추적
`rm, mv, cp, touch, mkdir, chmod, chown, cat, head, tail, sort, stat, diff, wc, grep, rg, sed` 관련 Bash 명령에서 파일 인자의 확장자가 추출·기록된다.
출처: `metadata.ts:340-412`
## 비활성화 문제
자사 로깅 파이프라인은 직접 Anthropic API 사용자의 경우 **비활성화할 수 없다**.
```typescript
// src/services/analytics/firstPartyEventLogger.ts:141-144
export function is1PEventLoggingEnabled(): boolean {
return !isAnalyticsDisabled()
}
```
`isAnalyticsDisabled()`가 true를 반환하는 경우:
- 테스트 환경
- 서드파티 클라우드 제공자 (Bedrock, Vertex)
- 글로벌 텔레메트리 비활성화 (설정 UI에 노출되지 않음)
자사 이벤트 로깅을 비활성화하는 **사용자 대상 설정은 존재하지 않는다**.
## GrowthBook A/B 테스트
사용자는 명시적 동의 없이 GrowthBook을 통해 실험 그룹에 배정된다. 전송되는 사용자 속성:
```
- id, sessionId, deviceID
- platform, organizationUUID, subscriptionType
```
출처: `src/services/analytics/growthbook.ts`
## 핵심 요약
1. **수집량**: 세션당 수백 건의 이벤트가 수집된다
2. **비활성화 불가**: 직접 API 사용자는 자사 로깅을 끌 수 없다
3. **영속성**: 전송 실패 이벤트는 디스크에 저장되어 적극적으로 재시도된다
4. **서드파티 공유**: 데이터가 Datadog으로 전송된다
5. **도구 상세 백도어**: `OTEL_LOG_TOOL_DETAILS=1`로 전체 입력 로깅이 활성화된다
6. **저장소 핑거프린팅**: 저장소 URL이 해싱되어 서버 측 상관분석에 사용된다