Passer au contenu principal
Les guardrails filtrent le texte qui circule à travers un modèle. Le Firewall gouverne les actions qu’un agent entreprend — les outils qu’il appelle, les serveurs MCP qu’il atteint, les skills qu’il charge et les hôtes auxquels il parle. C’est le pendant côté action des Guardrails : même portée d’espace de travail, même modèle attach-once, même promesse « la politique vit dans la passerelle, pas dans votre application ». Cette page est la vue d’ensemble conceptuelle et la référence opérationnelle. Trois pages compagnes couvrent les rouages en profondeur :

Règles

Le langage de correspondance — globs d’outils, clauses d’arguments, listes d’egress, assainisseurs et séquences.

Serveurs MCP

Enregistrez et gouvernez les serveurs Model Context Protocol derrière une seule passerelle auditée.

Skills

Scannez et scorez le risque des capacités que vos agents installent avant qu’elles ne puissent s’exécuter.

1. Qu’est-ce que le Firewall

Un agent IA ne se contente pas de générer du texte — il agit. Il appelle shell.exec, interroge db.query, récupère une URL, charge un skill communautaire ou route un appel d’outil à travers un serveur MCP tiers. Chacun de ces actes est une action aux conséquences réelles, et les guardrails au niveau du prompt ne peuvent pas les voir. Le Firewall est une politique nommée, à portée d’espace de travail que la passerelle évalue à chaque appel d’outil. Vous rédigez une politique une fois, attachez-y une clé API (ou en définissez une comme défaut de l’espace de travail), et dès lors chaque appel d’outil émis par cette clé est vérifié contre la politique — avant qu’il n’atteigne l’outil. Chaque politique est une liste ordonnée de règles. Une règle décide d’une seule chose — à quels appels d’outils elle s’applique (un glob de nom d’outil, optionnellement scopé à un skill et à une surface d’application) et quoi en faire (un verdict : allow, audit, deny, sanitize, hold for approval, ou cap cost). Le moteur parcourt les règles dans l’ordre de priorité, la première correspondance gagne, et retombe sur le verdict par défaut de la politique si rien ne correspond. La modification d’une politique prend effet sur chaque clé qui y est attachée dès le prochain appel. Aucun redéploiement. Aucun changement de code d’agent. La politique est appliquée dans la passerelle — votre agent continue d’émettre des appels d’outils exactement comme auparavant.
La détection se produit dans la passerelle, dès la première utilisation. Le Firewall se trouve sur le chemin de relais LLM, pas à l’intérieur du gestionnaire de paquets ni du système de fichiers de votre agent. Un outil, un serveur MCP ou un skill qu’un agent s’auto-installe est attrapé la première fois que son appel franchit la passerelle — pas au moment de l’installation. C’est délibéré : c’est l’unique point d’étranglement qui voit chaque fournisseur, chaque agent et chaque appel d’outil, peu importe comment la capacité est arrivée là.

2. Les quatre surfaces d’application

Chaque appel d’outil est évalué contre exactement une surface — le point du cycle de vie de la requête où le firewall le voit :
SurfaceCe qu’elle voit
inboundLes outils qu’un agent annonce au modèle sur la requête (définitions d’outils). Vous permet de bloquer un outil dangereux avant même que le modèle puisse le choisir.
responseLes tool_calls que le modèle émet dans sa réponse.
mcpUn tools/call dispatché à travers la passerelle MCP du Firewall ou évalué via le hook du SDK.
egressUne destination réseau sortante (host / IP / CIDR) rapportée par un outil — la surface de SSRF et d’exfiltration de données.
Une règle sans stage s’applique à toutes les surfaces ; épinglez une règle à une surface lorsqu’un verdict n’a de sens que là (par exemple une allowlist d’egress).

3. Concepts fondamentaux

