Skip to main content
Benutzerdefinierte Richtlinien verwandeln ein Fehlermuster aus Ihren Traces oder Audits in eine Entscheidung, die während der Arbeit eines Agenten ausgeführt wird. Eine Richtlinie kann eine Aktion erlauben, dem Agenten Hinweise geben oder die Aktion blockieren, bevor sie einen weiteren Vorfall verursacht. Verwenden Sie eine benutzerdefinierte Richtlinie, wenn das Verhalten von Ihren Tools, Pfaden, Befehlen, Umgebungen oder Betriebsregeln abhängt. Prüfen Sie zunächst das Failproof AI Policy-Paket, damit Sie keine vorhandene Kontrolle neu erstellen.

Benutzerdefinierte Richtlinie erstellen

  1. Gehen Sie zu Admin → Policy-Editor, wählen Sie Neue Richtlinie und beschreiben Sie den Fehler, den Sie verhindern möchten.
  2. Fügen Sie den Richtlinienquellcode hinzu und testen Sie im Editor erwartete Treffer sowie sichere Nicht-Treffer. Beheben Sie jeden Validierungsfehler.
  3. Speichern Sie den Entwurf und wählen Sie Version veröffentlichen, um eine unveränderliche Version zu erstellen.
  4. Gehen Sie zu Admin → Durchsetzung, stellen Sie die Version auf einem Testrechner im Beobachtungs-Modus bereit, und überprüfen Sie die Entscheidungen unter Beobachten → Richtlinie, bevor Sie sie durchsetzen. Der Policy-Editor zum Erstellen und Veröffentlichen einer benutzerdefinierten Richtlinie.

Mit einer engen Regel beginnen

Diese Richtlinie blockiert destruktive Kubernetes-Befehle nur dann, wenn der Befehl auf die Produktionsumgebung abzielt. Alles außerhalb dieses genauen Fehlermusters gibt allow() zurück.
Gute Richtlinien sind eng genug, um sie in einem Satz zu erklären. Treffen Sie die beobachtbare Aktion – nicht die Absicht, die Sie dem Agenten zuschreiben – und geben Sie allow() zurück, sobald die Regel nicht zutrifft.

Eine Entscheidung auswählen

Schreiben Sie die Begründung für den Agenten, der sich erholen muss. Erklären Sie, was erkannt wurde und was stattdessen getan werden sollte.
Verwenden Sie instruct() nicht für eine Sicherheitsgrenze. Die Zustellung von Hinweisen variiert je nach Agent-Harness. Verwenden Sie deny(), wenn die Aktion verhindert werden muss.

Policy-Objekt

Tools innerhalb von fn filtern. match.toolNames ist nicht Teil des öffentlichen benutzerdefinierten Richtlinientyps.

Richtlinienkontext

Jede Richtlinie empfängt einen PolicyContext. Jeden optionalen Wert als tatsächlich optional behandeln. Agent-Versionen und Ereignistypen stellen nicht alle dieselben Felder bereit.

Häufige Tool-Eingaben

Failproof AI normalisiert gängige Tools über unterstützte Harnesses hinweg, sodass eine Richtlinie in der Regel eine einheitliche Eingabeform verwenden kann. Defensive Typumwandlung verwenden, da Tool-Eingabewerte als unknown typisiert sind:

Ereignis auswählen

Die Verfügbarkeit von Ereignissen und das Blockierverhalten hängen vom Agent-Harness ab. Lesen Sie Agent-Harnesses, bevor Sie sich auf ein Ereignis über eine gemischte Flotte hinweg verlassen.
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 und Setup.

Häufige Richtlinienmuster erstellen

Schreibvorgänge auf geschützte Pfade blockieren

Nicht-blockierende Hinweise geben

Sitzungsabschluss prüfen

Ein abgelehntes Stop-Ereignis kann dazu führen, dass der Agent es erneut versucht. Prüfen Sie nur eine Bedingung, die der Agent in der aktuellen Umgebung erfüllen kann, und begrenzen Sie jeden Unterprozess oder Netzwerkaufruf.

