DEV Community

Tiago Vilas Boas (Montanha)
Tiago Vilas Boas (Montanha)

Posted on Edited on

Por que um Staff Engineer está estudando AI Security

Pessoal, a pergunta do meu trabalho mudou.

Antes: como eu faço esse agente entregar mais rápido?

Agora: se esse agente tem ferramenta, o que ele pode quebrar, e quem assume o risco?

A trava que você cola no PR amanhã: sete perguntas antes de dar tool access a um agente. Se alguma resposta ficar vaga, a tool não entra.

Não escrevo como expert. Em agosto de 2026 comecei Defesa Cibernética na Impacta. Este post é o marco zero público.

Tabela de Conteúdo

1. A pergunta mudou

Eu passo o dia em cima de sistema sob pressão: confiabilidade, observabilidade, incidente, decisão que precisa continuar fazendo sentido quando eu saio da sala. Nos últimos tempos, passei a operar de verdade com LLM, agente, MCP e memória/RAG.

Staff, pra mim, nunca foi aparecer em tudo. Foi construir condições para que as squads tomem boas decisões sem depender da minha memória.

Isso cria um reflexo meio chato: olhar pra demo bonita e perguntar pelo modo de falha.

  • O webhook falha como?
  • O retry duplica o quê?
  • Essa métrica explica impacto ou só joga stacktrace na tela?
  • Tem kill switch ou a gente só torce?

Agora esse mesmo reflexo precisa olhar pra prompt, ferramenta, memória e permissão de agente. Não porque eu mudei de carreira da noite pro dia. Porque a unidade de risco mudou.

2. Texto errado é uma coisa. Ação indevida é outra

Quando o modelo só gera texto, o estrago costuma ser contido: chato, caro às vezes, mas contido. Alucinação, vazamento por descuido, resposta ruim.

Quando o mesmo modelo ganha ferramenta (ler arquivo, chamar API, abrir PR, mexer em dado, acionar automation), o jogo muda.

Aí o risco deixa de ser só “falou besteira”. Passa a ser:

  • fez uma ação irreversível com confiança alta demais;
  • tinha permissão bem maior do que o trabalho pedia;
  • puxou pro contexto uma informação que não deveria sair dali;
  • conectou um MCP/skill poderoso sem auditoria decente.

Isso não é paranoia de blog. A OWASP chama o desenho de Excessive Agency (LLM06:2025): tool demais, permissão demais, autonomia demais. O NIST AI RMF fala a mesma coisa em linguagem de governança. Eu estudo pelos dois. O gate mais abaixo é o dia 1 no desk.

A leitura de Staff que eu carrego é bem direta:

Acelerar agente sem olhar permissão é otimizar velocidade com o cinto solto.

3. O caso que eu já rodei. O rm é o desenho

O caso meu no ar não é shell em prod. É texto.

No 09 eu quase mandei 23 “vulnerabilidades” pra maintainer. XSS fantasma, CORS, um SVG. Volume. Se eu fosse o cara do outro lado da issue, eu levaria isso a sério? Parei. O que vingou foi hardening público e silêncio quando a invariante segurou. O denominador está lá. Aqui não reconto os findings.

No gate, isso é pergunta 1 e pergunta 7. A ação irreversível era abrir issue com ruído. O que impediu o dano fui eu na porta, não o modelo. HITL. Blast radius do texto.

Este post é a outra ponta. Não o que o agente afirma. O que ele pode executar.

Desenho do gate. Pedagógico. Não é o caso acima.

você:     limpa os temporários da pasta de build
agente:   rm -rf ./build ../tmp
          (prestativo. path saiu da pasta. token ainda chama API)
você:     quase dá enter
Enter fullscreen mode Exit fullscreen mode

Sem allowlist de path, sem dry-run, sem humano no rm, o modelo não “alucinou um ensaio”. Montou o rm na leitura generosa de “temporários”.

O gate, preenchido neste desenho. Resposta vaga = a tool não entra.

# Pergunta Neste desenho Entra?
1 Ação irreversível mais cara rm no tree. Token que chama API. Não
2 Menor escopo que ainda resolve Token amplo “pra não travar”. Não
3 Precisa escrever, ou leitura basta? Escrita porque senão não demo. Não
4 O que no contexto não deveria sair Nota interna misturada no ticket. Não
5 Como detecta abuso ou erro Sem dry-run. Sem log do comando. Não
6 Kill switch, com dono Ninguém nomeado pra revogar o token. Não
7 Se alucinar a intenção, o que impede o dano Sem allowlist de path. Sem HITL no rm. Não

Sete vagos. A tool não entra. LLM06 neste caso não é paper. É essa tabela. O caso meu, com issue, já está no 09: mesma disciplina, outra porta.

4. Sete perguntas antes da tool entrar no agente

Copia, cola no PR da automação, e não segue em frente sem responder. Cópia solta: gist do gate.

## Tool access gate (agente)

1. Qual é a ação irreversível mais cara que essa tool permite?
   (apagar, pagar, publicar, exfiltrar, merge, deploy)
2. Qual é o menor escopo de permissão que ainda resolve o trabalho?
3. O agente precisa de escrita, ou leitura bastaria na maior parte do tempo?
4. O que entra no contexto (RAG/memória) que não deveria sair dali?
5. Como eu detecto abuso ou erro? (log, audit trail, alerta, dry-run)
6. Qual é o kill switch? (revogar token, desligar tool, pausar automation)
7. Se o modelo alucinar a intenção, o que ainda impede o dano?
   (allowlist, HITL, confirmação humana, sandbox)
Enter fullscreen mode Exit fullscreen mode

No fundo, as sete perguntas tentam aplicar princípios antigos (menor privilégio, redução de blast radius, auditabilidade, defesa em profundidade) a uma interface nova: o agente. Capability boundaries e human-in-the-loop entram aí sem drama.

Se alguma resposta ficar vaga

Regra de bolso:

Se alguma resposta ficar vaga, a tool não entra no agente.

Leitura vs escrita é a ramificação que mais gente pula. “Precisa escrever porque senão não demo” não é menor escopo. É conveniência. Kill switch sem dono também não conta: se ninguém sabe quem revoga o token, você não tem kill switch.

É a trava mínima pra gente não confundir produtividade com negligência.

5. Qual trava você colocaria primeiro?

Este texto para no gate. O dia 1. O caso que eu já rodei está no H3, no 09. RAG, MCP e fine-tuning como camada é o 10. Sem calendário.

Filtro que eu uso, pra não trocar de hobby toda semana:

Isso me deixa mais confiável com agente, ou só me distrai com logo novo?

Você já viu um agente receber mais permissão do que precisava? O que colocaria como primeira trava: allowlist, sandbox, aprovação humana ou token restrito?

Caso concreto fica opcional. O gate preenchido no rm já dá pra responder. O 09 também.

Top comments (0)