ConceptDéfinition
PolitiqueUn ensemble de règles nommé, à portée d’espace de travail. Possède enabled, is_default, un default_verdict et un flag shadow_mode.
RègleUne vérification à l’intérieur d’une politique : une priorité, une correspondance d’outil/skill, une surface optionnelle, un prédicat d’argument optionnel et un verdict. Voir Règles.
VerdictL’action qu’une règle (ou le défaut) produit — voir §4.
Verdict par défautAppliqué lorsqu’aucune règle ne correspond. L’une des valeurs allow, audit (défaut) ou deny.
Mode shadowLa politique évalue et journalise mais ne bloque jamais — chaque verdict appliquant est rétrogradé en audit et la raison est préfixée [shadow] would …. Votre interrupteur de déploiement sûr.
Mode observeUn réglage au niveau de l’espace de travail. Lorsqu’une requête ne résout aucune politique et que le mode observe est activé, l’appel est autorisé mais journalisé comme une lacune de couverture — c’est ce qui alimente la vue des outils découverts.

Portée et résolution

Les politiques se résolvent exactement comme les Guardrails et les clés API — partagées dans l’espace de travail lorsque vous avez un espace de travail actif. Pour tout appel d’outil, la passerelle résout la politique dans cet ordre :
  1. Attachement de clé — si la clé appelante a un firewall_policy_id, cette politique s’applique (lorsqu’elle existe et est activée).
  2. Défaut de l’espace de travail — sinon, la politique is_default activée de l’espace de travail s’applique.
  3. Ni l’un ni l’autre — aucune application. Avec le mode observe activé, l’appel est autorisé et journalisé comme une lacune ; avec lui désactivé, l’appel est autorisé silencieusement (identique octet pour octet à un espace de travail qui n’a jamais activé la fonctionnalité).
Au plus une politique par espace de travail peut être le défaut ; promouvoir un nouveau défaut rétrograde l’ancien dans la même transaction.
Fail-open sur l’inconnu, fail-closed sur l’ambigu. Si la résolution d’une politique rencontre une erreur transitoire, la passerelle dégrade vers observe/allow plutôt que de couper le trafic. Mais là où ne pas appliquer ferait échouer l’objet même de la règle — un rapport d’egress sans destination utilisable, un store d’approbation inaccessible, un skill dont la propriété ne peut être résolue — le moteur fail closed (deny ou hold). La disponibilité est préservée ; la sécurité n’est pas silencieusement ignorée sur les cas qui comptent.

4. Verdicts

Une règle (ou le verdict par défaut) produit l’une des valeurs :
VerdictCe qu’il fait
allowLaisse passer l’appel. Journalisé.
auditAutorise, mais l’enregistre pour revue. Le default_verdict par défaut — tout observer, ne rien bloquer, jusqu’à ce que vous soyez prêt.
denyBloque l’appel. L’agent voit une erreur d’outil (ou une HTTP 400 sur la surface inbound).
sanitizeRedacte les sous-chaînes correspondantes des arguments de l’outil (secrets, PII) et transmet l’appel nettoyé. Voir assainisseurs. Sur la surface inbound — où il n’y a pas encore d’arguments au moment de l’appel — sanitize escalade en un block.
pending_approvalMet l’appel en attente d’un humain. L’agent reçoit une réponse « held » ; un relecteur approuve ou rejette hors-bande ; l’agent re-soumet avec un token d’approbation à usage unique. Voir §7.
cap_costRefuse dès que la dépense accumulée de l’exécution de l’agent dépasse un plafond en centimes par règle. Un disjoncteur pour les boucles emballées.
En mode shadow, deny / sanitize / pending_approval sont tous rétrogradés en audit afin que vous puissiez mesurer l’impact d’une politique avant qu’elle ne change le trafic.

5. Comment un appel d’outil est évalué

  1. Un appel d’outil atteint la passerelle (annoncé en inbound, émis dans une réponse, dispatché à travers la passerelle MCP, ou rapporté comme egress).
  2. Le moteur résout la politique active (§3).
  3. Il parcourt les règles de la politique dans l’ordre de priorité (priorité plus basse d’abord ; égalités tranchées par l’id de règle). Une règle correspond lorsque sa surface, son glob de nom d’outil, son glob de nom de skill optionnel, ses clauses d’arguments optionnelles et sa portée d’egress optionnelle correspondent toutes.
  4. La première correspondance gagne → le verdict de la règle s’applique. Si aucune règle ne correspond → le default_verdict de la politique.
  5. Si l’appel appartient à un skill gouverné, le mode d’application du skill est appliqué par-dessus — un skill en mode block force un deny ; un skill en mode quarantine escalade tout ce qui est en-deçà d’un deny vers pending_approval.
  6. La décision est journalisée comme un événement firewall (sauf s’il s’agit d’un dry run), corrélée à l’exécution et à la session de l’agent.