Richtliniendateien laden

Konventionsdateien

Konventionsdateien werden automatisch geladen:
  • Projekt- und Benutzer-Richtlinienverzeichnisse werden beide geladen.
  • Dateien werden alphabetisch innerhalb jedes Verzeichnisses geladen.
  • Eine Datei muss auf policies.js, policies.mjs oder policies.ts enden.
  • Mehrere customPolicies.add()-Aufrufe in einer Datei werden unterstützt.
  • Relative Importe aus lokalen Modulen werden unterstützt.
  • Projektrichtlinien können eingecheckt werden, sodass dieselben Regeln dem Repository folgen.

Explizite Dateien

Verwenden Sie explizite Pfade, wenn Validierung oder Konfiguration die Einstiegsdatei direkt benennen soll:
Explizite Dateien werden zuerst geladen, gefolgt von Projekt-Konventionsdateien und dann Benutzer-Konventionsdateien. Eine Datei, die über beide Pfade gefunden wird, wird nur einmal geladen.

Validieren und testen

Die Validierung führt das Modul durch den Produktionslader aus und bestätigt, dass es mindestens eine Richtlinie registriert.
Die Validierung erkennt fehlende Dateien, Syntaxfehler, ungelöste Importe, Top-Level-Ausnahmen und Modul-Lade-Timeouts. Sie beweist nicht, dass Ihre Match-Logik korrekt ist. Testen Sie mindestens diese Fälle:
  • Eine Aktion, die treffen muss und den vorgesehenen Richtliniengrund erzeugt.
  • Eine ähnliche, aber sichere Aktion, die allow() zurückgeben muss.
  • Fehlende oder fehlerhafte Tool-Felder.
  • Alternative Befehlssyntax, Pfade, Anführungszeichen, Groß-/Kleinschreibung und Leerzeichen.
  • Ein nicht verfügbarer Unterprozess oder eine Netzwerkabhängigkeit.
Ordnen Sie das Ergebnis unter Beobachten → Richtlinie Ihrer benutzerdefinierten Richtlinie zu. Ein blockierter Test reicht nicht aus, wenn eine andere eingebaute Richtlinie die Entscheidung getroffen hat.

Laufzeitverhalten

  • Eingebaute Richtlinien werden vor benutzerdefinierten Richtlinien ausgewertet.
  • Das erste deny stoppt die weitere Richtlinienauswertung.
  • Mehrere instruct-Ergebnisse können kombiniert werden, wenn keine Richtlinie das Ereignis ablehnt.
  • Eine Richtlinienfunktion hat eine Ausführungsfrist von 10 Sekunden.
  • Eine ausgelöste Ausnahme oder ein Timeout wird protokolliert und als allow() behandelt.
  • Eine Konventionsdatei, die nicht geladen werden kann, wird übersprungen; andere benutzerdefinierte Dateien und eingebaute Richtlinien werden weiter ausgeführt.
  • Das Top-Level-Modulladen hat ebenfalls eine Frist von 10 Sekunden.
  • Der Cloud-Beobachtungsmodus führt die Richtlinie aus, zeichnet aber eine Nicht-allow-Entscheidung auf, ohne sie durchzusetzen.
Richtlinienmodule deterministisch und schnell halten. Top-Level-Netzwerkaufrufe oder Server-Starts vermeiden. Arbeit innerhalb von fn begrenzen, Abhängigkeitsfehler abfangen und bewusst entscheiden, ob dieser Fehler die Operation erlauben oder blockieren soll.

API-Exporte

TypeScript exportiert PolicyContext, PolicyResult, CustomHook, PolicyDecision und PolicyFunction.

Benutzerdefinierte Richtlinien bereitstellen

Eine Version veröffentlichen, im Beobachtungsmodus bereitstellen, Entscheidungen überprüfen und zur Durchsetzung übergehen.