125 lines
4.6 KiB
Markdown
125 lines
4.6 KiB
Markdown
# テレメトリおよびプライバシー分析
|
||
|
||
> 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がハッシュ化されサーバー側の相関分析に使用される
|