Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help

セキュリティモデル

ZeroClawのセキュリティモデルは、エージェントが実行時に許可される操作を制御します。6つの層があり、外側から内側への順は次のとおりです。

チャネルのペアリングとアクセス制御

チャネルからのメッセージがエージェントに届く前に、そのチャネルのペアリングと許可リストがチェックされます。allowed_usersallowed_chats、Webhook向けのIP許可リストは、すべてランタイムがイベントを認識する前に、チャネルアダプターで適用されます。

各チャンネルのページは チャンネル の下にあります。

自律レベル

粗い粒度のノブ。3つの設定:

  • ReadOnly: エージェントは観察(ファイルの読み取り、メモリの照会、許可されたURLの取得)はできますが、コマンドの書き込みや実行はできません。
  • 監視あり(デフォルト):低リスクの操作は実行され、中リスクの操作はオペレーターに確認し、高リスクの操作はブロックされます。
  • Full: 承認ゲートなし。workspace_only は暗黙的に無効化されます。forbidden_pathsforbidden_commands、および OS サンドボックスは引き続き適用されます。

ドキュメント: 自律レベル

ワークスペースの境界とパスのルール

エージェントは設定されたワークスペースディレクトリ内で動作します。file_readfile_write、およびファイルシステムにアクセスするコマンド用の shell は、workspace_only = false でない限り、そのディレクトリ外のパスを拒否します。

セッションごとのサンドボックスルート(ACP およびゲートウェイ WebSocket): セッションが ACP(cwd パラメータ付きの session/new)またはゲートウェイ WebSocket(接続時の cwd パラメータ)経由で開かれると、そのパスがセッションのライフタイム全体にわたって、すべてのファイルツールおよびシェルツールの SecurityPolicy ワークスペース境界になります。デーモンのグローバルな workspace_dir は、メモリ、アイデンティティ、cron、その他の永続的な状態のためのデータディレクトリのままです。モデルは次のとおりです: session cwd = エージェントが操作できるプロジェクト境界、workspace_dir = ZeroClaw が自身のファイルを保存する場所。注意: エージェントのシステムプロンプトは現在、セッションの cwd ではなくデーモンの workspace_dir を反映しています。強制は正しく行われますが、モデルが自己申告する場所は異なる場合があります。

重要: cwd パラメーターは、エージェントがサンドボックス化される ZeroClaw ホスト 上のディレクトリを変更しますが、ツールが実行されるマシンには影響しません。ツールの使用(シェルコマンド、ファイルの読み書き)は、常に ZeroClaw を実行しているマシン上で実行されます。ゲートウェイの WebSocket 経由でリモートの ZeroClaw インスタンスに接続する場合、ツール呼び出しはローカルマシンではなくリモートマシンのファイルシステムに対して操作を行います。localhost のみのデプロイメントではこの区別は重要ではありませんが、リモート構成ではこれを考慮する必要があります。

ワークスペース以外では、forbidden_paths のデフォルトに /etc/sys/boot~/.ssh、その他の機密性の高いルートが含まれます。絶対パスの許可エントリと禁止エントリでは、コンポーネント単位のプレフィックスの具体性が使用されます。一致するエントリのうち最も具体的なものが優先され、同じ深さで競合する場合は禁止が優先されます。これにより、ネストされた禁止サブツリーでワークスペースの一部や許可されたルートをブロックしつつ、/home のような広範なデフォルトによって、オペレーターが構成したより限定的な許可が上書きされるのを防げます。

シェルコマンドポリシー

シェル呼び出しの場合:

  • allowed_commands: 空でない場合、シェルはこのリストにベース名が含まれるコマンドのみを実行します
  • forbidden_commands: 明示的な拒否リスト(rm -rf /shutdown、カーネル操作)
  • validate_command_execution: 危険なフラグ、パイプライン、引数の形状を検出するパターンマッチングパス

バリデーターは、コマンドがシェルに到達する前に実行されます。ブロックされたコマンドは、モデルが確認して対応できるツールエラーとして表示されます。

