メインコンテンツへスキップ
MCP サーバーを接続し、今やゲートウェイに、実際のサーバーに到達する前にツール呼び出し から漏洩したシークレットを取り除いてほしい — そして、そのツールが返すものが クレデンシャル(やインジェクションペイロード)をモデルに密輸して戻さないようにしたい。 それらは 2 つの異なる仕事で、2 つの異なる制御によって処理され、正直なバージョンが 重要です:ひとつのノブが両方をカバーすると仮定すると、ギャップを出荷することになり ます。 このページは OrcaRouter での mcp output のサニタイズに焦点を当てたガイドです — ファイアウォールの sanitize 判定が実際に何をリダクトし、何をしないか、そして ツールが返すコンテンツをどの制御が統制するかです。
sanitize 判定はツール呼び出しの引数をリダクトし、ツールが返す結果は決して リダクトしません。 それはエージェントがツールに送るものを書き換えます。ツールが 送り返すものを統制するには、モデルの応答に対する output ステージの ガードレールを使います — §3を参照してください。

1. mcp サーフェスでの「sanitize」の意味

エージェントが MCP ゲートウェイ経由でツールを呼び出すとき、 すべての tools/call はディスパッチ前に mcp サーフェス上で評価されます。マッチした ルールは、作成可能なファイアウォール判定 — allowauditdenysanitizepending_approval、または cap_cost — のひとつを持ち ます。sanitize 判定はリダクトするものです:
  • 呼び出しの引数(モデルがツールに渡した JSON)に対して、一連のシークレット形状 検出器を実行します。
  • 各マッチは [redacted:openai_key] のような正規トークンに置き換えられ、書き換え られた引数がサーバーに転送されるものになります。
  • ツールは依然として実行されます — sanitize は非ブロッキングの通過判定です。 エージェントはクラッシュしません;ただ生のシークレットをツールに決して渡さないだけ です。
組み込み検出器は、よく知られたシークレット形状(AWS アクセスキー、sk- 形式の API キー、Bearer トークン、US SSN、Luhn 有効なカード番号、メール)をカバーし、ルールは そのマッチが [redacted:custom] としてレンダリングされるカスタム正規表現を追加でき ます。
inbound サーフェス — リクエストが宣言するアドバタイズされた tools[]、任意の ツールが呼ばれる前 — では、リダクトする呼び出し時の引数がないため、そこでの sanitize 判定はフェイルクローズして deny にエスカレートします。Sanitize は、 書き換えるべきライブの引数ペイロードがある場所 — mcp と response サーフェス — でのみ 意味を持ちます。

2. 具体的なルール 1 つ

