Files
claude-code-source-code/docs/ja/04-リモート制御とキルスイッチ.md

162 lines
5.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# リモート制御およびキルスイッチ
> 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を通じてすべてのユーザーの動作をリモートで変更できる。