Pular para o conteúdo principal
failproofai vem com 30 políticas integradas que detectam falhas comuns de agentes. Cada política é acionada em um tipo específico de evento de hook e nome de ferramenta. Nove políticas aceitam parâmetros que permitem ajustar seu comportamento sem escrever código. Quatro políticas de fluxo de trabalho impõem um pipeline de commit → push → PR → CI antes que Claude pare.

Visão geral

As políticas são agrupadas em categorias:
CategoriaPolíticasTipo de hook
Comandos perigososblock-sudo, block-rm-rf, block-curl-pipe-sh, block-failproofai-commandsPreToolUse
Segredos (sanitizadores)sanitize-jwt, sanitize-api-keys, sanitize-connection-strings, sanitize-private-key-content, sanitize-bearer-tokensPostToolUse
Ambienteblock-env-files, protect-env-varsPreToolUse
Acesso a arquivosblock-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
Banco de dadoswarn-destructive-sql, warn-schema-alterationPreToolUse
Avisoswarn-large-file-write, warn-package-publish, warn-background-process, warn-global-package-installPreToolUse
Fluxo de trabalhorequire-commit-before-stop, require-push-before-stop, require-pr-before-stop, require-ci-green-before-stopStop
  • block- — impede o agente de prosseguir.
  • warn- — fornece contexto adicional ao agente para que ele possa se autocorrigir.
  • sanitize- — remove dados sensíveis da saída da ferramenta antes que o agente os veja.
  • require- — bloqueia o evento Stop até que as condições sejam atendidas.

Toda política suporta um campo opcional hint em policyParams. O hint é anexado à mensagem de deny ou instruct que Claude vê, fornecendo orientações práticas sem modificar o código da política. Funciona com políticas integradas, personalizadas e de convenção. Consulte Configuração → hint para mais detalhes.

Comandos perigosos

Impede que agentes executem operações difíceis de desfazer ou que possam danificar o sistema host.

block-sudo

Evento: PreToolUse (Bash)
Padrão: Nega qualquer comando sudo.
Bloqueia invocações que incluam a palavra-chave sudo. A correspondência de padrões é feita nos tokens de comando analisados, não na string bruta, para evitar bypass via injeção de operadores de shell. Parâmetros:
ParâmetroTipoPadrãoDescrição
allowPatternsstring[][]Prefixos de comando exatos que são permitidos. Cada entrada é comparada com os tokens argv analisados.
Exemplo:
{
  "policyParams": {
    "block-sudo": {
      "allowPatterns": ["sudo systemctl status", "sudo journalctl"]
    }
  }
}
Com essa configuração, sudo systemctl status nginx é permitido, mas sudo rm /etc/hosts é negado.
Os padrões são comparados com os tokens analisados, não com a string de comando bruta. Isso evita bypass via operadores de shell anexados (por exemplo, sudo systemctl status x; rm -rf / não corresponde a sudo systemctl status *).

block-rm-rf

Evento: PreToolUse (Bash)
Padrão: Nega rm -rf, rm -fr e formas similares de exclusão recursiva.
Parâmetros:
ParâmetroTipoPadrãoDescrição
allowPathsstring[][]Caminhos que são seguros para excluir recursivamente (ex: /tmp).
Exemplo:
{
  "policyParams": {
    "block-rm-rf": {
      "allowPaths": ["/tmp", "/var/cache"]
    }
  }
}

block-curl-pipe-sh

Evento: PreToolUse (Bash)
Padrão: Nega curl <url> | bash, curl <url> | sh, wget <url> | bash e padrões similares.
Sem parâmetros.

block-failproofai-commands

Evento: PreToolUse (Bash)
Padrão: Nega comandos que desinstalem ou desabilitem o próprio failproofai (ex: npm uninstall failproofai, failproofai policies --uninstall).
Sem parâmetros.

Segredos (sanitizadores)

Impede que agentes vazem credenciais em seu contexto ou saída. As políticas de sanitização são acionadas em eventos PostToolUse. Quando Claude executa um comando Bash, lê um arquivo ou chama qualquer ferramenta, essas políticas inspecionam a saída antes que ela seja retornada ao Claude. Se um padrão de segredo for detectado, a política retorna uma decisão de deny que impede a saída de ser passada de volta.

sanitize-jwt

Evento: PostToolUse (todas as ferramentas)
Padrão: Redige tokens JWT (três segmentos base64url separados por .).
Sem parâmetros.

sanitize-api-keys

