Skip to main content
As políticas personalizadas transformam um padrão de falha identificado nos seus rastreamentos ou auditorias em uma decisão que é executada enquanto o agente trabalha. Uma política pode permitir uma ação, fornecer orientação ao agente ou bloquear a ação antes que ela cause outro incidente. Use uma política personalizada quando o comportamento depende das suas ferramentas, caminhos, comandos, ambientes ou regras operacionais. Consulte o catálogo de políticas integradas antes para não recriar um controle já existente.

Criando uma política personalizada

  1. Acesse Admin → editor de políticas, selecione Nova política e descreva a falha que deseja prevenir.
  2. Adicione o código da política e teste correspondências esperadas e não correspondências seguras no editor. Resolva todos os erros de validação.
  3. Salve o rascunho e selecione Publicar versão para criar uma versão imutável.
  4. Acesse Admin → enforcement, implante a versão em uma máquina de teste no modo observe e verifique as decisões em Observe → policy antes de aplicá-la. O editor de políticas usado para criar e publicar uma política personalizada.

Comece com uma regra restrita

Esta política bloqueia comandos Kubernetes destrutivos apenas quando o comando tem como alvo a produção. Tudo fora desse modo de falha específico retorna allow().
Boas políticas são suficientemente restritas para serem explicadas em uma única frase. Corresponda à ação observável — não à intenção que você espera que o agente tenha — e retorne allow() assim que a regra não se aplicar.

Escolhendo uma decisão

Escreva o motivo para o agente que precisará se recuperar. Explique o que foi detectado e o que ele deve fazer em vez disso.
Não use instruct() para um limite de segurança. A entrega de orientação varia conforme o harness do agente. Use deny() quando a ação precisar ser impedida.

Objeto de política

Filtre ferramentas dentro de fn. match.toolNames não faz parte do tipo público de política personalizada.

Contexto da política

Toda política recebe um PolicyContext. Trate todo valor opcional como genuinamente opcional. Versões de agentes e tipos de eventos nem sempre fornecem os mesmos campos.

Entradas comuns de ferramentas

O Failproof AI normaliza ferramentas comuns entre os harnesses suportados para que uma política geralmente possa usar um único formato de entrada. Use coerção defensiva, pois os valores de entrada de ferramenta são tipados como unknown:

Escolhendo o evento

A disponibilidade de eventos e o comportamento de bloqueio dependem do harness do agente. Consulte Harnesses de agentes antes de depender de um evento em uma frota mista.
SessionStart, SessionEnd, UserPromptSubmit, PreToolUse, PermissionRequest, PermissionDenied, PostToolUse, PostToolUseFailure, Notification, SubagentStart, SubagentStop, TaskCreated, TaskCompleted, Stop, StopFailure, TeammateIdle, InstructionsLoaded, ConfigChange, CwdChanged, FileChanged, WorktreeCreate, WorktreeRemove, PreCompact, PostCompact, Elicitation, ElicitationResult, UserPromptExpansion, PostToolBatch e Setup.

Padrões comuns de políticas

Bloquear escritas em caminhos protegidos

Fornecer orientação sem bloqueio

Controlar a conclusão de sessão

Um evento Stop negado pode fazer o agente tentar novamente. Apenas controle por uma condição que o agente possa satisfazer no ambiente atual, e limite todo subprocesso ou chamada de rede.

Carregando arquivos de política

Arquivos de convenção

Arquivos de convenção são carregados automaticamente:
  • Os diretórios de políticas do projeto e do usuário são carregados.
  • Os arquivos são carregados em ordem alfabética dentro de cada diretório.
  • Um arquivo deve terminar em policies.js, policies.mjs ou policies.ts.
  • Múltiplas chamadas customPolicies.add() em um arquivo são suportadas.
  • Importações relativas de módulos locais são suportadas.
  • As políticas do projeto podem ser versionadas para que as mesmas regras acompanhem o repositório.

Arquivos explícitos

Use caminhos explícitos quando a validação ou configuração deve nomear diretamente o arquivo de entrada:
Os arquivos explícitos são carregados primeiro, seguidos pelos arquivos de convenção do projeto e depois pelos do usuário. Um arquivo descoberto por ambos os caminhos é carregado apenas uma vez.

Validar e testar

A validação executa o módulo pelo carregador de produção e confirma que ele registra pelo menos uma política.
A validação detecta arquivos ausentes, erros de sintaxe, importações não resolvidas, exceções de nível superior e timeouts de carregamento de módulo. Ela não garante que sua lógica de correspondência esteja correta. Teste pelo menos estes casos:
  • Uma ação que deve corresponder e produzir o motivo de política pretendido.
  • Uma ação próxima, mas segura, que deve retornar allow().
  • Campos de ferramenta ausentes ou malformados.
  • Sintaxe de comando alternativa, caminhos, aspas, capitalização e espaços em branco.
  • Um subprocesso ou dependência de rede indisponível.
Atribua o resultado à sua política personalizada em Observe → policy. Um teste bloqueado não é suficiente se uma política integrada diferente tiver tomado a decisão.

Comportamento em tempo de execução

  • Políticas integradas são avaliadas antes das políticas personalizadas.
  • O primeiro deny interrompe a avaliação de políticas subsequentes.
  • Múltiplos resultados instruct podem ser combinados quando nenhuma política nega o evento.
  • Uma função de política tem um prazo de execução de 10 segundos.
  • Uma exceção lançada ou timeout é registrado e tratado como allow().
  • Um arquivo de convenção que falha ao carregar é ignorado; outros arquivos personalizados e políticas integradas continuam.
  • O carregamento de módulo de nível superior também tem um prazo de 10 segundos.
  • O modo observe em nuvem executa a política, mas registra uma decisão diferente de allow sem aplicá-la.
Mantenha os módulos de política determinísticos e rápidos. Evite chamadas de rede ou inicialização de servidor no nível superior. Limite o trabalho dentro de fn, trate falhas de dependências e escolha deliberadamente se essa falha deve permitir ou bloquear a operação.

Exportações da API

TypeScript exporta PolicyContext, PolicyResult, CustomHook, PolicyDecision e PolicyFunction.

Implantar políticas personalizadas

Publique uma versão, implante-a no modo observe, verifique as decisões e avance para o enforcement.