Passer au contenu principal
failproofai est livré avec 30 politiques intégrées qui détectent les modes de défaillance courants des agents. Chaque politique se déclenche sur un type d’événement de hook et un nom d’outil spécifiques. Neuf politiques acceptent des paramètres permettant d’ajuster leur comportement sans écrire de code. Quatre politiques de workflow imposent un pipeline commit → push → PR → CI avant que Claude ne s’arrête.

Vue d’ensemble

Les politiques sont regroupées par catégories :
CatégoriePolitiquesType de hook
Commandes dangereusesblock-sudo, block-rm-rf, block-curl-pipe-sh, block-failproofai-commandsPreToolUse
Secrets (nettoyeurs)sanitize-jwt, sanitize-api-keys, sanitize-connection-strings, sanitize-private-key-content, sanitize-bearer-tokensPostToolUse
Environnementblock-env-files, protect-env-varsPreToolUse
Accès aux fichiersblock-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 donnéeswarn-destructive-sql, warn-schema-alterationPreToolUse
Avertissementswarn-large-file-write, warn-package-publish, warn-background-process, warn-global-package-installPreToolUse
Workflowrequire-commit-before-stop, require-push-before-stop, require-pr-before-stop, require-ci-green-before-stopStop
  • block- — empêche l’agent de continuer.
  • warn- — fournit à l’agent un contexte supplémentaire pour qu’il puisse se corriger.
  • sanitize- — supprime les données sensibles de la sortie d’outil avant que l’agent ne les consulte.
  • require- — bloque l’événement Stop jusqu’à ce que les conditions soient remplies.

Toutes les politiques prennent en charge un champ optionnel hint dans policyParams. Ce hint est ajouté au message deny ou instruct que Claude reçoit, offrant des conseils concrets sans modifier le code de la politique. Compatible avec les politiques intégrées, personnalisées et de convention. Voir Configuration → hint pour plus de détails.

Commandes dangereuses

Empêche les agents d’exécuter des opérations difficiles à annuler ou susceptibles d’endommager le système hôte.

block-sudo

Événement : PreToolUse (Bash)
Par défaut : Refuse toute commande sudo.
Bloque les invocations qui contiennent le mot-clé sudo. La correspondance de motifs est effectuée sur les tokens de commande analysés, et non sur la chaîne brute, afin d’éviter les contournements via l’injection d’opérateurs shell. Paramètres :
ParamTypePar défautDescription
allowPatternsstring[][]Préfixes de commandes exacts autorisés. Chaque entrée est comparée aux tokens argv analysés.
Exemple :
{
  "policyParams": {
    "block-sudo": {
      "allowPatterns": ["sudo systemctl status", "sudo journalctl"]
    }
  }
}
Avec cette configuration, sudo systemctl status nginx est autorisé, mais sudo rm /etc/hosts est refusé.
Les motifs sont comparés aux tokens analysés, et non à la chaîne de commande brute. Cela empêche les contournements via des opérateurs shell ajoutés en fin de commande (par ex. sudo systemctl status x; rm -rf / ne correspond pas à sudo systemctl status *).

block-rm-rf

Événement : PreToolUse (Bash)
Par défaut : Refuse rm -rf, rm -fr et les formes de suppression récursive similaires.
Paramètres :
ParamTypePar défautDescription
allowPathsstring[][]Chemins dont la suppression récursive est autorisée (ex. /tmp).
Exemple :
{
  "policyParams": {
    "block-rm-rf": {
      "allowPaths": ["/tmp", "/var/cache"]
    }
  }
}

block-curl-pipe-sh

Événement : PreToolUse (Bash)
Par défaut : Refuse curl <url> | bash, curl <url> | sh, wget <url> | bash et les motifs similaires.
Aucun paramètre.

block-failproofai-commands

Événement : PreToolUse (Bash)
Par défaut : Refuse les commandes qui désinstalleraient ou désactiveraient failproofai lui-même (ex. npm uninstall failproofai, failproofai policies --uninstall).
Aucun paramètre.

Secrets (nettoyeurs)

Empêche les agents de faire fuiter des identifiants dans leur contexte ou leurs sorties. Les politiques de nettoyage se déclenchent sur les événements PostToolUse. Lorsque Claude exécute une commande Bash, lit un fichier ou appelle un outil quelconque, ces politiques inspectent la sortie avant qu’elle ne soit renvoyée à Claude. Si un motif de secret est détecté, la politique retourne une décision de refus qui empêche la sortie d’être transmise.

sanitize-jwt

Événement : PostToolUse (tous les outils)
Par défaut : Masque les tokens JWT (trois segments base64url séparés par .).
Aucun paramètre.

sanitize-api-keys