6. À quoi ressemble un block

Un appel refusé sur la surface inbound renvoie une HTTP 400 avec un corps d’erreur de forme OpenAI, le code d’erreur firewall_blocked, et un message nommant l’outil et la raison — par exemple tool "shell.exec" blocked by firewall: destructive shell command. L’erreur porte des metadata structurées (code de raison, facteurs de risque, score) et est marquée skip-retry (ré-exécuter le même appel ne ferait que bloquer à nouveau). Un appel dispatché à travers la passerelle MCP est bloqué comme une erreur d’outil (firewall deny: <reason>) plutôt qu’une défaillance de transport, de sorte que le modèle voit le rejet et peut réagir — choisir un autre outil, demander à l’utilisateur, ou s’arrêter — au lieu de planter. Un appel mis en attente (pending_approval) renvoie une HTTP 400 avec le code firewall_approval_pending et un id d’approbation sur lequel le client interroge.

7. Approbation humaine (HITL)

Un verdict pending_approval transforme un appel d’outil en une revue hors-bande :
  1. Le moteur met en file d’attente un enregistrement d’approbation et renvoie une réponse « held » portant son id ; l’appel n’atteint pas l’outil.
  2. Un relecteur le résout — depuis la console (Developer+), ou via un callback webhook signé HMAC vers votre propre système d’approbation.
  3. Votre agent (ou le SDK MCP) interroge l’id d’approbation ; une fois approuvé, il re-soumet l’appel d’origine avec un en-tête X-OrcaRouter-Firewall-Approval à usage unique, et la passerelle le laisse passer cette fois-là.
Les décisions sont first-writer-wins et idempotentes. Si la règle sous-jacente a été modifiée après la mise en attente, l’enrichissement note rule_changed afin que les relecteurs sachent que le contexte a changé.

8. Niveaux d’autonomie — un seul interrupteur pour toute votre posture

Ajuster les politiques règle par règle est le chemin précis ; les niveaux d’autonomie sont le chemin rapide. Un unique contrôle remplace atomiquement la posture Firewall et Guardrails de votre espace de travail en une seule transaction, avec annulation en un clic :
NiveauPosture
tightBloque le shell destructeur, les secrets dans les arguments et l’egress SSRF (deny par défaut) ; guardrails PII Shield + Secrets Blocker activés ; mode observe désactivé.
balancedAudite le shell destructeur, signale la PII ; mode observe désactivé. La posture de départ recommandée.
permissiveAucune politique appliquant, aucun guardrail ; mode observe activé pour que vous voyiez quand même tout.
L’annulation restaure l’état antérieur exact à partir du snapshot d’audit.

9. Détection d’anomalies

Au-delà des règles statiques, le Firewall apprend la forme normale d’utilisation des outils de chaque espace de travail et signale les écarts sur un flux lisible par un viewer :
  • Pics de débit / coût — l’activité par outil est scorée contre une baseline heure-de-la-semaine apprise (une moyenne glissante sur 14 jours), de sorte que « 100 appels db.query à 3h du matin un dimanche » ressort même si chaque appel est individuellement autorisé.
  • retry_loop — un agent qui martèle le même outil défaillant.
  • novel_path — une transition d’outil à outil que cet espace de travail n’a jamais faite auparavant.
Le flux ne rapporte que des noms d’outils, des ids de tokens redactés et des comptes. Vous pouvez mettre en sourdine une anomalie jusqu’à 7 jours pendant que vous enquêtez.

10. Observabilité

