Crie um arquivo com extensão policies.js, policies.mjs ou policies.ts dentro de .failproofai/policies/. Arquivos de convenção são carregados automaticamente nos escopos de projeto e usuário.
Teste a política antes de publicar na nuvem
- Instale a política personalizada em uma máquina de teste e acione tanto uma ação correspondente quanto uma não correspondente legítima.
- Vá em Observe → policy e compare as duas decisões.
- Abra cada sessão vinculada e verifique se o payload do evento contém evidências suficientes para a regra.
- Quando o comportamento estiver correto, mova o código revisado para Admin → policy editor e publique uma versão.
Arquivos de convenção em .failproofai/policies/ são carregados sem --custom. Mantenha um comando de instalação explícito no CI quando a validação deve falhar em caso de módulo inválido.
Isso corresponde a production/config.yml, /srv/production/config.yml, /srv/production e C:\\production\\config.yml tanto para Write quanto para Edit. Não corresponde a nomes como production-backup, pois production deve ser um segmento completo do caminho.
Valide e instale um arquivo explícito:
O contexto da política inclui o tipo de evento, payload normalizado, nome e entrada da ferramenta, metadados da sessão, parâmetros e o CLI de origem quando disponível.
Teste os caminhos de falha
Execute a validação após alterar o arquivo de entrada ou qualquer módulo local que ele importe:
O caminho de CLI estrito falha para arquivos ausentes, erros de sintaxe, importações não resolvidas, exceções em nível superior e timeouts de carregamento de módulo. No momento da aplicação, um arquivo personalizado inválido é registrado em log e ignorado para que as políticas integradas possam continuar. Trate qualquer aviso de carregamento como uma perda de aplicação esperada e monitore-o nos logs de produção.
Use nomes globalmente únicos em políticas explícitas, de convenção e gerenciadas pela nuvem. Mantenha as funções de política determinísticas, limite chamadas externas com timeouts curtos e retorne um allow, instruct ou deny intencional em todos os caminhos.
Uma política personalizada é código de aplicação. Teste campos ausentes, nomes de ferramentas alternativos e entradas malformadas — não apenas a correspondência esperada.