sanitize redacte réellement, ce qu’il ne fait
pas, et quel contrôle gouverne le contenu qu’un outil renvoie.
1. Ce que « sanitize » signifie sur la surface mcp
Quand un agent appelle un outil à travers la passerelle MCP, chaquetools/call est évalué sur
la surface mcp avant le dispatch. Une règle
correspondante peut porter l’un des verdicts firewall rédigeables — allow,
audit, deny, sanitize, pending_approval, ou cap_cost. Le verdict
sanitize est celui qui redacte :
- Il exécute un ensemble de détecteurs de forme de secret sur les arguments de l’appel (le JSON que le modèle a passé dans l’outil).
- Chaque correspondance est remplacée par un token canonique comme
[redacted:openai_key], et ce sont les arguments réécrits qui sont transmis au serveur. - L’outil s’exécute quand même —
sanitizeest un verdict non bloquant, qui laisse passer. L’agent ne plante pas ; il ne remet simplement jamais le secret brut à l’outil.
sk-, tokens Bearer, SSN US, numéros de
carte valides selon Luhn, email), et une règle peut ajouter des regex
personnalisées dont les correspondances s’affichent comme [redacted:custom].
Sur la surface inbound — les
tools[] annoncés qu’une requête déclare,
avant tout appel d’outil — il n’y a aucun argument au moment de l’appel à
redacter, donc un verdict sanitize là échoue fermé et escalade en deny.
Sanitize n’a de sens que là où il y a une charge d’argument en direct à réécrire :
les surfaces mcp et response.2. Une règle concrète
Disons que vous voulez que tout appel d’outil dont les arguments contiennent une clé de style OpenAI soit transmis avec la clé nettoyée, plutôt que bloqué. Rédigez une règle sur la surface mcp avec un verdictsanitize, configurée
pour détecter cette forme de secret. Faites-le depuis la console
(Firewall → politique → règles) ; l’écriture requiert Developer+.
La règle, conceptuellement :
| Champ | Valeur |
|---|---|
| Surface | mcp |
tool_name_glob | * (ou cadrer à un serveur, p. ex. github.*) |
| Verdict | sanitize |
| Presets de sanitize | les détecteurs de secret à activer |
sanitize, la surface, et la règle correspondante.
3. Les résultats d’outils sont non fiables — gouvernez-les sur la réponse du modèle
Voici la partie que la plupart des montages « assainir la sortie » se trompent. Le verdictsanitize touche aux arguments uniquement. Le résultat d’un
outil — le texte ou JSON qu’un serveur MCP renvoie — n’est jamais réécrit par un
verdict firewall.
OrcaRouter traite le contenu du résultat d’outil comme une entrée non fiable
pour le modèle. Un serveur MCP compromis ou empoisonné peut renvoyer un
secret, un enregistrement PII, ou une charge d’injection de prompt déguisée en
données. Le contrôle pour ce contenu est un
guardrail sur le stage output — la réponse du
modèle, évaluée après que le modèle a incorporé le résultat de l’outil.
Attraper les secrets qui apparaissent dans la réponse
Attraper les secrets qui apparaissent dans la réponse
Attachez un guardrail avec le preset Secrets & API-Key Blocker
(catégorie
secrets). Il bloque les credentials de style AWS / OpenAI /
GitHub ; associez-le à Private Keys & Cloud Tokens pour les clés PEM, les
tokens Slack/Stripe, les clés Google, et les JWT. Un blocage au stage output
renvoie guardrail_blocked (HTTP 400) et rembourse le quota de la
requête.Redacter la PII dans la réponse
Redacter la PII dans la réponse
Le preset PII Shield masque les entités typées —
[EMAIL], [SSN],
[CREDIT_CARD], … — rendant les valeurs correspondantes comme des tags. Le
masquage au stage input est en service sur chaque requête (en flux ou non) :
il masque la requête avant que le modèle ne la voie. Le masquage au stage
output réécrit la réponse du modèle sur les réponses non-streaming
uniquement ; la réécriture en bande d’une réponse en flux est sur la feuille
de route, donc une règle de masque ne redacte pas encore une réponse
streamée.Neutraliser l'injection chevauchant les résultats d'outils
Neutraliser l'injection chevauchant les résultats d'outils
Un résultat empoisonné peut porter du texte de style « ignore previous
instructions ». Le preset de sécurité Prompt-Injection Basics
(mot-clé/regex) plus une règle
llm_judge qui score l’intention d’injection
sont les contrôles ici. Voir
Empoisonnement d’outils MCP et
Injection de prompt.Application au stage output et streaming. Le blocage au stage output est
appliqué sur les réponses en flux et non-streaming — sur un flux, un blocage
coupe le flux quand il correspond et émet un avis de blocage générique. Le
masque au stage output s’applique aux réponses non-streaming uniquement ;
la réécriture en bande d’une réponse en flux est sur la feuille de route, donc
une règle de masque ne redacte pas encore une réponse streamée.
4. Où vit chaque contrôle
Une carte compacte des deux surfaces, pour que vous câbliez le bon bouton au bon risque :| Vous voulez gouverner… | Contrôle | Où |
|---|---|---|
| Secrets dans les arguments d’un appel d’outil | Verdict firewall sanitize (surface mcp) | Règles du firewall |
| Secrets / PII / injection dans le résultat d’un outil | Guardrail sur le stage output | Guardrails |
5. Attacher et observer
Les deux contrôles sont à portée d’espace de travail, nommés et ordonnés, et s’attachent des deux mêmes façons :- Par clé — réglez
firewall_policy_id(pour la règle de sanitize) etguardrail_id(pour la politique de sortie) sur la clé que l’agent utilise. - Défaut d’espace de travail — marquez une politique / un guardrail comme défaut d’espace de travail pour que chaque clé en hérite.
6. Où aller ensuite
Lister les outils MCP autorisés
Refus par défaut d’un serveur et n’autoriser que les outils que vous avez
revus.
Règles du firewall
Le DSL de règle complet — verdicts, globs, args-match, config sanitize.
Guardrails
Politiques de contenu, presets, entités PII, et application au stage output.
Empoisonnement d'outils MCP
La menace qui rend les résultats d’outils non fiables en premier lieu.