Le Firewall laisse une trace sur laquelle vous pouvez agir, le tout à portée d’espace de travail :
SurfaceCe qu’elle vous donne
EventsChaque évaluation, filtrable par verdict, surface, outil, exécution et session. L’enregistrement brut derrière tout le reste.
Runs & sessionsÉvénements agrégés par exécution d’agent ou conversation — répartition des verdicts, outils et modèles distincts, première/dernière apparition. La vue « ce que cet agent a réellement fait ».
Discovered toolsChaque outil que l’espace de travail a vu, marqué covered (une règle s’applique) ou gap (aucune ne s’applique). Pilote la rédaction de politiques à partir du trafic réel.
SimulatePrévisualisez ce qu’un niveau d’autonomie changerait avant de l’appliquer.
TestExécutez en dry-run une politique contre un appel d’outil d’échantillon et voyez le verdict, la règle correspondante et la raison — rien n’est persisté, rien n’est dispatché.
AuditChaque changement de politique, de règle et de réglage écrit une ligne d’audit (espace de travail + central) après le commit du changement. Les secrets et les blobs de règles ne sont jamais journalisés.

11. Relation avec le reste de la passerelle

SurfaceComment cela se compose avec le Firewall ?
GuardrailsPlans complémentaires. Les Guardrails filtrent le texte des prompts/réponses ; le Firewall gouverne les actions d’outils. Les deux peuvent s’appliquer à une même requête. Les niveaux d’autonomie règlent les deux à la fois.
RoutageIndépendant. Le routage choisit le modèle/canal ; le firewall juge les appels d’outils peu importe quel modèle les a servis.
Clés APIUne clé s’attache à une politique via firewall_policy_id ; la liaison vit sur la clé dans la passerelle. Sans attachement, on retombe sur le défaut de l’espace de travail.
Passerelle MCPLe firewall est la passerelle MCP — chaque serveur que vous enregistrez dispatche son tools/call à travers le moteur.
SkillsLe mode d’application d’un skill gouverné se superpose au verdict de la règle, de sorte qu’un skill en quarantaine est mis en attente même si aucune règle ne nomme ses outils.

12. Connecter un agent à la passerelle Firewall

Il y a deux façons pour un appel d’outil d’atteindre le moteur :
  • Passerelle MCP — pointez votre client MCP (Claude Desktop, Cursor, un framework d’agent) vers https://api.orcarouter.ai/api/v1/firewall/mcp. La passerelle expose les outils de chaque serveur enregistré joignable, sous le namespace <server>.<tool>, et évalue chaque tools/call en ligne. Voir Serveurs MCP.
  • Hook d’évaluation — appelez POST /api/v1/firewall/evaluate depuis votre propre boucle d’agent avant de dispatcher un appel d’outil, et agissez sur le verdict.
Les deux requièrent un token scopé à la passerelle firewall — une clé API dédiée frappée à cet effet. Une clé ordinaire reçoit un 403 sur ces routes.

13. Référence API

Toutes les routes de console sont à portée d’espace de travail via le contexte d’espace de travail et appliquent RBAC de manière cohérente : les lectures et les sandboxes de test/simulation sont ouvertes à chaque membre ; les écritures nécessitent Developer+.

Politiques & réglages

Méthode & cheminRôleObjectif
GET /api/workspace/firewall/settingsMemberLire les réglages firewall de l’espace de travail (mode observe, défauts).
PUT /api/workspace/firewall/settingsDeveloper+Mettre à jour les réglages.
GET /api/workspace/firewall/policiesMemberLister les politiques (avec comptes de règles + clés attachées).
GET /api/workspace/firewall/policies/:idMemberDétail d’une seule politique.
POST /api/workspace/firewall/policiesDeveloper+Créer une politique.
PUT /api/workspace/firewall/policiesDeveloper+Mettre à jour une politique.
DELETE /api/workspace/firewall/policies/:idDeveloper+Supprimer une politique (409 si des clés y sont encore attachées).

Posture, presets & sandboxes

Méthode & cheminRôleObjectif
GET /api/workspace/firewall/presetsMemberPresets de règles intégrés.
POST /api/workspace/firewall/autonomyDeveloper+Appliquer un niveau d’autonomie.
POST /api/workspace/firewall/autonomy/undo/:audit_idDeveloper+Annuler un changement d’autonomie.
GET /api/workspace/firewall/simulateMemberPrévisualiser un niveau d’autonomie (?level=).
POST /api/workspace/firewall/testDeveloper+Exécuter en dry-run une politique contre un appel d’outil d’échantillon.

