Crear una política personalizada
- Panel de control
- CLI
- Ve a Admin → editor de políticas, selecciona Nueva política y describe el fallo que quieres prevenir.
- Añade el código fuente de la política y prueba coincidencias esperadas y acciones seguras sin coincidencia en el editor. Resuelve todos los errores de validación.
- Guarda el borrador y selecciona Publicar versión para crear una versión inmutable.
-
Ve a Admin → aplicación, despliega la versión en una máquina de prueba en modo observar y verifica sus decisiones en Observar → política antes de aplicarla.

Empieza con una regla estrecha
Esta política bloquea comandos destructivos de Kubernetes solo cuando el comando apunta a producción. Todo lo que quede fuera de ese modo de fallo exacto devuelveallow().
allow() en cuanto la regla no aplique.
Elige una decisión
Escribe el motivo pensando en el agente que debe recuperarse. Explica qué se detectó y qué debería hacer en su lugar.
Objeto de política
Filtra las herramientas dentro de
fn. match.toolNames no forma parte del tipo público de política personalizada.
Contexto de la política
Cada política recibe unPolicyContext.
Trata cada valor opcional como genuinamente opcional. Las versiones del agente y los tipos de evento no proveen los mismos campos en todos los casos.
Entradas comunes de herramientas
Failproof AI normaliza las herramientas comunes entre los harnesses compatibles, por lo que una política generalmente puede usar una única forma de entrada.
Usa coerción defensiva porque los valores de entrada de las herramientas están tipados como
unknown:
Elige el evento
La disponibilidad de eventos y el comportamiento de bloqueo dependen del harness del agente. Consulta Harnesses de agente antes de depender de un evento en una flota mixta.
Todos los nombres de eventos de política
Todos los nombres de eventos de política
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 y Setup.Crea patrones comunes de políticas
Bloquear escrituras en rutas protegidas
Dar orientación sin bloquear
Controlar la finalización de la sesión
Cargar archivos de políticas
Archivos de convención
Los archivos de convención se cargan automáticamente:- Se cargan tanto los directorios de políticas del proyecto como los del usuario.
- Los archivos se cargan en orden alfabético dentro de cada directorio.
- El archivo debe terminar en
policies.js,policies.mjsopolicies.ts. - Se admiten múltiples llamadas a
customPolicies.add()en un mismo archivo. - Se admiten importaciones relativas desde módulos locales.
- Las políticas del proyecto pueden commitearse para que las mismas reglas acompañen al repositorio.
Archivos explícitos
Usa rutas explícitas cuando la validación o la configuración deba nombrar el archivo de entrada directamente:Validar y probar
La validación ejecuta el módulo a través del cargador de producción y confirma que registra al menos una política.- Una acción que debe coincidir y producir el motivo de política esperado.
- Una acción cercana pero segura que debe devolver
allow(). - Campos de herramienta faltantes o malformados.
- Sintaxis de comando alternativa, rutas, comillas, mayúsculas/minúsculas y espacios en blanco.
- Un subproceso o dependencia de red no disponible.
Comportamiento en tiempo de ejecución
- Las políticas integradas se evalúan antes que las personalizadas.
- El primer
denydetiene la evaluación de políticas adicionales. - Múltiples resultados
instructpueden combinarse cuando ninguna política deniega el evento. - Una función de política tiene un plazo de ejecución de 10 segundos.
- Una excepción lanzada o un timeout se registra y se trata como
allow(). - Un archivo de convención que no se carga se omite; los demás archivos personalizados y las políticas integradas continúan.
- La carga del módulo de nivel superior también tiene un plazo de 10 segundos.
- El modo observar en la nube ejecuta la política pero registra una decisión que no es allow sin aplicarla.
fn, captura los fallos de dependencias y decide deliberadamente si ese fallo debe permitir o denegar la operación.
Exportaciones de la API
TypeScript exporta
PolicyContext, PolicyResult, CustomHook, PolicyDecision y PolicyFunction.
Desplegar políticas personalizadas
Publica una versión, despliégala en modo observar, verifica las decisiones y pasa a la aplicación.

