Crear una política personalizada
- Panel de administración
- CLI
- Ve a Admin → editor de políticas, selecciona Nueva política y describe el fallo que deseas prevenir.
- Añade el código fuente de la política, luego prueba coincidencias esperadas y no coincidencias seguras 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 → enforcement, despliega la versión en una máquina de prueba en modo observe y verifica sus decisiones en Observe → policy antes de aplicarla.

Empieza con una regla específica
Esta política bloquea comandos destructivos de Kubernetes únicamente cuando el comando apunta a producción. Todo lo que quede fuera de ese patrón 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é debe 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 política
Cada política recibe unPolicyContext.
Trata cada valor opcional como genuinamente opcional. Las versiones de agentes y los tipos de eventos no proporcionan siempre los mismos campos.
Entradas comunes de herramientas
Failproof AI normaliza las herramientas comunes entre los harnesses compatibles para que una política pueda usar generalmente 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 agentes 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.Patrones comunes de políticas
Bloquear escrituras en rutas protegidas
Proporcionar orientación sin bloquear
Controlar la finalización de la sesión
Cargar archivos de política
Archivos por convención
Los archivos por convención se cargan automáticamente:- Los directorios de políticas del proyecto y del usuario se cargan ambos.
- Los archivos se cargan en orden alfabético dentro de cada directorio.
- Un 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 incluirse en el repositorio para que las mismas reglas acompañen al código.
Archivos explícitos
Usa rutas explícitas cuando la validación o la configuración deba nombrar directamente el archivo de entrada: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 deba coincidir y producir el motivo de política previsto.
- Una acción cercana pero segura que deba devolver
allow(). - Campos de herramienta faltantes o mal formados.
- 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 políticas personalizadas.
- El primer
denydetiene la evaluación de las políticas restantes. - Múltiples resultados
instructpueden combinarse cuando ninguna política deniega el evento. - Una función de política tiene un límite de ejecución de 10 segundos.
- Una excepción lanzada o un tiempo de espera agotado se registran y se tratan como
allow(). - Un archivo de convención que no se carga correctamente se omite; los demás archivos personalizados y las políticas integradas continúan.
- La carga del módulo en el nivel superior también tiene un límite de 10 segundos.
- El modo observe en la nube ejecuta la política pero registra una decisión que no sea allow sin aplicarla.
fn, captura los fallos de dependencias y decide deliberadamente si ese fallo debe permitir o bloquear la operación.
Exportaciones de la API
TypeScript exporta
PolicyContext, PolicyResult, CustomHook, PolicyDecision y PolicyFunction.
Implementar políticas personalizadas
Publica una versión, impleméntala en modo observe, verifica las decisiones y pasa a la aplicación.

