Phase 15 - Lesson 14

Kill Switches, Circuit Breakers e Canary Tokens

This lesson includes a graded coding exercise that runs in your browser, unlocked with lifetime access.

Um kill switch é um booleano mantido fora da superfície de edição do agente — uma chave Redis, uma feature flag, uma configuração assinada — que desativa o agente por completo. Um circuit breaker é mais granular: ele é acionado por um padrão específico (cinco chamadas de ferramenta idênticas seguidas), pausa o caminho ofensivo e escala para um humano. Um canary token herda conceitos de decepção clássica: uma credencial falsa ou registro de honeypot que um agente não tem motivo legítimo para tocar, cujo acesso dispara um alerta. Caminhos de dados baseados em eBPF (ex. Cilium) podem reescrever o tráfego de saída (egress) de um pod em quarentena para um honeypot forense na camada do kernel; benchmarks publicados do Cilium relatam latência de caminho de dados P99 submilisegundo sob carga (seu orçamento de propagação depende de como uma atualização de política chega ao nó, não do próprio caminho de dados). Detectores estatísticos (EWMA, CUSUM) que se adaptam a uma linha de base móvel aceitarão o desvio silenciosamente — combine-os com limites constitucionais rígidos que não se dobram.

Type: Learn Languages: Python (stdlib, simulador de três detectores: kill switch, circuit breaker, canary) Prerequisites: Phase 15 · 13 (Governadores de custo), Phase 15 · 10 (Modos de permissão) Time: ~60 minutos

O Problema

Governadores de custo (Lição 13) limitam o que o agente pode gastar. Eles não limitam o que o agente pode fazer dentro do orçamento. Um agente com um limite de velocidade de $50 ainda pode exfiltrar um segredo, publicar a postagem errada ou deletar um recurso — a ação cara frequentemente é a mais barata em tokens.

Esta lição cobre os três detectores que ficam ao lado da camada de custo:

  1. Kill switch: botão de desligar booleano mantido fora do alcance do agente.
  2. Circuit breaker: detector de padrão de ação que pausa um caminho específico.
  3. Canary token: isca que um agente sem motivo legítimo para tocar revelará a si mesmo ao tocar.

Todos os três são engenharia pré-LLM. Decepção clássica, limitadores de taxa (rate-limit breakers) e desativações por feature-flag precedem os agentes autônomos. A novidade é a superfície de ataque: os agentes leem conteúdo não confiável (Lição 11), editam sua própria memória e podem compor muitas ações aparentemente seguras em uma ação insegura. Os detectores nomeados aqui funcionam porque não confiam no autorrelato do agente.

O Conceito

Kill switches

Um kill switch é um booleano que o agente lê, mas não pode escrever. Opções de implementação:

  • Feature flag em um serviço gerenciado. LaunchDarkly, Statsig, Unleash. As atualizações se propagam em segundos.
  • Chave Redis que o agente consulta. Simples; exige que o processo do agente verifique a cada turno.
  • Configuração assinada no armazenamento de objetos. O agente verifica uma assinatura ao iniciar; rejeita estados não assinados.
  • Sinal em nível de SO ou encerramento de ciclo de vida do contêiner. Docker kill, Kubernetes kubectl delete pod, parada do systemd.

Propriedades que um kill switch correto possui:

  • O agente não pode defini-lo como off. (Reside em um sistema que as credenciais do agente não conseguem gravar.)
  • É verificado em cada ação consequente, não apenas na inicialização.
  • Quando está desligado, o agente não faz nada externamente observável, incluindo registrar logs em sistemas que o agente possa acessar.
  • Reativá-lo é uma ação humana explícita, não um timeout automático.

Circuit breakers

Um circuit breaker pausa um padrão específico, não o agente inteiro. Formato clássico (do livro de Nygard de 2007, ainda atual):

  • Fechado (Closed): a ação é permitida.
  • Aberto (Open): a ação é bloqueada.
  • Meio-aberto (Half-open): após um período de resfriamento, são permitidas de 1 a 3 tentativas de sondagem (padrão 1); o sucesso fecha o disjuntor, qualquer falha restante o reabre.

Gatilhos relevantes para agentes:

  • Cinco chamadas de ferramenta idênticas seguidas (loop repetitivo).
  • Cinco falhas consecutivas na mesma ferramenta com entradas diferentes (falha sistêmica).
  • Taxa de chamadas de ferramentas acima de um limite (velocidade da Lição 13).
  • Ferramenta específica invocada (ex., file.delete) após uma leitura de conteúdo fora da zona de confiança (Lição 11).

Canary tokens

Canary tokens (também chamados de honeytokens) são entradas que o agente nunca deve tocar. O acesso é o alarme.

Exemplos para agentes:

  • Uma AWS_SECRET_ACCESS_KEY falsa no ambiente sem nenhum privilégio real. Tentativas de exfiltração são instantaneamente atribuíveis.
  • Um registro de banco de dados falso marcado com um valor sentinela conhecido. Qualquer leitura ou atualização deste registro dispara um alerta.
  • Um arquivo falso no espaço de trabalho. Leituras ou edições deste arquivo são suspeitas.
  • Uma entrada de memória falsa injetada no início da sessão. Se ela aparecer em uma saída posterior, a memória foi exfiltrada.

