Policy-as-Code

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.

deny > require_approval > allow · simulez avant la mise en production · les tests golden filtrent chaque modification

Policy Studio
# cortex_policy_rules · priority order · deny > require_approval > allow
rule "high-value-payout" {
priority: 10
when: amountUsd >= 5000
effect: require_approval
}
rule "export-pii" {
priority: 5
when: action == "export" && pii == true
effect: deny
}
simulate ▸ POST /v1/governance/simulate
context { amountUsd: 7400 }require_approval
context { amountUsd: 100 }allow
trace ▸ high-value-payout correspond · motif : amountUsd >= 5000
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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

01Identitérefuse 40302Budgetrefuse 40203Garde-fousrefuse 45104Registrerefuse 40405Control Towerrefuse 40906Exécutionpasse07Garde de sortierefuse 45108Auditpasse
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: truedeny (le plus restrictif l'emporte)
  • Chaque simulation renvoie la règle correspondante, le motif et la trace par règle
Tests de politique de référence
POST /v1/governance/tests/run { candidateRules: […] } ▸ 3 / 4 réussis
big-payout-needs-approval
{ amountUsd: 9000 } · attendu require_approval
réussi
small-payout-allowed
{ amountUsd: 100 } · attendu allow
réussi
pii-export-denied
{ action: export, pii: true } · attendu deny
réussi
refund-under-cap-allowed
{ amountUsd: 240 } · attendu allow · obtenu deny
échec
tests ▸ 1 échec → le jeu de règles candidat n'est pas livré (barrière anti-régression)
3Effets : allow · require_approval · deny
$7,400Simulé → require_approval (règle à ≥ 5 000 $)
$100Simulé → allow (aucune règle correspondante)
1Un test de référence en échec bloque le changement de règle
Policy Studio
# cortex_policy_rules · priority order · deny > require_approval > allow
rule "high-value-payout" {
priority: 10
when: amountUsd >= 5000
effect: require_approval
}
rule "export-pii" {
priority: 5
when: action == "export" && pii == true
effect: deny
}
simulate ▸ POST /v1/governance/simulate
context { amountUsd: 7400 }require_approval
context { amountUsd: 100 }allow
trace ▸ high-value-payout correspond · motif : amountUsd >= 5000
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
Sécurité et conformité

Conçu pour la revue de sécurité en entreprise.

É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.

Plateforme de gouvernance des agents IA | Cortex AI OS