Evento: PostToolUse (todas as ferramentas)
Padrão: Redige formatos comuns de chaves de API: Anthropic (sk-ant-), OpenAI (sk-), GitHub PATs (ghp_), chaves de acesso AWS (AKIA), chaves Stripe (sk_live_, sk_test_) e chaves Google API (AIza).
Parâmetros:
ParâmetroTipoPadrãoDescrição
additionalPatterns{ regex: string; label: string }[][]Padrões regex adicionais para tratar como segredos.
Exemplo:
{
  "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 as ferramentas)
Padrão: Redige strings de conexão de banco de dados que contêm credenciais incorporadas (ex: postgresql://user:password@host/db).
Sem parâmetros.

sanitize-private-key-content

Evento: PostToolUse (todas as ferramentas)
Padrão: Redige blocos PEM (-----BEGIN PRIVATE KEY-----, -----BEGIN RSA PRIVATE KEY-----, etc.).
Sem parâmetros.

sanitize-bearer-tokens

Evento: PostToolUse (todas as ferramentas)
Padrão: Redige cabeçalhos Authorization: Bearer <token> onde o token tem 20 ou mais caracteres.
Sem parâmetros.

Ambiente

Protege a configuração de ambiente sensível de ser lida ou exposta por agentes.

block-env-files

Evento: PreToolUse (Bash, Read)
Padrão: Nega a leitura de arquivos .env via cat .env, chamadas da ferramenta Read com .env como caminho do arquivo, etc.
Não bloqueia .envrc ou outros arquivos relacionados ao ambiente — apenas arquivos nomeados exatamente .env. Sem parâmetros.

protect-env-vars

Evento: PreToolUse (Bash)
Padrão: Nega comandos que imprimam variáveis de ambiente: printenv, env, echo $VAR.
Sem parâmetros.

Acesso a arquivos

Mantém agentes trabalhando dentro dos limites do projeto e longe de arquivos sensíveis.

block-read-outside-cwd

Evento: PreToolUse (Read, Bash)
Padrão: Nega a leitura de arquivos fora do diretório de trabalho atual (a raiz do projeto).
Parâmetros:
ParâmetroTipoPadrãoDescrição
allowPathsstring[][]Prefixos de caminho absoluto que são permitidos mesmo se estiverem fora do cwd.
Exemplo:
{
  "policyParams": {
    "block-read-outside-cwd": {
      "allowPaths": ["/shared/data", "/opt/company/config"]
    }
  }
}

block-secrets-write

Evento: PreToolUse (Write, Edit)
Padrão: Nega escritas em arquivos comumente usados para chaves privadas e certificados: id_rsa, id_ed25519, *.key, *.pem, *.p12, *.pfx.
Parâmetros:
ParâmetroTipoPadrãoDescrição
additionalPatternsstring[][]Padrões de nome de arquivo adicionais (estilo glob) para bloquear.
Exemplo:
{
  "policyParams": {
    "block-secrets-write": {
      "additionalPatterns": [".token", ".secret"]
    }
  }
}

Git

Previne pushes acidentais, force-pushes e erros de branch que são difíceis de desfazer.

block-push-master

Evento: PreToolUse (Bash)
Padrão: Nega git push origin main e git push origin master.
Parâmetros:
ParâmetroTipoPadrãoDescrição
protectedBranchesstring[]["main", "master"]Nomes de branches que não podem receber push diretamente.
Exemplo:
{
  "policyParams": {
    "block-push-master": {
      "protectedBranches": ["main", "master", "release", "prod"]
    }
  }
}
Para permitir push para todos os branches (desabilitando efetivamente esta política sem removê-la de enabledPolicies), defina protectedBranches: [].

block-work-on-main

Evento: PreToolUse (Bash)
Padrão: Nega o checkout direto dos branches main ou master.
Parâmetros:
ParâmetroTipoPadrãoDescrição
protectedBranchesstring[]["main", "master"]Nomes de branches que não podem ser obtidos diretamente via checkout.

block-force-push

Evento: PreToolUse (Bash)
Padrão: Nega git push --force e git push -f.
Sem parâmetros específicos da política. Use o hint transversal 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)
Padrão: Instrui Claude a prosseguir com cuidado ao executar git commit --amend. Não bloqueia o comando.
Sem parâmetros.

warn-git-stash-drop

Evento: PreToolUse (Bash)
Padrão: Instrui Claude a confirmar antes de executar git stash drop. Não bloqueia o comando.
Sem parâmetros.

warn-all-files-staged

Evento: PreToolUse (Bash)
Padrão: Instrui Claude a revisar o que está sendo adicionado ao stage ao executar git add -A ou git add .. Não bloqueia o comando.
Sem parâmetros.

Banco de dados

Detecta operações SQL destrutivas antes que sejam executadas no banco de dados.

warn-destructive-sql

Evento: PreToolUse (Bash)
Padrão: Instrui Claude a confirmar antes de executar SQL contendo DROP TABLE, DROP DATABASE ou DELETE sem uma cláusula WHERE.
Sem parâmetros.

warn-schema-alteration

Evento: PreToolUse (Bash)
Padrão: Instrui Claude a confirmar antes de executar instruções ALTER TABLE.
Sem parâmetros.

Avisos

Fornece contexto extra aos agentes antes de operações potencialmente arriscadas, mas não destrutivas.

warn-large-file-write

Evento: PreToolUse (Write)
Padrão: Instrui Claude a confirmar antes de escrever arquivos maiores que 1024 KB.
Parâmetros:
ParâmetroTipoPadrãoDescrição
thresholdKbnumber1024Limite de tamanho de arquivo em kilobytes acima do qual um aviso é emitido.
Exemplo:
{
  "policyParams": {
    "warn-large-file-write": {
      "thresholdKb": 256
    }
  }
}
O handler de hook impõe um limite de 1 MB de stdin nos payloads. Para testar esta política com conteúdo pequeno, defina thresholdKb para um valor bem abaixo de 1024.

warn-package-publish

Evento: PreToolUse (Bash)
Padrão: Instrui Claude a confirmar antes de executar npm publish.
Sem parâmetros.

warn-background-process

Evento: PreToolUse (Bash)
Padrão: Instrui Claude a ter cuidado ao iniciar processos em segundo plano via nohup, &, disown ou screen.
Sem parâmetros.

warn-global-package-install

Evento: PreToolUse (Bash)
Padrão: Instrui Claude a confirmar antes de executar npm install -g, yarn global add ou pip install sem um ambiente virtual.
Sem parâmetros.

Comportamento de IA

Detecta quando agentes ficam travados ou se comportam de forma inesperada.

warn-repeated-tool-calls

Evento: PreToolUse (todas as ferramentas)
Padrão: Instrui Claude a reconsiderar quando a mesma ferramenta é chamada 3 ou mais vezes com parâmetros idênticos — um sinal comum de que o agente está preso em um loop.
Sem parâmetros.

Fluxo de trabalho

Impõe um fluxo de trabalho disciplinado ao final da sessão. Essas políticas são acionadas no evento Stop e impedem Claude de parar até que cada condição seja atendida. Elas seguem uma cadeia de dependência natural: commit → push → PR → CI. Se uma política nega, as políticas seguintes na cadeia são ignoradas (deny interrompe o fluxo). Todas as políticas de fluxo de trabalho são fail-open: se a ferramenta necessária não estiver disponível (ex: gh não instalado, sem remote git), a política permite com uma mensagem informativa explicando por que a verificação foi ignorada.

require-commit-before-stop

Evento: Stop
Padrão: Nega a parada quando há alterações não commitadas (arquivos modificados, em stage ou não rastreados). Retorna uma mensagem informativa quando o diretório de trabalho está limpo.
Sem parâmetros.

require-push-before-stop

Evento: Stop
Padrão: Nega a parada quando há commits não enviados por push ou quando o branch atual não tem um branch de rastreamento remoto. Sugere git push -u para criar um branch de rastreamento se necessário. Falha de forma aberta se nenhum remote estiver configurado.
Parâmetros:
ParâmetroTipoPadrãoDescrição
remotestring"origin"Nome do remote para o qual fazer push.
Exemplo:
{
  "policyParams": {
    "require-push-before-stop": {
      "remote": "upstream"
    }
  }
}

require-pr-before-stop

Evento: Stop
Padrão: Nega a parada quando não existe pull request para o branch atual, ou quando o PR existente está fechado/mesclado. Instrui Claude a criar um PR com gh pr create.
Sem parâmetros.
Esta política requer que o GitHub CLI (gh) esteja instalado e autenticado. Execute gh auth login com um token de acesso pessoal que tenha escopo repo para acesso de leitura a pull requests. Se gh não estiver instalado ou autenticado, a política falha de forma aberta e reporta o motivo ao Claude.

require-ci-green-before-stop

Evento: Stop
Padrão: Nega a parada quando as verificações de CI estão falhando ou ainda em execução no branch atual. Verifica tanto as execuções de workflow do GitHub Actions quanto as verificações de bots de terceiros (ex: CodeRabbit, SonarCloud, Codecov). Trata conclusões skipped como sucesso. Retorna uma mensagem informativa quando todas as verificações passam.
Sem parâmetros.
Esta política requer que o GitHub CLI (gh) esteja instalado e autenticado. Execute gh auth login com um token de acesso pessoal que tenha escopo repo para acesso de leitura às execuções de workflow do Actions e à API de Verificações. Se gh não estiver instalado ou autenticado, a política falha de forma aberta e reporta o motivo ao Claude.


Desabilitando políticas individuais

Remova uma política específica de enabledPolicies na sua configuração, ou desative-a na aba Políticas do dashboard.
{
  "enabledPolicies": [
    "block-rm-rf",
    "sanitize-api-keys"
  ]
}
Políticas não listadas em enabledPolicies não são executadas, mesmo que existam entradas de policyParams para elas.