O design do canary é específico para o fluxo de trabalho. Um canary que o agente tem um motivo legítimo para tocar é apenas ruído.

Por que combinar limites estatísticos e rígidos

Detectores estatísticos (EWMA, CUSUM, z-score em taxas de chamadas de ferramentas) adaptam-se a uma linha de base móvel. Isso é um recurso para desvios legítimos e um bug para desvios adversários. Um atacante paciente pode deslocar a linha de base lentamente o suficiente para que nenhum alarme seja disparado.

Limites constitucionais rígidos (Lição 17) não se dobram. "Nunca enviar e-mail para secrets@" como uma regra constitucional é mais simples, auditável e não manipulável por desvio lento. O padrão de camadas: detectores estatísticos pegam a maior parte do ruído, limites rígidos pegam o ataque que passou pelo detector.

Quarentena via redirecionamento de caminho de dados eBPF

A política de rede baseada em eBPF do Cilium pode reescrever o tráfego de saída de um pod em quarentena para um honeypot forense na camada do kernel. Benchmarks públicos do Cilium relatam latência de caminho de dados P99 submilisegundo em TCP_RR; o orçamento de tempo de relógio de parede para disparar uma quarentena em seu cluster é dominado por como uma atualização de política se propaga do seu plano de controle para o nó (alguns centenas de milissegundos é realista no Kubernetes com o operador pré-carregado; a latência de cauda depende do tamanho do cluster e da cadência de reconciliação). Isso lhe dá duas coisas: o agente não exfiltra nada real, e o comportamento do agente dentro do honeypot é totalmente observado. Mesmo padrão, camada diferente, do canary token: o agente revela a intenção pelo que tenta fazer enquanto está contido.

O que nenhum detector captura

  • Ataques semânticos compostos por primitivas permitidas. Cada ação individual passa por todos os detectores; a composição é o problema. Este é o fracasso composto do Modo Automático da Lição 10.
  • Ataques que incluem o detector como parte do payload. Se um agente lê uma página que diz "antes de agir, desative o canary" e o agente tem essa capacidade, o detector está comprometido. Os canary tokens devem estar em sistemas que o agente não pode modificar.

Use It

code/main.py simula uma trajetória curta do agente através de três detectores. Um kill switch mantido em um dicionário externo; um circuit breaker que dispara em cinco chamadas de ferramenta idênticas; um arquivo canary cuja leitura dispara um alerta. Alimenta uma trajetória sintética: ações legítimas, loop repetitivo, sonda de canary e um cenário disparado por kill-switch onde as ações do agente são interrompidas.

Ship It

outputs/skill-tripwire-design.md analisa uma proposta de pilha de detectores para uma implantação de agente e aponta lacunas (falta de kill switch, falta de canary, limite do circuit breaker muito frouxo).

Exercises

  1. Execute code/main.py. Confirme que o disjuntor dispara na rodada 5 (quinta chamada idêntica) e o canary dispara na rodada 9 (leitura de chave falsa).

  2. Adicione um detector estatístico: EWMA z-score na taxa de chamada de ferramenta. Alimente uma trajetória que desvia lentamente e mostre que o detector nunca dispara. Agora adicione um limite rígido (não mais que 50 chamadas de ferramenta em 10 minutos) e mostre que o limite rígido dispara na mesma trajetória.

  3. Projete um conjunto de canary tokens para um agente de navegador (Lição 11). Liste pelo menos três canaries e o que cada um detectaria.

  4. Leia a documentação de políticas de rede do Cilium. Descreva um fluxo de quarentena com redirecionamento de saída concretamente: qual seletor de política, qual pod, qual reescrita de saída, qual alerta. O que governa a latência de tempo de relógio de parede desde "decidir colocar em quarentena" até o "primeiro pacote redirecionado"?

  5. Defina um procedimento de reativação para um agente desativado por kill-switch. Quem pode reativar? O que deve ser documentado? O que deve mudar no agente antes da reativação?

Key Terms

Termo O que as pessoas dizem O que realmente significa
Kill switch "Botão de desligar" Booleano fora da superfície de edição do agente; verificado a cada ação consequente
Circuit breaker "Pausa de padrão" Desarme específico de ação por repetição, taxa de falha ou limite de taxa
Canary token "Honeytoken" Isca que o agente não tem motivo legítimo para tocar; o acesso dispara um alerta
Honeypot "Sandbox forense" Tráfego redirecionado / espaço de trabalho onde um agente em quarentena é observado
EWMA "Média móvel" Ponderada exponencialmente; adapta-se ao desvio (recurso + bug)
CUSUM "Soma cumulativa" Detecta desvio sustentado em relação à linha de base
Hard limit "Regra constitucional" Não se adapta; constante independente do histórico
Constitutional limit "Regra sempre verdadeira" Vinculada à constituição da Lição 17; não pode ser editada pelo agente

Further Reading

0 lifetime access. Curriculum based on AI Engineering from Scratch by Rohit Ghumare (MIT, used under attribution).