Skip to main content
I criteri personalizzati trasformano un pattern di errore dalle tue tracce o auditor in una decisione che si esegue mentre un agente lavora. Un criterio può consentire un’azione, fornire indicazioni all’agente o negare l’azione prima che causi un altro incidente. Utilizza un criterio personalizzato quando il comportamento dipende dai tuoi strumenti, percorsi, comandi, ambienti o regole operative. Consulta prima il Failproof AI policy pack per evitare di ricreare un controllo esistente.

Scrivi un criterio personalizzato

  1. Vai a Admin → policy editor, seleziona New policy e descrivi l’errore che vuoi prevenire.
  2. Aggiungi il codice del criterio, quindi testa i match previsti e i non-match sicuri nell’editor. Risolvi ogni errore di validazione.
  3. Salva la bozza e seleziona Publish version per creare una versione immutabile.
  4. Vai a Admin → enforcement, distribuisci la versione a una macchina di test in modalità observe e verifica le sue decisioni in Observe → policy prima di applicarla. L'editor dei criteri utilizzato per scrivere e pubblicare un criterio personalizzato.

Inizia con una regola ristretta

Questo criterio blocca i comandi Kubernetes distruttivi solo quando il comando è rivolto a produzione. Tutto al di fuori di quel pattern di errore esatto restituisce allow().
I criteri validi sono abbastanza ristretti da poter essere spiegati in una sola frase. Fai corrispondere l’azione osservabile, non l’intento che speravi avesse l’agente, e restituisci allow() non appena la regola non si applica.

Scegli una decisione

Scrivi il motivo per l’agente che deve recuperare. Spiega cosa è stato rilevato e cosa dovrebbe fare invece.
Non usare instruct() per un confine di sicurezza. La distribuzione delle indicazioni varia in base all’harness dell’agente. Usa deny() quando l’azione deve essere prevenuta.

Oggetto criterio

Filtra gli strumenti dentro fn. match.toolNames non fa parte del tipo custom-policy pubblico.

Contesto del criterio

Ogni criterio riceve un PolicyContext. Tratta ogni valore facoltativo come genuinamente facoltativo. Le versioni degli agenti e i tipi di evento non forniscono tutti gli stessi campi.

Input comuni degli strumenti

Failproof AI normalizza gli strumenti comuni tra gli harness supportati in modo che un criterio possa di solito utilizzare una sola forma di input. Usa una coercizione difensiva perché i valori di input dello strumento sono digitati come unknown:

Scegli l’evento

La disponibilità dell’evento e il comportamento di blocco dipendono dall’harness dell’agente. Vedi Agent harnesses prima di affidarti a un evento in una flotta mista.
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 e Setup.

Scrivi pattern comuni di criteri

Blocca scritture su percorsi protetti

Fornisci indicazioni non vincolanti

Blocca il completamento della sessione

Un evento Stop negato può far ritentare all’agente. Blocca solo su una condizione che l’agente può soddisfare nell’ambiente corrente e delimita ogni chiamata di subprocess o di rete.

Carica i file dei criteri

File di convenzione

I file di convenzione si caricano automaticamente:
  • Sia le directory dei criteri del progetto che quelle dell’utente vengono caricate.
  • I file si caricano alfabeticamente all’interno di ogni directory.
  • Un file deve terminare in policies.js, policies.mjs o policies.ts.
  • Sono supportate più chiamate customPolicies.add() in un file.
  • Sono supportate le importazioni relative da moduli locali.
  • I criteri del progetto possono essere sottoposti a commit in modo che le stesse regole seguano il repository.

File espliciti

Usa percorsi espliciti quando la validazione o la configurazione deve nominare direttamente il file di ingresso:
I file espliciti si caricano per primi, seguiti dai file di convenzione del progetto e dai file di convenzione dell’utente. Un file scoperto attraverso entrambi i percorsi viene caricato una sola volta.

Valida e testa

La validazione esegue il modulo attraverso il caricatore di produzione e conferma che registra almeno un criterio.
La validazione rileva file mancanti, errori di sintassi, importazioni non risolte, eccezioni di livello superiore e timeout di caricamento del modulo. Non prova che la tua logica di match sia corretta. Testa almeno questi casi:
  • Un’azione che deve corrispondere e produrre il motivo del criterio previsto.
  • Un’azione vicina ma sicura che deve restituire allow().
  • Campi dello strumento mancanti o malformati.
  • Sintassi alternative del comando, percorsi, virgolette, casing e spazi.
  • Una dipendenza di subprocess o rete non disponibile.
Attribuisci il risultato al tuo criterio personalizzato in Observe → policy. Un test bloccato non è sufficiente se un criterio integrato diverso ha preso la decisione.

Comportamento runtime

  • I criteri integrati vengono valutati prima dei criteri personalizzati.
  • Il primo deny interrompe l’ulteriore valutazione dei criteri.
  • Più risultati di instruct possono essere combinati quando nessun criterio nega l’evento.
  • Una funzione di criterio ha una scadenza di esecuzione di 10 secondi.
  • Un’eccezione lanciata o un timeout viene registrato e trattato come allow().
  • Un file di convenzione che non riesce a caricarsi viene saltato; altri file personalizzati e criteri integrati continuano.
  • Il caricamento del modulo di livello superiore ha anche una scadenza di 10 secondi.
  • La modalità observe nel cloud esegue il criterio ma registra una decisione non-allow senza applicarla.
Mantieni i moduli di criterio deterministici e veloci. Evita chiamate di rete di livello superiore o avvio del server. Delimita il lavoro dentro fn, cattura i guasti di dipendenza e scegli deliberatamente se quel guasto dovrebbe consentire o negare l’operazione.

Esportazioni API

TypeScript esporta PolicyContext, PolicyResult, CustomHook, PolicyDecision e PolicyFunction.

Distribuisci criteri personalizzati

Pubblica una versione, distribuiscila in modalità observe, verifica le decisioni e passa all’applicazione.