Skip to main content
Le politiche personalizzate trasformano un modello di errore dalle tue tracce o audit in una decisione che viene eseguita mentre un agente lavora. Una politica può consentire un’azione, fornire orientamento all’agente o negare l’azione prima che causi un altro incidente. Utilizza una politica personalizzata quando il comportamento dipende dai tuoi strumenti, percorsi, comandi, ambienti o regole operative. Controlla prima il catalogo delle politiche integrate per non ricreare un controllo già esistente.

Crea una politica personalizzata

  1. Vai a Admin → policy editor, seleziona New policy e descrivi l’errore che vuoi prevenire.
  2. Aggiungi il codice della politica, quindi testa i match previsti e i match non 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 su una macchina di test in modalità observe e verifica le sue decisioni in Observe → policy prima di applicarla. L'editor di politica utilizzato per creare e pubblicare una politica personalizzata.

Inizia con una regola ristretta

Questa politica blocca i comandi Kubernetes distruttivi solo quando il comando ha come target la produzione. Tutto ciò che non rientra in quel modello di errore esatto restituisce allow().
Le buone politiche sono abbastanza ristrette da spiegare in una frase. Adatta l’azione osservabile, non l’intenzione che speri 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 utilizzare instruct() per un confine di sicurezza. La consegna della guida varia a seconda dell’harness dell’agente. Utilizza deny() quando l’azione deve essere prevenuta.

Oggetto policy

Filtra gli strumenti dentro fn. match.toolNames non fa parte del tipo di politica personalizzata pubblico.

Contesto della politica

Ogni politica riceve un PolicyContext. Tratta ogni valore opzionale come genuinamente opzionale. Le versioni dell’agente e i tipi di evento non forniscono tutti gli stessi campi.

Input comuni degli strumenti

Failproof AI normalizza i comuni strumenti tra gli harness supportati in modo che una politica possa di solito utilizzare una sola forma di input. Utilizza la coercizione difensiva perché i valori dell’input dello strumento sono tipizzati come unknown:

Scegli l’evento

La disponibilità dell’evento e il comportamento di blocco dipendono dall’harness dell’agente. Vedi Agent harnesses prima di fare affidamento su un evento su 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.

Crea modelli di politica comuni

Blocca le scritture nei percorsi protetti

Fornisci orientamento senza blocco

Controlla il completamento della sessione

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

Carica i file di politica

File di convenzione

I file di convenzione si caricano automaticamente:
  • Le directory delle politiche di progetto e utente vengono caricate entrambe.
  • 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 a customPolicies.add() in un file.
  • Sono supportati gli import relativi da moduli locali.
  • Le politiche di progetto possono essere commesse in modo che le stesse regole seguano il repository.

File espliciti

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

Valida e testa

La validazione esegue il modulo attraverso il loader di produzione e conferma che registra almeno una politica.
La validazione rileva file mancanti, errori di sintassi, import non risolti, eccezioni di primo livello e timeout di caricamento del modulo. Non prova che la tua logica di corrispondenza sia corretta. Testa almeno questi casi:
  • Un’azione che deve corrispondere e produrre il motivo della politica previsto.
  • Un’azione vicina ma sicura che deve restituire allow().
  • Campi dello strumento mancanti o malformati.
  • Sintassi alternativi del comando, percorsi, quotazione, maiuscole/minuscole e spazi vuoti.
  • Una dipendenza subprocess o di rete non disponibile.
Attribuisci il risultato alla tua politica personalizzata in Observe → policy. Un test bloccato non è sufficiente se una politica integrata diversa ha preso la decisione.

Comportamento a runtime

  • Le politiche integrate vengono valutate prima delle politiche personalizzate.
  • Il primo deny interrompe l’ulteriore valutazione della politica.
  • Più risultati di instruct possono essere combinati quando nessuna politica nega l’evento.
  • Una funzione di politica 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 le politiche integrate continuano.
  • Il caricamento del modulo di primo livello ha anche una scadenza di 10 secondi.
  • La modalità di osservazione cloud esegue la politica ma registra una decisione non-allow senza applicarla.
Mantieni i moduli di politica deterministici e veloci. Evita le chiamate di rete di primo livello o l’avvio del server. Delimita il lavoro all’interno di fn, cattura gli errori di dipendenza e scegli deliberatamente se quell’errore deve consentire o negare l’operazione.

Export dell’API

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

Distribuisci politiche personalizzate

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