Saltar al contenido principal
failproofai incluye 30 políticas integradas que detectan los modos de fallo más comunes en agentes. Cada política se activa en un tipo de evento de hook específico y en un nombre de herramienta determinado. Nueve políticas aceptan parámetros que permiten ajustar su comportamiento sin necesidad de escribir código. Cuatro políticas de flujo de trabajo imponen una secuencia commit → push → PR → CI antes de que Claude se detenga.

Descripción general

Las políticas están agrupadas en categorías:
CategoríaPolíticasTipo de hook
Comandos peligrososblock-sudo, block-rm-rf, block-curl-pipe-sh, block-failproofai-commandsPreToolUse
Secretos (sanitizadores)sanitize-jwt, sanitize-api-keys, sanitize-connection-strings, sanitize-private-key-content, sanitize-bearer-tokensPostToolUse
Entornoblock-env-files, protect-env-varsPreToolUse
Acceso a archivosblock-read-outside-cwd, block-secrets-writePreToolUse
Gitblock-push-master, block-work-on-main, block-force-push, warn-git-amend, warn-git-stash-drop, warn-all-files-stagedPreToolUse
Base de datoswarn-destructive-sql, warn-schema-alterationPreToolUse
Advertenciaswarn-large-file-write, warn-package-publish, warn-background-process, warn-global-package-installPreToolUse
Flujo de trabajorequire-commit-before-stop, require-push-before-stop, require-pr-before-stop, require-ci-green-before-stopStop
  • block- — impide que el agente continúe.
  • warn- — proporciona al agente contexto adicional para que pueda corregirse.
  • sanitize- — elimina datos sensibles de la salida de una herramienta antes de que el agente la reciba.
  • require- — bloquea el evento Stop hasta que se cumplan las condiciones.

Toda política admite un campo opcional hint en policyParams. El hint se añade al mensaje deny o instruct que recibe Claude, ofreciendo orientación práctica sin necesidad de modificar el código de la política. Funciona con políticas integradas, personalizadas y de convención. Consulta Configuración → hint para más detalles.

Comandos peligrosos

Evita que los agentes ejecuten operaciones difíciles de deshacer o que puedan dañar el sistema anfitrión.

block-sudo

Evento: PreToolUse (Bash)
Comportamiento predeterminado: Deniega cualquier comando sudo.
Bloquea las invocaciones que incluyen la palabra clave sudo. La coincidencia de patrones se realiza sobre los tokens del comando analizado, no sobre la cadena de texto sin procesar, para evitar eludir la política mediante inyección de operadores de shell. Parámetros:
ParámetroTipoPredeterminadoDescripción
allowPatternsstring[][]Prefijos exactos de comandos que están permitidos. Cada entrada se compara con los tokens argv analizados.
Ejemplo:
{
  "policyParams": {
    "block-sudo": {
      "allowPatterns": ["sudo systemctl status", "sudo journalctl"]
    }
  }
}
Con esta configuración, sudo systemctl status nginx está permitido, pero sudo rm /etc/hosts está denegado.
Los patrones se comparan con los tokens analizados, no con la cadena de comandos sin procesar. Esto evita eludir la política mediante operadores de shell añadidos (por ejemplo, sudo systemctl status x; rm -rf / no coincide con sudo systemctl status *).

block-rm-rf

Evento: PreToolUse (Bash)
Comportamiento predeterminado: Deniega rm -rf, rm -fr y formas similares de eliminación recursiva.
Parámetros:
ParámetroTipoPredeterminadoDescripción
allowPathsstring[][]Rutas en las que es seguro realizar una eliminación recursiva (p. ej. /tmp).
Ejemplo:
{
  "policyParams": {
    "block-rm-rf": {
      "allowPaths": ["/tmp", "/var/cache"]
    }
  }
}

block-curl-pipe-sh

Evento: PreToolUse (Bash)
Comportamiento predeterminado: Deniega curl <url> | bash, curl <url> | sh, wget <url> | bash y patrones similares.
Sin parámetros.

block-failproofai-commands

