Gouvernez vos agents IA avec des règles que vous pouvez tester avant de les livrer.
Rédigez vos règles allow, deny et require_approval au même endroit, simulez n'importe quelle décision avant sa mise en production et soumettez chaque changement à une suite de tests de politique de référence — pour qu'une modification de règle ne puisse jamais changer en silence ce que vos agents ont le droit de faire.
governance ▸ simulez avant la mise en production · les tests golden filtrent chaque modification
Une gouvernance que vous rédigez
La politique est une configuration, pas un déploiement de code.
La gouvernance Cortex est un ensemble de règles priorisées : chacune associe une condition à un effet allow, deny ou require_approval. Le runtime les évalue par ordre de priorité à chaque exécution, et l'effet le plus restrictif l'emporte toujours : deny prime sur require_approval, qui prime sur allow. Comme les règles sont des données, vos équipes risque et conformité les rédigent et les modifient directement — et chaque modification est testable avant d'atteindre le moindre agent.
Rédigées comme des règles
Chaque règle est une condition (p. ex. amountUsd >= 5000) associée à un effet — allow, deny ou require_approval — et à une priorité. Aucun redéploiement : les règles sont des données cadrées par tenant que le runtime lit à chaque exécution.
Le plus restrictif l'emporte
Les règles s'appliquent par ordre de priorité, les règles désactivées sont ignorées, et l'effet correspondant le plus strict l'emporte : deny > require_approval > allow. La gouvernance penche par défaut vers la prudence, jamais vers l'autorisation.
Simulées avant livraison
Passez n'importe quel contexte dans les règles en vigueur — ou dans un jeu candidat non enregistré — et obtenez la décision plus une trace règle par règle : vous voyez exactement quelle règle s'est déclenchée et pourquoi, avant d'enregistrer.
Testées comme une barrière
Les tests de politique de référence figent les décisions qui doivent tenir. Exécutez-les sur un jeu de règles candidat : un seul échec vous dit de ne pas livrer — une barrière anti-régression pour la gouvernance elle-même.
Le problème résolu
Une modification de politique non testée change en silence ce que vos agents ont le droit de faire.
Quand la gouvernance se disperse dans des instructions if et du texte de prompt, une modification bien intentionnée peut élargir en silence ce que chaque agent a le droit de faire — et vous ne le découvrez qu'à l'audit. Policy-as-Code transforme les règles en données explicites, vous permet de prévisualiser une décision avant sa mise en production et refuse tout changement qui casse ne serait-ce qu'un cas golden. Le même moteur alimente la décision en production et la simulation : ce que vous testez est exactement ce qui s'exécute.
Simulez n'importe quel contexte → décision + trace règle par règle, avant enregistrementdeny > require_approval > allow — l'effet le plus restrictif l'emporteUn test de référence en échec → le jeu de règles candidat n'est jamais livré
Comment ça marche
Rédiger, simuler, tester, livrer.
Un seul moteur pur — evaluateRules(rules, context) — décide de chaque exécution et de chaque simulation. C'est ce chemin partagé qui rend une simulation digne de confiance : l'aperçu et la décision de production sont le même code.
01
Rédiger la règle
Écrivez une condition et un effet — allow, deny ou require_approval — avec une priorité. Les priorités les plus basses sont évaluées en premier ; les règles désactivées sont ignorées. Les règles sont des données cadrées par tenant, pas un déploiement.
02
Simuler avant livraison
Envoyez un POST de contexte sur /simulate, contre les règles en vigueur ou un jeu candidat non enregistré. Vous obtenez l'effet, la règle correspondante, le motif et la trace complète règle par règle — un aperçu du changement avant qu'il soit réel.
03
Lancer les tests de référence
Figez les cas connus en tests de référence (contexte → effet attendu). Exécutez-les sur le jeu de règles candidat ; un seul échec signale une régression — ne livrez pas.
04
Livrer sous les barrières
Une fois le jeu candidat validé, il devient la politique en vigueur — évaluée à chaque exécution dans le même runtime fail-closed, aux côtés de l'identité, du budget et du Trust Ledger.
Où se situe la politique
La porte de politique n'est qu'une étape de l'exécution.
Ce que contient le moteur
Les règles, la simulation, les tests — et la trace qui les relie.
Rédaction des règles
allow / deny / require_approval
Condition + priorité
Activation / désactivation par règle
Portée par tenant, sans redéploiement
CRUD + deleteRule via le SDK
Moteur d'évaluation
evaluateRules(rules, context) pur
Par ordre de priorité, du plus bas au plus haut
deny > require_approval > allow
Les règles désactivées sont ignorées
Le même moteur, en production et en simulation
Simulation
POST /simulate { context }
Règles en production ou jeu candidat
Renvoie effect + matchedRule
Trace par règle + motif
Prévisualisez les modifications non enregistrées
Tests de politique de référence
context → expectEffect
Créer / lister / supprimer des cas
POST /tests/run → passed/total
Exécution sur un jeu candidat
Barrière anti-régression avant la mise en production
Trace et preuves
Correspondance ou saut de chaque règle enregistré
Motif de la décision
Règle correspondante identifiée
GET /counts → rules, tests
Sortie lisible par un auditeur
Plancher runtime
Le requiresApproval de l'action s'applique toujours
Les actions à haut risque sont retenues séparément
La politique ne peut que renforcer, jamais assouplir
Fail-closed aux côtés des autres barrières
Mutations réservées aux admins côté console
Prouvez-le — ne vous contentez pas de l'affirmer
Mêmes règles, deux contextes, deux décisions honnêtes.
Épinglez une règle require_approval à amountUsd >= 5000, puis simulez. Un versement de $7,400 renvoie require_approval, avec la règle correspondante et le motif dans la trace ; un versement de $100 renvoie allow, car aucune règle n'a correspondu. Aucune supposition : la simulation exécute exactement le moteur qui filtre la production.
Simulez { amountUsd: 7400 } → require_approval
Simulez { amountUsd: 100 } → allow
Un export avec pii: true → deny (le plus restrictif l'emporte)
Chaque simulation renvoie la règle correspondante, le motif et la trace par règle
governance ▸ simulez avant la mise en production · les tests golden filtrent chaque modification
Les tests de référence comme porte anti-régression
Validez une modification de règle avant qu'elle n'atteigne le moindre agent.
Envoyez un jeu de règles candidat à /tests/run et Cortex évalue chaque cas de référence sans rien enregistrer. Un candidat naïf en deny-all échouerait sur les cas qui attendent allow — la porte vous dit donc de ne pas le livrer. Figez une fois pour toutes les décisions qui comptent, et aucune modification ultérieure ne pourra les changer en silence ; l'endpoint run est la porte manuelle que vous déclenchez à chaque changement.
Exécutez les tests golden sur un jeu candidateRules — rien n'est enregistré
Le résultat est { total, passed, failed, results[] }
Un candidat qui refuse tout échoue aux cas allow → ne pas livrer
Les décisions qui comptent sont figées face à toute modification future
La politique n'applique rien seule — c'est le runtime qui applique.
Policy-as-Code n'est qu'une porte parmi d'autres dans le même runtime fail-closed que l'identité, les actions, la supervision et le registre. Suivez les branches.
Évaluation en refus par défaut, priorité au plus restrictif, modifications de règles réservées aux administrateurs et trace règle par règle sur chaque décision — mis en correspondance avec les référentiels que vos auditeurs utilisent déjà.
SOC 2ISO 27001ISO 42001HIPAAGDPREU AI ActNIST AI RMFFINRA
Écrivez les règles une fois. Prouvez-les à chaque exécution.
Traduisez la gouvernance de vos agents en politique testable et simulable — pour qu'une modification de règle ne change jamais en silence ce que vos agents ont le droit de faire.