Observabilité

Méthode & cheminRôleObjectif
GET /api/workspace/firewall/discovered-toolsMemberOutils vus, marqués covered / gap.
GET /api/workspace/firewall/eventsDeveloper+Lister les événements firewall (filtrables).
GET /api/workspace/firewall/events/by-request/:request_idDeveloper+Événements pour une requête.
GET /api/workspace/firewall/events/aggregateDeveloper+Agrégation par exécutions / sessions.
GET /api/workspace/firewall/trace/by-runDeveloper+Nœuds de trace pour une exécution (?run_id=).
GET /api/workspace/firewall/anomaliesMemberFlux d’anomalies (?window=).
POST /api/workspace/firewall/anomalies/snoozeDeveloper+Mettre en sourdine le flux d’anomalies.
Les règles, les serveurs MCP et les skills ont chacun leurs propres endpoints — voir Règles, Serveurs MCP, et Skills.

Passerelle (machine-à-machine)

Celles-ci s’exécutent sur un token scopé à la passerelle firewall, pas sur la session de console :
Méthode & cheminObjectif
POST /api/v1/firewall/evaluateVerdict pré-dispatch pour un appel d’outil.
POST /api/v1/firewall/evaluate_planVérification pré-exécution pour un plan multi-étapes.
ANY /api/v1/firewall/mcpL’endpoint unifié de la passerelle MCP.
GET /api/v1/firewall/approvals/:idInterroger l’état d’approbation d’un appel en attente.
POST /api/v1/firewall/approvals/:id/callbackCallback d’approbation signé HMAC.

14. FAQ

Avec le mode observe désactivé, le comportement est identique octet pour octet à un espace de travail qui n’a jamais activé la fonctionnalité — rien n’est bloqué ni journalisé. Avec le mode observe activé, l’appel est autorisé mais enregistré comme une lacune de couverture afin qu’il apparaisse dans Discovered tools.
Activez le mode shadow. La politique évalue et journalise exactement comme elle le ferait en production, mais chaque verdict appliquant est rétrogradé en audit et la raison est préfixée [shadow] would …. Surveillez les vues events et runs, confirmez qu’elle se déclenche sur ce que vous attendez et sur rien d’autre, puis désactivez le mode shadow pour commencer à appliquer.
Un block inbound se déclenche avant l’appel au modèle amont, donc il ne coûte aucun token de modèle. Les verdicts audit / allow ne changent rien à la facturation. Une règle cap_cost est elle-même un contrôle de facturation — elle refuse dès que la dépense de l’exécution franchit votre plafond en centimes.
Les deux, pour des couches différentes. Les Guardrails filtrent le texte des prompts et des réponses (PII, secrets, jailbreaks). Le Firewall gouverne les actions qu’un agent entreprend (quels outils, quels serveurs MCP, quels hôtes). Une requête peut traverser les deux. Le niveau d’autonomie tight les configure ensemble.
Le Firewall applique sur les appels d’outils qui franchissent la passerelle — le chemin de relais, la passerelle MCP et le hook d’évaluation. Un outil que votre agent exécute entièrement à l’intérieur de son propre processus, sans jamais toucher la passerelle, est hors de la vue du firewall. L’objectif de conception est de faire de la passerelle l’unique chemin audité pour les appels qui comptent (outils médiés par le modèle, dispatch MCP, egress réseau) ; routez-les à travers elle et ils sont gouvernés.

Voir aussi

Vous souhaitez approfondir la sécurité des agents ? Les guides Sécurisez vos agents (Zero Trust) replacent cette fonctionnalité dans un workflow zero-trust.

Sécurisez vos agents (Zero Trust)

Le playbook du pare-feu d’agents zero-trust — listes d’autorisation d’outils, vérification des arguments et contrôle des sorties.

Référence de base Secure Agents

Un seul commutateur qui configure ensemble la posture de votre pare-feu et de vos guardrails.