エージェント安全性アーキテクチャ
概要
エージェント安全性アーキテクチャは、AI Dev Agentが開発環境と対話するときに安全に動作することを保証します。
エージェントは以下を実行できるため:
- ファイルの変更
- シェルコマンドの実行
- ビルドとテストの実行
- バージョン管理との連携
意図しない、または破壊的なアクションのリスクがあります。
安全システムは、エージェントが自律的に動作できるようにしながら、潜在的なダメージを制限するガードレールを導入します。
このアーキテクチャは以下のメカニズムを定義します:
- 危険な操作の制限
- リポジトリの整合性の保護
- 暴走ループの防止
- 必要な場合の人間の監督の確保
安全原則
安全アーキテクチャはいくつかのコア原則に基づいています。
最小権限
エージェントはタスクを完了するために必要な最小限の権限のみを持つべきです。
例:
ドキュメントタスクにはシェル実行権限が必要ではありません。
明示的な境界
エージェントは明確に定義された境界内で動作しなければなりません。
例:
- ワークスペースディレクトリ
- 許可されたツール
- 許可されたコマンド
可観測性
すべての潜在的に危険な操作はログに記録され追跡可能でなければなりません。
人間によるオーバーライド
人間はいつでもエージェントの実行に介入して停止できる必要があります。
安全レイヤー
安全システムは複数のレイヤーで構成されています。
ユーザー設定
│
▼
権限システム
│
▼
ツールガードレール
│
▼
実行サンドボックス
│
▼
ランタイム安全チェック各レイヤーは異なるタイプの失敗から保護します。
権限システム
権限システムはエージェントが何を実行できるかを制御します。
権限は能力フラグとして定義されます。
例:
type PermissionSet = {
filesystemRead: boolean
filesystemWrite: boolean
shellExecution: boolean
gitWrite: boolean
networkAccess: boolean
}異なる実行モードは異なる権限セットを使用する場合があります。
モード例:
| モード | 機能 |
|---|---|
| read_only | ファイルの読み取りのみ |
| development | リポジトリの読み書き |
| ci | テストとビルドの実行 |
| full | 無制限 |
これにより、不必要な権限が付与されることを防ぎます。
ワークスペース分離
エージェントは定義されたワークスペース内のファイルのみを変更すべきです。
例:
/workspace/project/ワークスペース外のパスへのアクセス試みは拒否されるべきです。
ブロックされるパス例:
/etc/passwdワークスペース分離により、偶発的なシステム変更が防止されます。
ファイルシステムガードレール
ファイルシステム操作は検証されなければなりません。
チェック内容:
- パス正規化
- ワークスペース境界の検証
- 保護ファイルの検出
保護ファイル例:
.git/config
.env
secrets.jsonエージェントは明示的に許可されない限り、機密ファイルを変更すべきではありません。
Git安全性
バージョン管理操作には特別な保護が必要です。
主な保護:
保護ブランチ
エージェントは保護ブランチに直接プッシュすべきではありません。
例:
main
production代わりに、エージェントはフィーチャーブランチを作成すべきです。
例:
agent/cache-implementationコミットレビュー
オプションで、コミットはマージ前に人間の承認が必要な場合があります。
変更制限
大きなdiffは追加の検証が必要な場合があります。
例:
最大変更ファイル数: 50これにより、大規模な偶発的変更が防止されます。
シェルコマンド制限
シェル実行は最も危険な機能の一つです。
システムは制限を強制すべきです。
許可されるコマンド例:
npm test
bun test
cargo buildブロックされるコマンド例:
rm -rf /
shutdown
rebootコマンド検証には以下を使用できます:
- 許可リスト
- ブロックリスト
- コマンドパターンマッチング
実行サンドボックス
一部の操作は分離された環境で実行すべきです。
例:
- テストの実行
- ビルドスクリプトの実行
- ユーザーコードの実行
サンドボックス方法には以下が含まれる場合があります:
- コンテナ
- 制限シェル
- 一時ディレクトリ
これにより、安全でないコード実行の影響が制限されます。
イテレーション制限
エージェントループは暴走実行を防ぐための制限が必要です。
設定例:
maxIterations: 50
maxRuntime: 10分制限を超えた場合、実行は停止すべきです。
エージェントはその後以下を行うことがあります:
- 進捗をまとめる
- 人間の支援を要求する
失敗検出
システムは繰り返し失敗を検出すべきです。
シグナル例:
- 繰り返しのテスト失敗
- 繰り返しのビルド失敗
- 繰り返しのツールエラー
ポリシー例:
同じ失敗が3回発生した場合、
実行を一時停止してレビューを要求する。これにより無限エラーループが防止されます。
破壊的アクション検出
一部のアクションは取り消せない結果をもたらす可能性があります。
例:
- 大量のファイル削除
- Gitブランチへのフォースプッシュ
- 設定ファイルの上書き
システムはこれらのアクションを検出して確認を要求すべきです。
例:
200ファイルの削除が検出されました。
人間の承認が必要です。レート制限
システムは特定の操作の頻度を制限することがあります。
例:
- ツール実行
- リポジトリの変更
- 外部APIリクエスト
レート制限は暴走自動化を防ぐのに役立ちます。
ログと監査
エージェントが実行したすべてのアクションはログに記録されなければなりません。
重要なログフィールド:
- タイムスタンプ
- 呼び出されたツール
- 入力パラメーター
- 結果
- エラーメッセージ
ログにより、開発者はエージェントの動作を監査できます。
ログエントリー例:
[2026-03-09 12:14:03]
tool: write_file
path: src/cache/CacheClient.ts
result: success人間承認ワークフロー
一部の操作は明示的な承認が必要な場合があります。
例:
- 大規模なリファクタリング
- 依存関係のアップグレード
- 本番設定の変更
ワークフロー例:
エージェントが変更を提案
↓
人間によるレビュー
↓
承認
↓
エージェントが変更を実行これにより、高リスク操作に対する人間の制御が維持されます。
緊急停止
システムはエージェント実行の即時終了をサポートしなければなりません。
トリガー例:
- ユーザーによる割り込み
- 安全違反
- リソース枯渇
緊急停止は以下を即時に停止すべきです:
- ツール実行
- エージェントループのイテレーション
- バックグラウンドプロセス
可観測性
安全システムはメトリクスとアラートを公開すべきです。
例:
- ブロックされたアクションの数
- 権限違反
- 安全によってトリガーされた一時停止
これらのメトリクスはシステムの健全性の監視に役立ちます。
将来の改善
可能な拡張:
- 機械学習によるリスク検出
- 動的権限調整
- エージェント動作の異常検出
- 人間とエージェントの協調レビューシステム
これらの改善により、運用リスクがさらに削減される可能性があります。
まとめ
エージェント安全性アーキテクチャは、AI Dev Agentによる意図しないアクションから開発環境を保護します。
主なメカニズム:
- 権限制御
- ワークスペース分離
- ファイルシステムガードレール
- Git安全ポリシー
- シェルコマンド制限
- サンドボックス実行
- イテレーション制限
- 人間承認ワークフロー
これらのレイヤーを組み合わせることで、システムは安全と制御を維持しながら自律開発を可能にします。