AN-06 L3 準拠レベル: Guard グループ: 権限
Trust Labels トラスト・ラベル
2 つの小さなラベルとセッション汚染で、Rule of Two を実現します。
Trust Labels は、データに付ける 2 つのごく小さなラベル集合、出どころ(owner、agent、external)と 機微度(public、private、secret)、そして セッション汚染 です。NAS は、Rule of Two をセッションの不変条件として強制します。1 つのセッションが、[A] 外部コンテンツを読んだ、[B] 機微なデータに触れる、[C] 保護された状態を変更する、または外部へ通信する、の 3 つをすべて持つことはできません。3 つ目を満たすには Human Gate が必要です。
解決する課題
プロンプトインジェクションが成り立つのは、モデルが「指示」と「データ」を区別できないからです。モデル層の防御(分類器、プロンプトの強化)は漏れがあり、攻撃者は適応します。2025 年 10 月の終わりに、Meta は Agents Rule of Two を提案しました。インジェクションが確実に解決されるまで、1 つのセッションが持つ性質は、3 つのうち多くても 2 つにとどめるべきだ、というものです。
より信頼できるのは、被害をモデルの 外側 で限定する方法です。ストレージは、すべての読み書きが通る場所であり、このルールを検証可能な不変条件にするのに、自然な場所です。
仕組み
- ラベル。 3 つの出どころ、3 つの機微度、そして
reviewedフラグ(ゲートの承認で立ちます)。取り込み口(ウェブページ、メール、アップロード)は既定でexternalになります。シークレットスキャナーが認証情報を見つけたときは、自動でsecretとラベルづけします。 - セッション汚染。 実行が読んだすべてのもの(読み取りマニフェストから)の要約です。セッションの中では増える一方で、新しいセッションはきれいな状態から始まります。
- 不変条件。 A = セッションが
externalを読んだ。B = リースがprivate以上を読める(しきい値は設定可能)。C = リースが、保護ツリーへのマージの提案、共有、削除、データの送出を行える。1 つのセッションでこの 3 つがそろったとき、C を起動する呼び出しは拒否されるか、ゲートに回されます。 - 実際には: B と C の両方を持つリースの下では、セッションが外部コンテンツを一度読むと、それ以降の C 型の操作にはすべて人間が必要になります。この摩擦を避けるには、「外部コンテンツを読む」作業を B のない別のセッションで行い、結果は構造化されたハンドオフだけで渡します。
- 伝播。 NAS 自身が行う導出(インデックス、要約)は、入力ラベルの和集合を決定的に引き継ぎます。実行が書くファイルは、その実行のセッション汚染を引き継ぎます(保守的な選択です)。
- 格下げ(declassification)。 Human Gate を通すか、構造化されたハンドオフ によります。汚染されたセッションの出力を、JSON Schema で検証されたフィールド(列挙値、ID、長さに上限のある文字列)に限定し、検証後にはじめて特権セッションが読めるようにします。信頼できるのは、決定的に検証できるものだけです。
- 強制はゲートウェイとマウントで行います(リースとセッションを知っている場所です)。モデルの中ではありません。
小さく始める
- やることは 2 つだけです。取り込みディレクトリのファイルに
externalとラベルをつけること、そしてexternalを読んだ実行には、既定で、ゲートなしの外向きの送出と保護されたマージを認めないことです。 - ポリシーは Cedar か Rego の決定的なルールで書き、拒否するときは読める理由を返します。
- まず 1 週間「ログのみ」で動かし、誤って何をブロックしそうかを確認してから、強制を有効にします。
インターフェースのスケッチ
説明用の例です。フィールド名は仕様 v0.3 までに変わる可能性があります。
# Deterministic policy (Cedar- or Rego-style rules can express the same thing)
session_invariant: rule_of_two
properties:
A: session.read_origin includes "external"
B: lease.sensitivity_max >= "private"
C: lease allows propose_protected | share | delete | egress
on_would_complete_ABC: gate # never "allow"
rules:
- id: r-merge-1
when: session.A and op == "merge" and target.protected
then: gate
- id: r-secret-1
when: session.read_sensitivity == "secret" and op == "egress"
then: deny 仕様が求めること
- すべての取り込み口は、既定のラベルを割り当てなければならない。外部コンテンツには
externalとラベルをつけなければならない。 - セッション汚染は、セッションの中で増える一方でなければならない。
- ポリシーの評価は決定的でなければならず、LLM を呼び出してはならない。
- セッションが A+B+C を満たしてしまう呼び出しは、拒否するか、ゲートに回さなければならない。
- 格下げは、ゲートか、スキーマで検証された構造化ハンドオフを通さなければならない。
- 導出データは、入力ラベルの和集合を引き継がなければならない。
借りたものと、新しいもの
以下はすべて確立された考え方です。新しいのは、 読み取りマニフェストを使って、セッション汚染を ストレージの境界 に実装すること、そしてラベルを記憶への書き込みと導出データに適用することです。ラベルの格子はあえて 3×3 にとどめています。細かい格子は、実際にはラベルの爆発を招くからです。OpenClaw はすでに、1 つのランタイムの内側で出どころのラベルと隔離を行っています。私たちとの違いは、これを共有ストレージに置くことだけです。
- Agents Rule of Two (Meta)
- The lethal trifecta
- CaMeL
- Fides
- Design Patterns for Securing LLM Agents against Prompt Injections
- OpenClaw memory architecture
正直な限界
- これはプロンプトインジェクションへの防御では ありません。被害を限定するものです。
- NAS は、自分の外にあるツール(ブラウザ、メール)を見られないため、ランタイムの協力が必要です。
- 汚染は保守的なので、摩擦と誤検知を生みます。構造化スキーマの外にある自由記述のテキストは、攻撃者の言葉を運びうるままです。
- 隠れチャネルはなくせません。
未解決の問い
- ラベルの粒度は、ファイルか、段落か。
- テナントをまたいで、ラベルの語彙をどう統治するか。
- 誤検知をどう減らすか。
よくある質問
Rule of Two で、プロンプトインジェクションは止まりますか?
インジェクションが起きること自体は止めません。インジェクションされたセッションが、「信頼できない内容を読んだ」「機微なデータに触れる」「保護された状態を変えられる、またはデータを送出できる」の 3 つすべてを持てない ようにして、被害を限定します。Meta 自身も、これはリスクを減らす経験則であって、最小権限の代わりにはならないと強調しています。
なぜ、出どころが 3 つ、機微度が 3 つだけなのですか?
細かいラベルの格子は膨らみやすく、実際には切られてしまうからです。3×3 あれば「誰が書いたか、どのくらい機微か」を言うのに十分で、拒否の理由も理解しやすくなります。それ以上の細かい区分は、パスとリースでできます。
セッション汚染のせいで、エージェントは何もできなくなりませんか?
制限するのは、保護ツリーの変更、共有または削除、データの送出という 3 種類の操作だけです。ブランチの中での読み書きには影響しません。摩擦を避けるには、外部コンテンツを読む作業を、機微なデータのないセッションで行い、スキーマで検証した結果だけを戻します。
関連するコンセプト
- Human Gate (ヒューマン・ゲート) 元に戻せない、外へ出る、権限を広げる操作の前にだけ現れ、実際の差分を見せます。
- Agent Memory (エージェントの記憶) 読んで直せるノートが真実で、索引は捨てられるキャッシュです。
- Capability Lease (ケイパビリティ・リース) 1 回の実行のための、期限と予算つきの狭い認可。子リースは、より狭くしかできません。
このページを引用する
読者・検索エンジン・エージェントのための恒久的な URL と、推奨する引用形式です。
- 推奨する引用形式
- Agent NAS project. “Trust Labels (トラスト・ラベル).” agentnas.com, 2026-11-11. https://agentnas.com/ja/concepts/trust-labels/