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 indicazioni all’agente o negare l’azione prima che causi un altro incidente. Usa una politica personalizzata quando il comportamento dipende dai tuoi strumenti, percorsi, comandi, ambienti o regole operative. Consulta il catalogo delle politiche integrate prima di ricrearne una esistente.

Crea una politica personalizzata

  1. Vai a Admin → policy editor, seleziona New policy e descrivi l’errore che desideri prevenire.
  2. Aggiungi il codice sorgente della politica, quindi testa i corrispondenze previste e i non-corrispondenze sicuri nell’editor. Risolvi ogni errore di convalida.
  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 sotto Observe → policy prima di applicarla. L'editor delle politiche 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 bersaglio la produzione. Tutto ciò che è al di fuori di quel preciso modello di errore restituisce allow().
Le buone politiche sono abbastanza ristrette da poter essere spiegate in una frase. Corrisponde all’azione osservabile, non all’intento che speriamo 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 limite di sicurezza. La consegna delle indicazioni varia a seconda dell’harness dell’agente. Usa deny() quando l’azione deve essere impedita.

Oggetto politica

Filtra gli strumenti all’interno di fn. match.toolNames non fa parte del tipo personalizzato di politica pubblica.

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 degli strumenti comuni

Failproof AI normalizza gli strumenti comuni su tutti gli harness supportati in modo che una politica possa solitamente usare una forma di input. Usa coercizione difensiva perché i valori di 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 basarsi su 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.

Crea modelli di politiche comuni

Blocca le scritture in percorsi protetti

Fornisci indicazioni non vincolanti

Limita il completamento della sessione

Un evento Stop negato può far riprovare l’agente. Limita solo a una condizione che l’agente può soddisfare nell’ambiente attuale e circoscrivi ogni chiamata di subprocess o rete.

Carica file di politica

File di convenzione

I file di convenzione vengono caricati automaticamente:
  • Vengono caricate sia le directory delle politiche del progetto che quelle dell’utente.
  • I file vengono caricati alfabeticamente all’interno di ogni directory.
  • Un file deve terminare con policies.js, policies.mjs o policies.ts.
  • Sono supportate più chiamate customPolicies.add() in un file.
  • Sono supportati i relativi import da moduli locali.
  • Le politiche del progetto possono essere commitmate in modo che le stesse regole seguano il repository.

File espliciti

Usa percorsi espliciti quando la convalida o la configurazione dovrebbe denominare direttamente il file di ingresso:
I file espliciti vengono caricati per primi, seguiti dai file di convenzione del progetto e poi dai file di convenzione dell’utente. Un file scoperto in entrambi i percorsi viene caricato una volta.

Valida e testa

La convalida esegue il modulo attraverso il loader di produzione e conferma che registra almeno una politica.
La convalida rileva file mancanti, errori di sintassi, import non risolti, eccezioni di primo livello e timeout di caricamento dei moduli. 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 alternativa di comandi, percorsi, virgolette, maiuscole/minuscole e spazi bianchi.
  • Una dipendenza di subprocess o rete non disponibile.
Attribuisci il risultato alla tua politica personalizzata sotto Observe → policy. Un test bloccato non è sufficiente se una diversa politica integrata 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 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à observe del cloud esegue la politica ma registra una decisione non consentire senza applicarla.
Mantieni i moduli di politica deterministici e veloci. Evita le chiamate di rete di primo livello o l’avvio del server. Circoscrivi il lavoro all’interno di 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 politiche personalizzate

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