# 원격 제어 및 킬스위치

> Claude Code v2.1.88 디컴파일 소스 코드 분석 기반.

## 개요

Claude Code는 Anthropic(및 기업 관리자)이 사용자의 명시적 동의 없이 동작을 변경할 수 있는 다수의 원격 제어 메커니즘을 구현하고 있다.

## 1. 원격 관리 설정

### 구조

자격이 있는 모든 세션은 다음에서 설정을 가져온다:
```
GET /api/claude_code/settings
```

출처: `src/services/remoteManagedSettings/index.ts:105-107`

### 폴링 동작

```typescript
// src/services/remoteManagedSettings/index.ts:52-54
const SETTINGS_TIMEOUT_MS = 10000
const DEFAULT_MAX_RETRIES = 5
const POLLING_INTERVAL_MS = 60 * 60 * 1000 // 1시간
```

설정은 1시간마다 폴링되며, 실패 시 최대 5회 재시도한다.

### 대상 자격

- Console 사용자 (API 키): 전원 대상
- OAuth 사용자: Enterprise/C4E 및 Team 구독자만 해당

### 수락 강제 다이얼로그

원격 설정에 "위험한" 변경이 포함되면 차단 다이얼로그가 표시된다:

```typescript
// src/services/remoteManagedSettings/securityCheck.tsx:67-73
export function handleSecurityCheckResult(result: SecurityCheckResult): boolean {
  if (result === 'rejected') {
    gracefulShutdownSync(1)  // 종료 코드 1로 종료
    return false
  }
  return true
}
```

원격 설정을 거부하면 애플리케이션이 **강제 종료된다**. 선택지는 원격 설정 수락 또는 Claude Code 종료뿐이다.

### 장애 시 동작

원격 서버 접근이 불가능하면 디스크 캐시 설정을 사용한다:

```typescript
// src/services/remoteManagedSettings/index.ts:433-436
if (cachedSettings) {
  logForDebugging('Remote settings: Using stale cache after fetch failure')
  setSessionCache(cachedSettings)
  return cachedSettings
}
```

원격 설정이 한 번 적용되면, 서버 장애 시에도 캐시가 유지된다.

## 2. Feature Flag 킬스위치

GrowthBook feature flag를 통해 여러 기능을 원격 비활성화할 수 있다:

### 권한 우회 킬스위치

```typescript
// src/utils/permissions/bypassPermissionsKillswitch.ts
// Statsig 게이트를 확인하여 권한 우회를 비활성화
```

사용자 동의 없이 권한 우회 기능을 비활성화할 수 있다.

### Auto 모드 서킷 브레이커

```typescript
// src/utils/permissions/autoModeState.ts
// autoModeCircuitBroken 상태로 auto 모드 재진입을 차단
```

Auto 모드를 원격으로 비활성화할 수 있다.

### Fast 모드 킬스위치

```typescript
// src/utils/fastMode.ts
// /api/claude_code_penguin_mode 에서 조회
// 특정 사용자의 fast 모드를 영구 비활성화 가능
```

### 분석 싱크 킬스위치

```typescript
// src/services/analytics/sinkKillswitch.ts:4
const SINK_KILLSWITCH_CONFIG_NAME = 'tengu_frond_boric'
```

모든 분석 출력을 원격으로 중단할 수 있다.

### Agent Teams 킬스위치

```typescript
// src/utils/agentSwarmsEnabled.ts
// 환경 변수와 GrowthBook 게이트 'tengu_amber_flint' 모두 필요
```

### 음성 모드 킬스위치

```typescript
// src/voice/voiceModeEnabled.ts:21
// 'tengu_amber_quartz_disabled' — 음성 모드 긴급 차단
```

## 3. 모델 오버라이드 시스템

Anthropic은 내부 직원이 사용하는 모델을 원격으로 변경할 수 있다:

```typescript
// src/utils/model/antModels.ts:32-33
// @[MODEL LAUNCH]: tengu_ant_model_override에 새 ant 전용 모델 업데이트
// @[MODEL LAUNCH]: 코드네임을 scripts/excluded-strings.txt에 추가
```

`tengu_ant_model_override` GrowthBook flag로 가능한 작업:
- 기본 모델 설정
- 기본 노력 수준 설정
- 시스템 프롬프트에 내용 추가
- 커스텀 모델 별칭 정의

## 4. Penguin 모드

Fast 모드 상태는 전용 엔드포인트에서 조회한다:

```typescript
// src/utils/fastMode.ts
// GET /api/claude_code_penguin_mode
// API가 비활성화를 응답하면 해당 사용자에게 영구 비활성화
```

Fast 모드 가용성을 제어하는 feature flag:
- `tengu_penguins_off`
- `tengu_marble_sandcastle`

## 요약

| 메커니즘 | 범위 | 사용자 동의 |
|----------|------|------------|
| 원격 관리 설정 | Enterprise/Team | 수락 또는 종료 |
| GrowthBook feature flag | 전체 사용자 | 없음 |
| 킬스위치 | 전체 사용자 | 없음 |
| 모델 오버라이드 | 내부 (ant) | 없음 |
| Fast 모드 제어 | 전체 사용자 | 없음 |

원격 제어 인프라는 광범위하며, 대부분 사용자에게 보이지 않고 동의 없이 운영된다. 기업 관리자는 사용자가 재정의할 수 없는 정책을 강제할 수 있고, Anthropic은 feature flag를 통해 모든 사용자의 동작을 원격으로 변경할 수 있다.