引数に OpenAI 形式のキーを含む任意のツール呼び出しを、ブロックするのではなく、キーを スクラブして転送したいとします。sanitize 判定を持つルールを mcp サーフェス上で、 そのシークレット形状を検出するよう設定して作成します。これをコンソール (Firewall → policy → rules)から行います;書き込みには Developer+ が必要です。 ルールは、概念的に:
フィールド
サーフェスmcp
tool_name_glob*(または 1 つのサーバーにスコープ、例:github.*
判定sanitize
Sanitize プリセット有効化するシークレット検出器
呼び出し時、次のような引数ペイロード:
{ "note": "use key sk-AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHH for the upstream" }
はサーバーに次のように転送されます:
{ "note": "use key [redacted:openai_key] for the upstream" }
呼び出しは成功します;シークレットはサーバーに決して到達しません。ファイアウォール イベントは sanitize 判定、サーフェス、マッチしたルールを記録します。
ツールが引数のほとんどを正当に必要とするが、自由テキストにシークレットが時折 紛れ込むときに sanitize に手を伸ばしてください。呼び出し全体が危険なときは、代わりに deny(または pending_approval)を使ってください — MCP ツールの許可リスト化を参照してください。

3. ツール結果は信頼されていない — モデル応答で統制する

ここが、ほとんどの「出力をサニタイズ」設定が間違える部分です。sanitize 判定は 引数のみに触れます。ツールの結果 — MCP サーバーが返すテキストや JSON — は、 ファイアウォール判定によって決して書き換えられません。 OrcaRouter はツール結果のコンテンツをモデルへの信頼されていない入力として扱います。 侵害された、あるいはポイズニングされた MCP サーバーは、シークレット、PII レコード、 あるいはデータに見せかけたプロンプトインジェクションペイロードを返せます。その コンテンツの制御は、output ステージ — モデルがツール結果を取り込んだに評価 されるモデルの応答 — に対するガードレールです。
Secrets & API-Key Blocker プリセット(カテゴリ secrets)を持つガードレールを アタッチします。これは AWS / OpenAI / GitHub 形式のクレデンシャルをブロックします; PEM キー、Slack/Stripe トークン、Google キー、JWT のために Private Keys & Cloud Tokens とペアにします。output ステージのブロックは guardrail_blocked (HTTP 400)を返し、リクエストのクォータを払い戻します
PII Shield プリセットは、型付きエンティティ — [EMAIL][SSN][CREDIT_CARD]、… — をマスクし、マッチした値をタグとしてレンダリングします。 input ステージのマスキングはすべてのリクエスト(ストリーミングかどうかにかかわらず) でライブです:モデルが見る前にリクエストをマスクします。output ステージの マスキングは、非ストリーミング応答でのみモデル応答を書き換えます; ストリーミング応答のインバンド書き換えはロードマップ上にあるため、マスクルールは まだストリームされた応答をリダクトしません。
ポイズニングされた結果は「以前の指示を無視せよ」形式のテキストを運べます。 Prompt-Injection Basics 安全プリセット(キーワード/正規表現)に加えて、 インジェクション意図をスコアする llm_judge ルールがここでの制御です。 MCP ツールポイズニングプロンプトインジェクションを参照して ください。
output 強制とストリーミング。 output ステージのブロックは、ストリーミングと 非ストリーミングの両方の応答で強制されます — ストリームでは、マッチしたときに ブロックがストリームを切断し、汎用のブロック通知を発します。output ステージの マスクは、非ストリーミング応答にのみ適用されます;ストリーミング応答の インバンド書き換えはロードマップ上にあるため、マスクルールはまだストリームされた応答を リダクトしません。

4. 各制御がどこにあるか

2 つのサーフェスのコンパクトな地図です。正しいノブを正しいリスクに配線できるように:
統制したいもの…制御どこ
ツール呼び出しの引数内のシークレットファイアウォール sanitize 判定(mcp サーフェス)ファイアウォールルール
ツールの結果内のシークレット/PII/インジェクションoutput ステージのガードレールガードレール
sanitize にツール結果をカバーさせようとしないでください — それは結果を見られません。 そして、input ステージのガードレールが会話途中でツールが返すものを捕捉すると仮定 しないでください;ツール結果のコンテンツはモデルの応答 — それが output ステージ — で統制されます。

5. アタッチと観察

両方の制御はワークスペーススコープで、名前付き、順序付けされ、両方とも同じ 2 通りで アタッチします:
  • キーごと — エージェントが使うキーfirewall_policy_id(sanitize ルール用)と guardrail_id(output ポリシー用)を 設定します。
  • ワークスペースデフォルト — ポリシー/ガードレールをワークスペースデフォルトと してマークすると、すべてのキーがそれを継承します。
このすべてをコンソールからあなたのセッション/アクセストークンで設定します (管理ルートはリレーキーではなく UserAuth を使います)。ファイアウォールの書き込みには Developer+ が、ガードレールの書き込みには Developer+ が必要です。 ライブになると、sanitize のマッチはファイアウォールイベント(判定、サーフェス、 マッチしたルール)として表示され、ガードレールのマッチはガードレールマッチフィードに 表示されます。両者は異なる読み取りゲートを持ちます:ファイアウォールイベント フィードは Developer+ を必要とし、一方でガードレールマッチフィードは任意の ワークスペースメンバーが読めます。デフォルトでは、マッチはその型、アクション、ステージ を記録しますが、生のマッチしたコンテンツは記録しません;トリアージのために部分 文字列が必要なときだけ Log raw content をオンにしてください。

6. 次のステップ

MCP ツールの許可リスト化

サーバーをデフォルト拒否にし、レビューしたツールだけを許可します。

ファイアウォールルール

完全なルール DSL — 判定、グロブ、args-match、sanitize 設定。

ガードレール

コンテンツポリシー、プリセット、PII エンティティ、output ステージの強制。

MCP ツールポイズニング

そもそもツール結果を信頼されていないものにする脅威。
これら 2 つのレイヤーの分割が初めてですか? ガードレール vs. ファイアウォールを 読み、それから sanitize と output ガードレールがともに閉じる漏洩パスについて データ持ち出しを読んでください。