Evento: PreToolUse (Bash)
Comportamiento predeterminado: Deniega comandos que desinstalarían o desactivarían failproofai (p. ej. npm uninstall failproofai, failproofai policies --uninstall).
Sin parámetros.

Secretos (sanitizadores)

Evita que los agentes filtren credenciales en su contexto o en la salida. Las políticas sanitizadoras se activan en eventos PostToolUse. Cuando Claude ejecuta un comando Bash, lee un archivo o llama a cualquier herramienta, estas políticas inspeccionan la salida antes de que se devuelva a Claude. Si se detecta un patrón de secreto, la política devuelve una decisión de denegación que impide que la salida sea enviada de vuelta.

sanitize-jwt

Evento: PostToolUse (todas las herramientas)
Comportamiento predeterminado: Redacta tokens JWT (tres segmentos base64url separados por .).
Sin parámetros.

sanitize-api-keys

Evento: PostToolUse (todas las herramientas)
Comportamiento predeterminado: Redacta los formatos de clave API más comunes: Anthropic (sk-ant-), OpenAI (sk-), PATs de GitHub (ghp_), claves de acceso de AWS (AKIA), claves de Stripe (sk_live_, sk_test_) y claves de API de Google (AIza).
Parámetros:
ParámetroTipoPredeterminadoDescripción
additionalPatterns{ regex: string; label: string }[][]Patrones de expresiones regulares adicionales que deben tratarse como secretos.
Ejemplo:
{
  "policyParams": {
    "sanitize-api-keys": {
      "additionalPatterns": [
        { "regex": "myco_[A-Za-z0-9]{32}", "label": "MyCo internal API key" },
        { "regex": "pat_[0-9a-f]{40}", "label": "Internal PAT" }
      ]
    }
  }
}

sanitize-connection-strings

