Skip to main content
Les politiques personnalisées transforment un schéma de défaillance issu de vos traces ou audits en une décision exécutée pendant qu’un agent travaille. Une politique peut autoriser une action, fournir des conseils à l’agent ou bloquer l’action avant qu’elle ne provoque un nouvel incident. Utilisez une politique personnalisée lorsque le comportement dépend de vos outils, chemins, commandes, environnements ou règles de fonctionnement. Consultez d’abord le pack de politiques Failproof AI pour ne pas recréer un contrôle existant.

Créer une politique personnalisée

  1. Allez dans Admin → éditeur de politiques, sélectionnez Nouvelle politique et décrivez la défaillance que vous souhaitez prévenir.
  2. Ajoutez le code source de la politique, puis testez les correspondances attendues et les non-correspondances sûres dans l’éditeur. Résolvez toutes les erreurs de validation.
  3. Enregistrez le brouillon et sélectionnez Publier la version pour créer une version immuable.
  4. Allez dans Admin → application, déployez la version sur une machine de test en mode observation et vérifiez ses décisions sous Observer → politique avant de l’appliquer. L'éditeur de politiques utilisé pour créer et publier une politique personnalisée.

Commencer par une règle ciblée

Cette politique bloque les commandes Kubernetes destructives uniquement lorsque la commande cible la production. Tout ce qui se situe en dehors de ce cas de défaillance précis renvoie allow().
Les bonnes politiques sont suffisamment ciblées pour pouvoir être expliquées en une seule phrase. Ciblez l’action observable — pas l’intention que vous espérez de l’agent — et renvoyez allow() dès que la règle ne s’applique pas.

Choisir une décision

Rédigez la raison à l’intention de l’agent qui doit récupérer la situation. Expliquez ce qui a été détecté et ce qu’il devrait faire à la place.
N’utilisez pas instruct() pour délimiter une frontière de sécurité. La livraison des conseils varie selon l’environnement d’exécution de l’agent. Utilisez deny() lorsque l’action doit être empêchée.

Objet de politique

Filtrez les outils à l’intérieur de fn. match.toolNames ne fait pas partie du type de politique personnalisée public.

Contexte de politique

Chaque politique reçoit un PolicyContext. Traitez chaque valeur optionnelle comme réellement optionnelle. Les versions d’agent et les types d’événements ne fournissent pas tous les mêmes champs.

Entrées d’outils courantes

Failproof AI normalise les outils courants entre les environnements d’exécution pris en charge, de sorte qu’une politique peut généralement utiliser une seule forme d’entrée. Utilisez une coercition défensive car les valeurs d’entrée des outils sont typées comme unknown :

Choisir l’événement

La disponibilité des événements et le comportement de blocage dépendent de l’environnement d’exécution de l’agent. Consultez Environnements d’exécution des agents avant de vous appuyer sur un événement dans une flotte mixte.
SessionStart, SessionEnd, UserPromptSubmit, PreToolUse, PermissionRequest, PermissionDenied, PostToolUse, PostToolUseFailure, Notification, SubagentStart, SubagentStop, TaskCreated, TaskCompleted, Stop, StopFailure, TeammateIdle, InstructionsLoaded, ConfigChange, CwdChanged, FileChanged, WorktreeCreate, WorktreeRemove, PreCompact, PostCompact, Elicitation, ElicitationResult, UserPromptExpansion, PostToolBatch, et Setup.

Créer des modèles de politiques courants

Bloquer les écritures vers des chemins protégés

Fournir des conseils non bloquants

Conditionner la fin de session

Un événement Stop refusé peut amener l’agent à réessayer. Ne conditionnez qu’à une condition que l’agent peut satisfaire dans l’environnement actuel, et limitez chaque sous-processus ou appel réseau.

Charger des fichiers de politique

Fichiers de convention

Les fichiers de convention se chargent automatiquement :
  • Les répertoires de politiques du projet et de l’utilisateur sont tous deux chargés.
  • Les fichiers se chargent par ordre alphabétique dans chaque répertoire.
  • Un fichier doit se terminer par policies.js, policies.mjs ou policies.ts.
  • Plusieurs appels customPolicies.add() dans un même fichier sont pris en charge.
  • Les imports relatifs depuis des modules locaux sont pris en charge.
  • Les politiques de projet peuvent être archivées afin que les mêmes règles suivent le dépôt.

Fichiers explicites

Utilisez des chemins explicites lorsque la validation ou la configuration doit nommer directement le fichier d’entrée :
Les fichiers explicites se chargent en premier, suivis des fichiers de convention du projet puis des fichiers de convention utilisateur. Un fichier découvert via les deux chemins n’est chargé qu’une seule fois.

Valider et tester

La validation exécute le module via le chargeur de production et confirme qu’il enregistre au moins une politique.
La validation détecte les fichiers manquants, les erreurs de syntaxe, les imports non résolus, les exceptions de niveau supérieur et les délais d’expiration de chargement de module. Elle ne prouve pas que votre logique de correspondance est correcte. Testez au moins ces cas :
  • Une action qui doit correspondre et produire la raison de politique prévue.
  • Une action proche mais sûre qui doit renvoyer allow().
  • Des champs d’outil manquants ou malformés.
  • Une syntaxe de commande alternative, des chemins, des guillemets, des casses et des espaces blancs variés.
  • Un sous-processus ou une dépendance réseau indisponible.
Attribuez le résultat à votre politique personnalisée sous Observer → politique. Un test bloqué n’est pas suffisant si c’est une politique intégrée différente qui a pris la décision.

Comportement à l’exécution

  • Les politiques intégrées sont évaluées avant les politiques personnalisées.
  • Le premier deny arrête l’évaluation des politiques suivantes.
  • Plusieurs résultats instruct peuvent être combinés lorsqu’aucune politique ne refuse l’événement.
  • Une fonction de politique dispose d’un délai d’exécution de 10 secondes.
  • Une exception levée ou un délai d’expiration est enregistré et traité comme allow().
  • Un fichier de convention qui échoue au chargement est ignoré ; les autres fichiers personnalisés et les politiques intégrées continuent.
  • Le chargement de module de niveau supérieur dispose également d’un délai de 10 secondes.
  • Le mode observation cloud exécute la politique mais enregistre une décision non-allow sans l’appliquer.
Gardez les modules de politique déterministes et rapides. Évitez les appels réseau de niveau supérieur ou le démarrage de serveur. Limitez le travail à l’intérieur de fn, gérez les échecs de dépendance et choisissez délibérément si cet échec doit autoriser ou bloquer l’opération.

Exports de l’API

TypeScript exporte PolicyContext, PolicyResult, CustomHook, PolicyDecision et PolicyFunction.

Déployer des politiques personnalisées

Publiez une version, déployez-la en mode observation, vérifiez les décisions et passez à l’application.