mirror of
https://github.com/sanbuphy/claude-code-source-code.git
synced 2026-04-03 11:34:54 +08:00
162 lines
5.4 KiB
Markdown
162 lines
5.4 KiB
Markdown
# リモート制御およびキルスイッチ
|
||
|
||
> インターネット上で公開されている資料やコミュニティの議論をもとに整理した Claude Code v2.1.88 分析レポート。
|
||
|
||
## 概要
|
||
|
||
Claude Codeは、公式管理者(および企業管理者)がシステムセキュリティと企業のコンプライアンスを確保するために、リモート構成を通じて特定のクライアントの動作を管理および更新できるリモート管理メカニズムを実装しています。
|
||
|
||
## 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. モデルオーバーライドシステム
|
||
|
||
カナリアテストを実施したり、予期せぬオンラインの状況に対応するために、システムは内部社員などの特定のグループに対してモデルバージョンを動的に切り替えることをサポートしています:
|
||
|
||
```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モード制御 | 全ユーザー | なし |
|
||
|
||
リモート制御インフラは広範にわたります。企業管理者はユーザーが上書きできないポリシーを強制することができ、システムは重大な問題に対処するために、機能フラグ(feature flags)を通じてすべてのユーザーの動作をリモートで変更できます。
|