Evento: PostToolUse (todas las herramientas)
Comportamiento predeterminado: Redacta cadenas de conexión a bases de datos que contienen credenciales embebidas (p. ej. postgresql://user:password@host/db).
Sin parámetros.

sanitize-private-key-content

Evento: PostToolUse (todas las herramientas)
Comportamiento predeterminado: Redacta bloques PEM (-----BEGIN PRIVATE KEY-----, -----BEGIN RSA PRIVATE KEY-----, etc.).
Sin parámetros.

sanitize-bearer-tokens

Evento: PostToolUse (todas las herramientas)
Comportamiento predeterminado: Redacta cabeceras Authorization: Bearer <token> cuando el token tiene 20 o más caracteres.
Sin parámetros.

Entorno

Protege la configuración sensible del entorno para que los agentes no puedan leerla ni exponerla.

block-env-files

Evento: PreToolUse (Bash, Read)
Comportamiento predeterminado: Deniega la lectura de archivos .env mediante cat .env, llamadas a la herramienta Read con .env como ruta de archivo, etc.
No bloquea .envrc ni otros archivos relacionados con el entorno; solo bloquea archivos con el nombre exacto .env. Sin parámetros.

protect-env-vars

Evento: PreToolUse (Bash)
Comportamiento predeterminado: Deniega comandos que imprimen variables de entorno: printenv, env, echo $VAR.
Sin parámetros.

Acceso a archivos

Mantiene a los agentes trabajando dentro de los límites del proyecto y alejados de archivos sensibles.

block-read-outside-cwd

Evento: PreToolUse (Read, Bash)
Comportamiento predeterminado: Deniega la lectura de archivos fuera del directorio de trabajo actual (la raíz del proyecto).
Parámetros:
ParámetroTipoPredeterminadoDescripción
allowPathsstring[][]Prefijos de rutas absolutas que están permitidos aunque estén fuera del directorio de trabajo actual.
Ejemplo:
{
  "policyParams": {
    "block-read-outside-cwd": {
      "allowPaths": ["/shared/data", "/opt/company/config"]
    }
  }
}

block-secrets-write

Evento: PreToolUse (Write, Edit)
Comportamiento predeterminado: Deniega escrituras en archivos habitualmente usados para claves privadas y certificados: id_rsa, id_ed25519, *.key, *.pem, *.p12, *.pfx.
Parámetros:
ParámetroTipoPredeterminadoDescripción
additionalPatternsstring[][]Patrones de nombre de archivo adicionales (estilo glob) que se deben bloquear.
Ejemplo:
{
  "policyParams": {
    "block-secrets-write": {
      "additionalPatterns": [".token", ".secret"]
    }
  }
}

Git

Evita pushes accidentales, force-pushes y errores de rama difíciles de deshacer.

block-push-master

Evento: PreToolUse (Bash)
Comportamiento predeterminado: Deniega git push origin main y git push origin master.
Parámetros:
ParámetroTipoPredeterminadoDescripción
protectedBranchesstring[]["main", "master"]Nombres de ramas a las que no se puede hacer push directamente.
Ejemplo:
{
  "policyParams": {
    "block-push-master": {
      "protectedBranches": ["main", "master", "release", "prod"]
    }
  }
}
Para permitir el push a todas las ramas (desactivando efectivamente esta política sin eliminarla de enabledPolicies), establece protectedBranches: [].

block-work-on-main

Evento: PreToolUse (Bash)
Comportamiento predeterminado: Deniega hacer checkout directamente en las ramas main o master.
Parámetros:
ParámetroTipoPredeterminadoDescripción
protectedBranchesstring[]["main", "master"]Nombres de ramas a las que no se puede hacer checkout directamente.

block-force-push

Evento: PreToolUse (Bash)
Comportamiento predeterminado: Deniega git push --force y git push -f.
Sin parámetros específicos de política. Usa el campo transversal hint para sugerir alternativas:
{
  "policyParams": {
    "block-force-push": {
      "hint": "Create a new branch from your current HEAD (e.g. `git checkout -b <new-branch>`) and push that instead."
    }
  }
}

warn-git-amend

Evento: PreToolUse (Bash)
Comportamiento predeterminado: Instruye a Claude para que proceda con cuidado al ejecutar git commit --amend. No bloquea el comando.
Sin parámetros.

warn-git-stash-drop

Evento: PreToolUse (Bash)
Comportamiento predeterminado: Instruye a Claude para que confirme antes de ejecutar git stash drop. No bloquea el comando.
Sin parámetros.

warn-all-files-staged

Evento: PreToolUse (Bash)
Comportamiento predeterminado: Instruye a Claude para que revise lo que está añadiendo al área de staging cuando ejecuta git add -A o git add .. No bloquea el comando.
Sin parámetros.

Base de datos

Detecta operaciones SQL destructivas antes de que se ejecuten contra tu base de datos.

warn-destructive-sql

Evento: PreToolUse (Bash)
Comportamiento predeterminado: Instruye a Claude para que confirme antes de ejecutar SQL que contenga DROP TABLE, DROP DATABASE o DELETE sin cláusula WHERE.
Sin parámetros.

warn-schema-alteration

Evento: PreToolUse (Bash)
Comportamiento predeterminado: Instruye a Claude para que confirme antes de ejecutar sentencias ALTER TABLE.
Sin parámetros.

Advertencias

Proporciona a los agentes contexto adicional antes de operaciones potencialmente arriesgadas pero no destructivas.

warn-large-file-write

Evento: PreToolUse (Write)
Comportamiento predeterminado: Instruye a Claude para que confirme antes de escribir archivos de más de 1024 KB.
Parámetros:
ParámetroTipoPredeterminadoDescripción
thresholdKbnumber1024Umbral de tamaño de archivo en kilobytes a partir del cual se emite una advertencia.
Ejemplo:
{
  "policyParams": {
    "warn-large-file-write": {
      "thresholdKb": 256
    }
  }
}
El manejador de hooks impone un límite de 1 MB en stdin para los payloads. Para probar esta política con contenido pequeño, establece thresholdKb con un valor bastante inferior a 1024.

warn-package-publish

Evento: PreToolUse (Bash)
Comportamiento predeterminado: Instruye a Claude para que confirme antes de ejecutar npm publish.
Sin parámetros.

warn-background-process

Evento: PreToolUse (Bash)
Comportamiento predeterminado: Instruye a Claude para que tenga cuidado al lanzar procesos en segundo plano mediante nohup, &, disown o screen.
Sin parámetros.

warn-global-package-install

Evento: PreToolUse (Bash)
Comportamiento predeterminado: Instruye a Claude para que confirme antes de ejecutar npm install -g, yarn global add o pip install sin un entorno virtual.
Sin parámetros.

Comportamiento de la IA

Detecta cuándo los agentes se quedan bloqueados o se comportan de forma inesperada.

warn-repeated-tool-calls

Evento: PreToolUse (todas las herramientas)
Comportamiento predeterminado: Instruye a Claude para que reconsidere cuando la misma herramienta se llama 3 o más veces con parámetros idénticos, lo cual es una señal habitual de que el agente está atrapado en un bucle.
Sin parámetros.

Flujo de trabajo

Impone un flujo de trabajo disciplinado al final de la sesión. Estas políticas se activan en el evento Stop y deniegan a Claude la posibilidad de detenerse hasta que se cumpla cada condición. Siguen una cadena de dependencias natural: commit → push → PR → CI. Si una política deniega, las políticas posteriores de la cadena se omiten (la denegación provoca un cortocircuito). Todas las políticas de flujo de trabajo son fail-open: si la herramienta requerida no está disponible (p. ej. gh no está instalado, no hay remote de git), la política permite continuar con un mensaje informativo que explica por qué se omitió la verificación.

require-commit-before-stop

Evento: Stop
Comportamiento predeterminado: Deniega la detención cuando hay cambios sin confirmar (archivos modificados, en staging o sin seguimiento). Devuelve un mensaje informativo cuando el directorio de trabajo está limpio.
Sin parámetros.

require-push-before-stop

Evento: Stop
Comportamiento predeterminado: Deniega la detención cuando hay commits sin enviar o cuando la rama actual no tiene rama de seguimiento remota. Sugiere git push -u para crear una rama de seguimiento si es necesario. Es fail-open si no hay ningún remote configurado.
Parámetros:
ParámetroTipoPredeterminadoDescripción
remotestring"origin"Nombre del remote al que hacer push.
Ejemplo:
{
  "policyParams": {
    "require-push-before-stop": {
      "remote": "upstream"
    }
  }
}

require-pr-before-stop

Evento: Stop
Comportamiento predeterminado: Deniega la detención cuando no existe ningún pull request para la rama actual, o cuando el PR existente está cerrado o ya fue mergeado. Instruye a Claude para que cree un PR con gh pr create.
Sin parámetros.
Esta política requiere que GitHub CLI (gh) esté instalado y autenticado. Ejecuta gh auth login con un token de acceso personal que tenga alcance repo para acceso de lectura a pull requests. Si gh no está instalado o no está autenticado, la política es fail-open e informa del motivo a Claude.

require-ci-green-before-stop

Evento: Stop
Comportamiento predeterminado: Deniega la detención cuando las verificaciones de CI están fallando o aún en ejecución en la rama actual. Comprueba tanto las ejecuciones de flujos de trabajo de GitHub Actions como las verificaciones de bots de terceros (p. ej. CodeRabbit, SonarCloud, Codecov). Trata las conclusiones skipped como éxito. Devuelve un mensaje informativo cuando todas las verificaciones pasan.
Sin parámetros.
Esta política requiere que GitHub CLI (gh) esté instalado y autenticado. Ejecuta gh auth login con un token de acceso personal que tenga alcance repo para acceso de lectura a las ejecuciones de flujos de trabajo de Actions y la API de Checks. Si gh no está instalado o no está autenticado, la política es fail-open e informa del motivo a Claude.


Desactivar políticas individuales

Elimina una política específica de enabledPolicies en tu configuración, o desactívala en la pestaña Políticas del dashboard.
{
  "enabledPolicies": [
    "block-rm-rf",
    "sanitize-api-keys"
  ]
}
Las políticas que no aparecen en enabledPolicies no se ejecutan, aunque existan entradas en policyParams para ellas.