Événement : PostToolUse (tous les outils)
Par défaut : Masque les formats courants de clés API : Anthropic (sk-ant-), OpenAI (sk-), GitHub PATs (ghp_), clés d’accès AWS (AKIA), clés Stripe (sk_live_, sk_test_) et clés Google API (AIza).
Paramètres :
ParamTypePar défautDescription
additionalPatterns{ regex: string; label: string }[][]Motifs regex supplémentaires à traiter comme des secrets.
Exemple :
{
  "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

Événement : PostToolUse (tous les outils)
Par défaut : Masque les chaînes de connexion à des bases de données contenant des identifiants intégrés (ex. postgresql://user:password@host/db).
Aucun paramètre.

sanitize-private-key-content

Événement : PostToolUse (tous les outils)
Par défaut : Masque les blocs PEM (-----BEGIN PRIVATE KEY-----, -----BEGIN RSA PRIVATE KEY-----, etc.).
Aucun paramètre.

sanitize-bearer-tokens

Événement : PostToolUse (tous les outils)
Par défaut : Masque les en-têtes Authorization: Bearer <token> dont le token fait 20 caractères ou plus.
Aucun paramètre.

Environnement

Protège la configuration d’environnement sensible contre la lecture ou l’exposition par les agents.

block-env-files

Événement : PreToolUse (Bash, Read)
Par défaut : Refuse la lecture des fichiers .env via cat .env, les appels à l’outil Read avec .env comme chemin de fichier, etc.
Ne bloque pas .envrc ni les autres fichiers liés à l’environnement — uniquement les fichiers nommés exactement .env. Aucun paramètre.

protect-env-vars

Événement : PreToolUse (Bash)
Par défaut : Refuse les commandes qui affichent les variables d’environnement : printenv, env, echo $VAR.
Aucun paramètre.

Accès aux fichiers

Maintient les agents dans les limites du projet et à l’écart des fichiers sensibles.

block-read-outside-cwd

Événement : PreToolUse (Read, Bash)
Par défaut : Refuse la lecture des fichiers situés en dehors du répertoire de travail courant (la racine du projet).
Paramètres :
ParamTypePar défautDescription
allowPathsstring[][]Préfixes de chemins absolus autorisés même s’ils sont en dehors du répertoire courant.
Exemple :
{
  "policyParams": {
    "block-read-outside-cwd": {
      "allowPaths": ["/shared/data", "/opt/company/config"]
    }
  }
}

block-secrets-write

Événement : PreToolUse (Write, Edit)
Par défaut : Refuse l’écriture dans les fichiers couramment utilisés pour les clés privées et les certificats : id_rsa, id_ed25519, *.key, *.pem, *.p12, *.pfx.
Paramètres :
ParamTypePar défautDescription
additionalPatternsstring[][]Motifs de noms de fichiers supplémentaires (style glob) à bloquer.
Exemple :
{
  "policyParams": {
    "block-secrets-write": {
      "additionalPatterns": [".token", ".secret"]
    }
  }
}

Git

Évite les pushs accidentels, les force-pushs et les erreurs de branche difficiles à annuler.

block-push-master

Événement : PreToolUse (Bash)
Par défaut : Refuse git push origin main et git push origin master.
Paramètres :
ParamTypePar défautDescription
protectedBranchesstring[]["main", "master"]Noms de branches qui ne peuvent pas recevoir de push direct.
Exemple :
{
  "policyParams": {
    "block-push-master": {
      "protectedBranches": ["main", "master", "release", "prod"]
    }
  }
}
Pour autoriser le push vers toutes les branches (ce qui désactive effectivement cette politique sans la retirer de enabledPolicies), définissez protectedBranches: [].

block-work-on-main

Événement : PreToolUse (Bash)
Par défaut : Refuse le checkout direct des branches main ou master.
Paramètres :
ParamTypePar défautDescription
protectedBranchesstring[]["main", "master"]Noms de branches qui ne peuvent pas être checkoutées directement.

block-force-push

Événement : PreToolUse (Bash)
Par défaut : Refuse git push --force et git push -f.
Aucun paramètre spécifique à la politique. Utilisez le champ transversal hint pour suggérer des alternatives :
{
  "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

Événement : PreToolUse (Bash)
Par défaut : Demande à Claude de procéder avec prudence lors de l’exécution de git commit --amend. Ne bloque pas la commande.
Aucun paramètre.

warn-git-stash-drop

Événement : PreToolUse (Bash)
Par défaut : Demande à Claude de confirmer avant d’exécuter git stash drop. Ne bloque pas la commande.
Aucun paramètre.

warn-all-files-staged

Événement : PreToolUse (Bash)
Par défaut : Demande à Claude de vérifier ce qu’il indexe lorsqu’il exécute git add -A ou git add .. Ne bloque pas la commande.
Aucun paramètre.

Base de données

Détecte les opérations SQL destructrices avant leur exécution sur votre base de données.

warn-destructive-sql

Événement : PreToolUse (Bash)
Par défaut : Demande à Claude de confirmer avant d’exécuter du SQL contenant DROP TABLE, DROP DATABASE ou DELETE sans clause WHERE.
Aucun paramètre.

warn-schema-alteration

Événement : PreToolUse (Bash)
Par défaut : Demande à Claude de confirmer avant d’exécuter des instructions ALTER TABLE.
Aucun paramètre.

Avertissements

Fournit aux agents un contexte supplémentaire avant des opérations potentiellement risquées mais non destructrices.

warn-large-file-write

Événement : PreToolUse (Write)
Par défaut : Demande à Claude de confirmer avant d’écrire des fichiers de plus de 1024 Ko.
Paramètres :
ParamTypePar défautDescription
thresholdKbnumber1024Seuil de taille de fichier en kilo-octets au-delà duquel un avertissement est émis.
Exemple :
{
  "policyParams": {
    "warn-large-file-write": {
      "thresholdKb": 256
    }
  }
}
Le gestionnaire de hook impose une limite de 1 Mo sur les payloads stdin. Pour tester cette politique avec un contenu de petite taille, définissez thresholdKb à une valeur bien inférieure à 1024.

warn-package-publish

Événement : PreToolUse (Bash)
Par défaut : Demande à Claude de confirmer avant d’exécuter npm publish.
Aucun paramètre.

warn-background-process

Événement : PreToolUse (Bash)
Par défaut : Demande à Claude d’être prudent lors du lancement de processus en arrière-plan via nohup, &, disown ou screen.
Aucun paramètre.

warn-global-package-install

Événement : PreToolUse (Bash)
Par défaut : Demande à Claude de confirmer avant d’exécuter npm install -g, yarn global add ou pip install sans environnement virtuel.
Aucun paramètre.

Comportement de l’IA

Détecte les situations où les agents se retrouvent bloqués ou se comportent de manière inattendue.

warn-repeated-tool-calls

Événement : PreToolUse (tous les outils)
Par défaut : Demande à Claude de reconsidérer sa démarche lorsque le même outil est appelé 3 fois ou plus avec des paramètres identiques — signe courant que l’agent est bloqué dans une boucle.
Aucun paramètre.

Workflow

Impose un workflow rigoureux en fin de session. Ces politiques se déclenchent sur l’événement Stop et empêchent Claude de s’arrêter tant que chaque condition n’est pas remplie. Elles suivent une chaîne de dépendances naturelle : commit → push → PR → CI. Si une politique refuse, les politiques suivantes dans la chaîne sont ignorées (court-circuit sur refus). Toutes les politiques de workflow sont fail-open : si l’outil requis n’est pas disponible (ex. gh non installé, pas de remote git), la politique autorise avec un message informatif expliquant pourquoi la vérification a été ignorée.

require-commit-before-stop

Événement : Stop
Par défaut : Refuse l’arrêt lorsqu’il existe des modifications non commitées (fichiers modifiés, indexés ou non suivis). Retourne un message informatif quand le répertoire de travail est propre.
Aucun paramètre.

require-push-before-stop

Événement : Stop
Par défaut : Refuse l’arrêt lorsqu’il existe des commits non poussés ou lorsque la branche courante n’a pas de branche de suivi distante. Suggère git push -u pour créer une branche de suivi si nécessaire. Fail-open si aucun remote n’est configuré.
Paramètres :
ParamTypePar défautDescription
remotestring"origin"Nom du remote vers lequel pousser.
Exemple :
{
  "policyParams": {
    "require-push-before-stop": {
      "remote": "upstream"
    }
  }
}

require-pr-before-stop

Événement : Stop
Par défaut : Refuse l’arrêt lorsqu’aucune pull request n’existe pour la branche courante, ou lorsque la PR existante est fermée ou mergée. Demande à Claude de créer une PR avec gh pr create.
Aucun paramètre.
Cette politique nécessite que GitHub CLI (gh) soit installé et authentifié. Exécutez gh auth login avec un personal access token disposant du scope repo pour l’accès en lecture aux pull requests. Si gh n’est pas installé ou pas authentifié, la politique est fail-open et signale la raison à Claude.

require-ci-green-before-stop

Événement : Stop
Par défaut : Refuse l’arrêt lorsque les vérifications CI échouent ou sont encore en cours sur la branche courante. Vérifie à la fois les exécutions de workflows GitHub Actions et les vérifications de bots tiers (ex. CodeRabbit, SonarCloud, Codecov). Traite les conclusions skipped comme un succès. Retourne un message informatif lorsque toutes les vérifications sont réussies.
Aucun paramètre.
Cette politique nécessite que GitHub CLI (gh) soit installé et authentifié. Exécutez gh auth login avec un personal access token disposant du scope repo pour l’accès en lecture aux exécutions de workflows Actions et à l’API Checks. Si gh n’est pas installé ou pas authentifié, la politique est fail-open et signale la raison à Claude.


Désactiver des politiques individuellement

Retirez une politique spécifique de enabledPolicies dans votre configuration, ou désactivez-la depuis l’onglet Policies du tableau de bord.
{
  "enabledPolicies": [
    "block-rm-rf",
    "sanitize-api-keys"
  ]
}
Les politiques absentes de enabledPolicies ne s’exécutent pas, même si des entrées policyParams existent pour elles.