OSレベルのサンドボックス

サンドボックスバックエンドが利用可能な場合、ツール呼び出しはその内部で実行されます:

プラットフォームデフォルトのバックエンド
LinuxLandlock (カーネル) / Bubblewrap / Firejail / Docker、自動検出
macOSシートベルト(ネイティブ)
WindowsAppContainer(実験的)
任意Docker(デーモンに到達可能な場合)

サンドボックスは、ファイルシステムへのアクセスをワークスペースに制限し、ツールが明示的に必要とするもの以外のネットワーク到達性を削除し、親プロセスのシークレットへのアクセスを削除します。

ドキュメント: サンドボックス化

ツール実行レシート

ツールレシートは、成功したツール呼び出しとその結果がランタイムを通過したことを示す HMAC 証跡を提供します。レシートが有効な場合、成功したツール出力には呼び出しと結果に対する HMAC-SHA256 レシートが付与され、そのレシートはツール結果とともに会話へフィードバックされます。

レシートは、捏造されたツールクレームを検出するのに役立ちます。現時点では、連鎖された、あるいは永続的な監査ログではありません。レシートキーは一時的なものであり、レシートは会話ハッシュとクロス署名されておらず、永続的なレシートストレージは今後の作業として残されています。

ドキュメント: ツールレシート

追加のゲート

6つのレイヤーを超えて:

  • OTPゲーティング: [security.otp] gated_actions = ["shell", "browser", "file_write"] は、リストされた各アクションの前にワンタイムコードを要求します。リモートアクセスのシナリオで便利です。
  • 緊急停止: zeroclaw estop は実行中のすべてのツール呼び出しを停止します。[security.estop] enabled = true の場合、再開には OTP が必要です。
  • プロンプトインジェクションガード: ツール呼び出しが検証される前に、既知のインジェクションパターンがないかモデル出力をスキャンします。
  • リーク検出器: アウトバウンドチャネルのレスポンスを認証情報についてスキャンし、配信前に一致箇所をマスクします。決定論的な認証情報パターンをカバーし、スタンドアロンの高エントロピートークンヒューリスティックも実行できます。
  • ペアリングガード: チャネル認証のためのデバイスペアリング。盗まれた認証情報が新しいデバイスで使用されるのを防ぎます。

リーク検出器の設定

アウトバウンドリーク検出を独自の TOML セクションで設定する:

[security.leak_detection]
enabled = true
sensitivity = 0.7
high_entropy_tokens = true

enabled = false は送信リークディテクター全体を無効化します。high_entropy_tokens = false はスタンドアロンのエントロピーヒューリスティックのみを無効化し、決定論的な認証情報パターンは引き続き実行されます。sensitivity0.0 から 1.0 までの値を受け付け、値が高いほどより積極的になります。

完全なフィールドテーブルとデフォルト値はConfig リファレンスにあります。

問題が発生した場合

ブロックされたツール呼び出しは、静かに失敗しません:

  1. セキュリティバリデータがエラーを返しました
  2. ランタイムはそれを ToolResult::Err としてラップし、モデルに返します。
  3. モデルは「エラー: シェルコマンドはポリシーによってブロックされました: 禁止パターン rm -rf /」と表示し、再試行、謝罪、またはユーザーに問い合わせることができます。

ツールが [autonomy].non_cli_excluded_tools(非CLIチャネルをグループとして制御します)を介してチャネルから除外されている場合、そのツールはこれらのチャネル上でモデルに通知されません。モデルは使用できないツールを認識することはありません。

デフォルトの姿勢

デフォルトで:

  • 自律性: 教師あり
  • ワークスペースのみ: true
  • サンドボックス: 自動検出(OSが提供するものを使用)
  • 監査ログ: false (明示的に有効化)
  • OTP: false
  • E-stop: false

これはノートパソコンには十分に安全で、過度に制約を与えない、妥当な落としどころです。本番環境ではより厳格に(OTP、監査、ツールの制限)、開発用マシンでは YOLO まで緩めることができます。