Zum Hauptinhalt springen
failproofai wird mit 30 eingebauten Richtlinien ausgeliefert, die häufige Agent-Fehlerszenarien abfangen. Jede Richtlinie wird bei einem bestimmten Hook-Ereignistyp und Tool-Namen ausgelöst. Neun Richtlinien akzeptieren Parameter, mit denen Sie ihr Verhalten anpassen können, ohne Code schreiben zu müssen. Vier Workflow-Richtlinien erzwingen eine Commit → Push → PR → CI-Pipeline, bevor Claude stoppt.

Übersicht

Richtlinien sind in Kategorien gruppiert:
KategorieRichtlinienHook-Typ
Gefährliche Befehleblock-sudo, block-rm-rf, block-curl-pipe-sh, block-failproofai-commandsPreToolUse
Secrets (Sanitizer)sanitize-jwt, sanitize-api-keys, sanitize-connection-strings, sanitize-private-key-content, sanitize-bearer-tokensPostToolUse
Umgebungblock-env-files, protect-env-varsPreToolUse
Dateizugriffblock-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
Datenbankwarn-destructive-sql, warn-schema-alterationPreToolUse
Warnungenwarn-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- — verhindert, dass der Agent fortfährt.
  • warn- — gibt dem Agenten zusätzlichen Kontext, damit er sich selbst korrigieren kann.
  • sanitize- — bereinigt sensible Daten aus der Tool-Ausgabe, bevor der Agent sie sieht.
  • require- — blockiert das Stop-Ereignis, bis Bedingungen erfüllt sind.

Jede Richtlinie unterstützt ein optionales hint-Feld in policyParams. Der Hinweis wird an die deny- oder instruct-Nachricht angehängt, die Claude sieht, und bietet umsetzbare Orientierung, ohne den Richtlinien-Code zu ändern. Funktioniert mit eingebauten, benutzerdefinierten und konventionsbasierten Richtlinien. Weitere Details unter Konfiguration → hint.

Gefährliche Befehle

Verhindert, dass Agenten Operationen ausführen, die schwer rückgängig zu machen sind oder das Hostsystem beschädigen könnten.

block-sudo

Ereignis: PreToolUse (Bash)
Standard: Verweigert jeden sudo-Befehl.
Blockiert Aufrufe, die das Schlüsselwort sudo enthalten. Der Musterabgleich erfolgt auf geparsten Befehlstokens, nicht auf dem rohen String, um Umgehungen durch Shell-Operator-Injektion zu verhindern. Parameter:
ParamTypStandardBeschreibung
allowPatternsstring[][]Exakte Befehlspräfixe, die erlaubt sind. Jeder Eintrag wird gegen die geparsten argv-Tokens abgeglichen.
Beispiel:
{
  "policyParams": {
    "block-sudo": {
      "allowPatterns": ["sudo systemctl status", "sudo journalctl"]
    }
  }
}
Mit dieser Konfiguration ist sudo systemctl status nginx erlaubt, aber sudo rm /etc/hosts wird verweigert.
Muster werden gegen geparste Tokens abgeglichen, nicht gegen den rohen Befehlsstring. Dies verhindert Umgehungen über angehängte Shell-Operatoren (z. B. sudo systemctl status x; rm -rf / stimmt nicht mit sudo systemctl status * überein).

block-rm-rf

Ereignis: PreToolUse (Bash)
Standard: Verweigert rm -rf, rm -fr und ähnliche rekursive Löschformen.
Parameter:
ParamTypStandardBeschreibung
allowPathsstring[][]Pfade, die sicher rekursiv gelöscht werden dürfen (z. B. /tmp).
Beispiel:
{
  "policyParams": {
    "block-rm-rf": {
      "allowPaths": ["/tmp", "/var/cache"]
    }
  }
}

block-curl-pipe-sh

Ereignis: PreToolUse (Bash)
Standard: Verweigert curl <url> | bash, curl <url> | sh, wget <url> | bash und ähnliche Muster.
Keine Parameter.

block-failproofai-commands

Ereignis: PreToolUse (Bash)
Standard: Verweigert Befehle, die failproofai selbst deinstallieren oder deaktivieren würden (z. B. npm uninstall failproofai, failproofai policies --uninstall).
Keine Parameter.

