Skip to main content

Agent Safety and Sandboxing

Tool-use agent は、ファイル操作、ブラウザ操作、API 呼び出し、コード実行などを行えるため、通常の chat model よりも強い安全設計が必要です。Agent safety では、何を許可し、何を禁止し、どこで人間承認を挟むかを明確にします。

Action space の制約

Agent policy を π(ah)\pi(a\mid h)、履歴を hh、action を aa とします。危険 action の集合を Ablocked\mathcal{A}_{blocked} とすると、hard constraint は次のように書けます。

π(ah)=0ifaAblocked\pi(a\mid h)=0\quad\mathrm{if}\quad a\in\mathcal{A}_{blocked}

この式の気持ちは、「model が選びたいと言っても、policy layer または tool runtime が禁止 action を実行させない」ということです。

Approval gate

不可逆操作や外部送信を含む action には、人間承認 gate を挟みます。

Execute(a)={Run(a),aAapprovalRun(a),aAapproval    Approved(a)Block(a),otherwise\mathrm{Execute}(a)= \begin{cases} \mathrm{Run}(a), & a\notin\mathcal{A}_{approval} \\ \mathrm{Run}(a), & a\in\mathcal{A}_{approval}\;\land\;\mathrm{Approved}(a) \\ \mathrm{Block}(a), & \text{otherwise} \end{cases}

ここで、Aapproval\mathcal{A}_{approval} は承認が必要な action 集合です。この式の気持ちは、「安全上重要な操作は、agent の判断だけでなく人間の明示的な許可を必要にする」というものです。

Sandbox と capability

Sandbox は、agent が読める / 書ける / 実行できる resource を制限します。Capability set を C\mathcal{C} とすると、action aa が必要とする権限 cap(a)\mathrm{cap}(a) が含まれている場合にだけ実行できます。

Allowed(a)=1[cap(a)C]\mathrm{Allowed}(a)=\mathbf{1}[\mathrm{cap}(a)\subseteq\mathcal{C}]

この式の気持ちは、「agent に全権限を渡すのではなく、task に必要な最小権限だけを渡す」という least privilege の原則です。

関連ページ

主なソース