Secrets (Sanitizer)

Verhindert, dass Agenten Anmeldeinformationen in ihren Kontext oder ihre Ausgabe leaken. Sanitizer-Richtlinien werden bei PostToolUse-Ereignissen ausgelöst. Wenn Claude einen Bash-Befehl ausführt, eine Datei liest oder ein beliebiges Tool aufruft, prüfen diese Richtlinien die Ausgabe, bevor sie an Claude zurückgegeben wird. Wird ein Secret-Muster erkannt, gibt die Richtlinie eine deny-Entscheidung zurück, die verhindert, dass die Ausgabe zurückgeleitet wird.

sanitize-jwt

Ereignis: PostToolUse (alle Tools)
Standard: Schwärzt JWT-Tokens (drei base64url-Segmente, getrennt durch .).
Keine Parameter.

sanitize-api-keys

Ereignis: PostToolUse (alle Tools)
Standard: Schwärzt gängige API-Key-Formate: Anthropic (sk-ant-), OpenAI (sk-), GitHub PATs (ghp_), AWS-Zugriffsschlüssel (AKIA), Stripe-Schlüssel (sk_live_, sk_test_) und Google API-Schlüssel (AIza).
Parameter:
ParamTypStandardBeschreibung
additionalPatterns{ regex: string; label: string }[][]Zusätzliche Regex-Muster, die als Secrets behandelt werden sollen.
Beispiel:
{
  "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

Ereignis: PostToolUse (alle Tools)
Standard: Schwärzt Datenbankverbindungsstrings, die eingebettete Anmeldeinformationen enthalten (z. B. postgresql://user:password@host/db).
Keine Parameter.

sanitize-private-key-content

Ereignis: PostToolUse (alle Tools)
Standard: Schwärzt PEM-Blöcke (-----BEGIN PRIVATE KEY-----, -----BEGIN RSA PRIVATE KEY----- usw.).
Keine Parameter.

sanitize-bearer-tokens

Ereignis: PostToolUse (alle Tools)
Standard: Schwärzt Authorization: Bearer <token>-Header, bei denen das Token 20 oder mehr Zeichen lang ist.
Keine Parameter.

Umgebung

Schützt sensible Umgebungskonfigurationen davor, von Agenten gelesen oder offengelegt zu werden.

block-env-files

Ereignis: PreToolUse (Bash, Read)
Standard: Verweigert das Lesen von .env-Dateien über cat .env, Read-Tool-Aufrufe mit .env als Dateipfad usw.
Blockiert nicht .envrc oder andere umgebungsbezogene Dateien – nur Dateien, die exakt .env heißen. Keine Parameter.

protect-env-vars

Ereignis: PreToolUse (Bash)
Standard: Verweigert Befehle, die Umgebungsvariablen ausgeben: printenv, env, echo $VAR.
Keine Parameter.

Dateizugriff

Hält Agenten innerhalb der Projektgrenzen und fern von sensiblen Dateien.

block-read-outside-cwd

Ereignis: PreToolUse (Read, Bash)
Standard: Verweigert das Lesen von Dateien außerhalb des aktuellen Arbeitsverzeichnisses (dem Projektstamm).
Parameter:
ParamTypStandardBeschreibung
allowPathsstring[][]Absolute Pfadpräfixe, die erlaubt sind, auch wenn sie außerhalb des cwd liegen.
Beispiel:
{
  "policyParams": {
    "block-read-outside-cwd": {
      "allowPaths": ["/shared/data", "/opt/company/config"]
    }
  }
}

block-secrets-write

Ereignis: PreToolUse (Write, Edit)
Standard: Verweigert Schreibvorgänge in Dateien, die üblicherweise für private Schlüssel und Zertifikate verwendet werden: id_rsa, id_ed25519, *.key, *.pem, *.p12, *.pfx.
Parameter:
ParamTypStandardBeschreibung
additionalPatternsstring[][]Zusätzliche Dateinamen-Muster (Glob-Stil) zum Blockieren.
Beispiel:
{
  "policyParams": {
    "block-secrets-write": {
      "additionalPatterns": [".token", ".secret"]
    }
  }
}

Git

Verhindert versehentliche Pushes, Force-Pushes und Branch-Fehler, die schwer rückgängig zu machen sind.

block-push-master

Ereignis: PreToolUse (Bash)
Standard: Verweigert git push origin main und git push origin master.
Parameter:
ParamTypStandardBeschreibung
protectedBranchesstring[]["main", "master"]Branch-Namen, in die nicht direkt gepusht werden darf.
Beispiel:
{
  "policyParams": {
    "block-push-master": {
      "protectedBranches": ["main", "master", "release", "prod"]
    }
  }
}
Um Pushes in alle Branches zu erlauben (und diese Richtlinie effektiv zu deaktivieren, ohne sie aus enabledPolicies zu entfernen), setzen Sie protectedBranches: [].

block-work-on-main

Ereignis: PreToolUse (Bash)
Standard: Verweigert das direkte Auschecken der Branches main oder master.
Parameter:
ParamTypStandardBeschreibung
protectedBranchesstring[]["main", "master"]Branch-Namen, die nicht direkt ausgecheckt werden dürfen.

block-force-push

Ereignis: PreToolUse (Bash)
Standard: Verweigert git push --force und git push -f.
Keine richtlinienspezifischen Parameter. Verwenden Sie das übergreifende hint, um Alternativen vorzuschlagen:
{
  "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

Ereignis: PreToolUse (Bash)
Standard: Weist Claude an, beim Ausführen von git commit --amend vorsichtig vorzugehen. Blockiert den Befehl nicht.
Keine Parameter.

warn-git-stash-drop

Ereignis: PreToolUse (Bash)
Standard: Weist Claude an, vor dem Ausführen von git stash drop zu bestätigen. Blockiert den Befehl nicht.
Keine Parameter.

warn-all-files-staged

Ereignis: PreToolUse (Bash)
Standard: Weist Claude an, zu überprüfen, was es staged, wenn es git add -A oder git add . ausführt. Blockiert den Befehl nicht.
Keine Parameter.

Datenbank

Fängt destruktive SQL-Operationen ab, bevor sie gegen Ihre Datenbank ausgeführt werden.

warn-destructive-sql

Ereignis: PreToolUse (Bash)
Standard: Weist Claude an, zu bestätigen, bevor SQL ausgeführt wird, das DROP TABLE, DROP DATABASE oder DELETE ohne eine WHERE-Klausel enthält.
Keine Parameter.

warn-schema-alteration

Ereignis: PreToolUse (Bash)
Standard: Weist Claude an, zu bestätigen, bevor ALTER TABLE-Anweisungen ausgeführt werden.
Keine Parameter.

Warnungen

Gibt Agenten zusätzlichen Kontext vor potenziell riskanten, aber nicht destruktiven Operationen.

warn-large-file-write

Ereignis: PreToolUse (Write)
Standard: Weist Claude an, zu bestätigen, bevor Dateien größer als 1024 KB geschrieben werden.
Parameter:
ParamTypStandardBeschreibung
thresholdKbnumber1024Dateigrößenschwellenwert in Kilobyte, ab dem eine Warnung ausgegeben wird.
Beispiel:
{
  "policyParams": {
    "warn-large-file-write": {
      "thresholdKb": 256
    }
  }
}
Der Hook-Handler erzwingt ein stdin-Limit von 1 MB für Payloads. Um diese Richtlinie mit kleinen Inhalten zu testen, setzen Sie thresholdKb auf einen Wert deutlich unter 1024.

warn-package-publish

Ereignis: PreToolUse (Bash)
Standard: Weist Claude an, zu bestätigen, bevor npm publish ausgeführt wird.
Keine Parameter.

warn-background-process

Ereignis: PreToolUse (Bash)
Standard: Weist Claude an, vorsichtig zu sein, wenn Hintergrundprozesse über nohup, &, disown oder screen gestartet werden.
Keine Parameter.

warn-global-package-install

Ereignis: PreToolUse (Bash)
Standard: Weist Claude an, zu bestätigen, bevor npm install -g, yarn global add oder pip install ohne virtuelle Umgebung ausgeführt wird.
Keine Parameter.

KI-Verhalten

Erkennt, wenn Agenten feststecken oder sich unerwartet verhalten.

warn-repeated-tool-calls

Ereignis: PreToolUse (alle Tools)
Standard: Weist Claude an, zu überdenken, wenn dasselbe Tool 3+ mal mit identischen Parametern aufgerufen wird – ein häufiges Zeichen dafür, dass der Agent in einer Schleife feststeckt.
Keine Parameter.

Workflow

Erzwingt einen disziplinierten Workflow am Sitzungsende. Diese Richtlinien werden beim Stop-Ereignis ausgelöst und verweigern Claude das Stoppen, bis jede Bedingung erfüllt ist. Sie folgen einer natürlichen Abhängigkeitskette: Commit → Push → PR → CI. Wenn eine Richtlinie verweigert, werden spätere Richtlinien in der Kette übersprungen (deny schließt kurz). Alle Workflow-Richtlinien sind fail-open: Wenn das erforderliche Tool nicht verfügbar ist (z. B. gh nicht installiert, kein Git-Remote), erlaubt die Richtlinie den Vorgang mit einer informativen Meldung, die erklärt, warum die Prüfung übersprungen wurde.

require-commit-before-stop

Ereignis: Stop
Standard: Verweigert das Stoppen, wenn es nicht committete Änderungen gibt (geänderte, gestagete oder nicht verfolgte Dateien). Gibt eine informative Meldung zurück, wenn das Arbeitsverzeichnis sauber ist.
Keine Parameter.

require-push-before-stop

Ereignis: Stop
Standard: Verweigert das Stoppen, wenn es nicht gepushte Commits gibt oder der aktuelle Branch keinen Remote-Tracking-Branch hat. Schlägt git push -u vor, um bei Bedarf einen Tracking-Branch zu erstellen. Fail-open, wenn kein Remote konfiguriert ist.
Parameter:
ParamTypStandardBeschreibung
remotestring"origin"Remote-Name, an den gepusht werden soll.
Beispiel:
{
  "policyParams": {
    "require-push-before-stop": {
      "remote": "upstream"
    }
  }
}

require-pr-before-stop

Ereignis: Stop
Standard: Verweigert das Stoppen, wenn für den aktuellen Branch kein Pull Request existiert oder der vorhandene PR geschlossen/gemergt ist. Weist Claude an, einen PR mit gh pr create zu erstellen.
Keine Parameter.
Diese Richtlinie erfordert, dass die GitHub CLI (gh) installiert und authentifiziert ist. Führen Sie gh auth login mit einem Personal Access Token aus, das den repo-Scope für Lesezugriff auf Pull Requests hat. Wenn gh nicht installiert oder nicht authentifiziert ist, schlägt die Richtlinie offen fehl und meldet den Grund an Claude.

require-ci-green-before-stop

Ereignis: Stop
Standard: Verweigert das Stoppen, wenn CI-Prüfungen fehlschlagen oder auf dem aktuellen Branch noch laufen. Prüft sowohl GitHub Actions Workflow-Läufe als auch Drittanbieter-Bot-Prüfungen (z. B. CodeRabbit, SonarCloud, Codecov). Behandelt skipped-Ergebnisse als Erfolg. Gibt eine informative Meldung zurück, wenn alle Prüfungen bestanden sind.
Keine Parameter.
Diese Richtlinie erfordert, dass die GitHub CLI (gh) installiert und authentifiziert ist. Führen Sie gh auth login mit einem Personal Access Token aus, das den repo-Scope für Lesezugriff auf Actions Workflow-Läufe und die Checks API hat. Wenn gh nicht installiert oder nicht authentifiziert ist, schlägt die Richtlinie offen fehl und meldet den Grund an Claude.


Einzelne Richtlinien deaktivieren

Entfernen Sie eine bestimmte Richtlinie aus enabledPolicies in Ihrer Konfiguration, oder deaktivieren Sie sie im Dashboard-Tab „Policies”.
{
  "enabledPolicies": [
    "block-rm-rf",
    "sanitize-api-keys"
  ]
}
Richtlinien, die nicht in enabledPolicies aufgeführt sind, werden nicht ausgeführt, auch wenn policyParams-Einträge für sie vorhanden sind.