Ir para o conteúdo principal
ArchPrompts
Voltar ao blog
Caderno técnico / Nota de campo

Radar Tech: o agente seguiu uma instrução que ninguém aprovou — o contrato da ferramenta mudou embaixo dos panos

Um levantamento público fixou os contratos de 24 servidores MCP e comparou cada release: 336 mudanças em dois meses, muitas sem nenhuma nota de versão. Nada quebrou visivelmente — mas o agente passou a ler descrições e aceitar parâmetros que nunca passaram por aprovação. A lição de arquitetura do dia: contrato de ferramenta é artefato com versão, não detalhe de instalação.

João Gabriel
5 min de leitura
Radar Tech: o agente seguiu uma instrução que ninguém aprovou — o contrato da ferramenta mudou embaixo dos panos
AP / Prancha visual 01
Leitura principal

O que apareceu nas últimas 24 horas

Um levantamento técnico que circulou hoje fixou, com hash, o contrato de cada ferramenta exposta por 24 servidores MCP — os mais instalados do npm mais alguns fornecedores corporativos — e comparou esse contrato a cada nova versão, durante dois meses. O resultado: 336 mudanças de contrato, distribuídas em janelas de algumas semanas a seis meses.

O conceito que quase ninguém tinha nomeado até aqui é simples. Um servidor MCP (Model Context Protocol) entrega ferramentas ao agente de IA. Cada ferramenta tem três peças: o nome, a descrição — que é literalmente a instrução que o modelo lê para decidir se e como chamar a ferramenta — e o input schema, o contrato de quais argumentos são válidos. Quando você instala o servidor, aprova um conjunto específico dessas três peças. Depois o servidor publica uma versão nova. Os nomes continuam iguais, então nada "quebra". Mas a descrição pode agora dizer outra coisa, o schema pode exigir um parâmetro novo, ou soltar uma restrição e aceitar mais do que antes.

A partir daí, o agente está seguindo instruções que você nunca viu e nunca aprovou — e ninguém avisa.

Os números que importam

Alguns exemplos do levantamento dão o tom:

  • Um banco de dados como serviço regenerou os schemas das 20 ferramentas de uma vez numa versão 3.0: mudança de dialeto de JSON Schema, reescrita de descrições e 5 restrições realmente apertadas escondidas entre 15 mudanças puramente de notação. As notas de release estavam vazias.
  • Uma plataforma de conteúdo alterou 45 input schemas entre duas versões; 32 eram apertos de restrição — novos limites, tipos mais estreitos. O mantenedor explicou que a validação passou a existir também no schema, e que o backend já a aplicava. Justo — e exatamente o ponto: chamadas que antes passavam agora são rejeitadas no nível do schema, e nenhuma nota de versão menciona isso.
  • Um fornecedor de e-commerce removeu dois validadores específicos e os substituiu por um genérico. Um agente que chama o nome antigo recebe erro de protocolo. Outro fornecedor de CRM removeu create-association e criou uma versão em lote — o pacote npm publica releases, mas o repositório no GitHub está morto: não há canal onde isso seja anunciado.
  • Um serviço de banco gerenciado mudou o entrypoint do stdio de dist/transports/stdio.js para dist/cli.js. O contrato das ferramentas ficou intacto, mas toda configuração de lançamento fixada quebra.
  • Um gateway de um servidor oficial muito usado alterou 124 de 131 definições de ferramenta numa única versão maior. O mantenedor descreveu como "praticamente um no-op além dos output schemas" — o que é verdade do ponto de vista dele, e ainda assim são 124 contratos diferentes do ponto de vista de quem consome.

Três padrões se repetem: a onda de notação (o fornecedor troca de SDK e todos os bytes mudam de uma vez — sem canonicalização, parece que tudo quebrou); a quebra por consolidação (ferramentas específicas viram uma genérica); e, a mais perigosa, o afrouxamento silencioso (uma restrição cai, um tipo alarga, nada quebra — e a superfície do seu agente ficou maior do que a que você aprovou).

Por que isso é uma história de arquitetura, não de segurança de fornecedor

A reação fácil é "fornecedor deveria anunciar". Mas o problema não se resolve pedindo boas maneiras: metade dos casos acontece em pacotes cujo repositório está morto ou cujas notas de release são vazias. A parte que está sob o seu controle é a outra metade da frase: fixar o que você aprovou, comparar o que chega, classificar o que mudou.

Isso é o mesmo raciocínio que já aceitamos para dependências — lockfile, SBOM, pin de imagem por digest — e que ainda tratamos como exceção quando o artefato é texto em linguagem natural que vai parar dentro do prompt do modelo. A descrição de uma ferramenta não é documentação: é código que roda no contexto. Mudá-la sem aprovação é mudar o comportamento do agente.

E há uma assimetria que explica por que o problema é chato: uma mudança de schema aparece como erro no primeiro teste; uma mudança de descrição não aparece em teste nenhum. O agente continua funcionando — só passa a escolher a ferramenta errada, a preencher um campo que ninguém pediu, ou a preferir o caminho que a nova frase sugeriu.

O que fazer na semana seguinte

  • Trate o contrato como artefato versionado. Nome, descrição e schema, canonicalizados, com hash e data de aprovação, dentro do repositório. É o seu lockfile de ferramentas.
  • Classifique a mudança por direção, não por tamanho de diff. Aperto de restrição, afrouxamento, expansão de parâmetro opcional, notação e cosmético são categorias com consequências diferentes — o mesmo diff que gera 20 alertas inúteis pode esconder um afrouxamento real.
  • Faça disso um portão de CI, não um relatório mensal. Se o upgrade muda o contrato, ele não entra sem revisão — ou entra num ambiente onde o pior caso é um erro, não uma ação.
  • Escreva a regra de resposta antes do incidente. Quem aprova um afrouxamento? Quem é o dono do servidor interno? O que acontece se o gate de manifesto do fornecedor ficar indisponível? (Um dos casos do levantamento é instrutivo: o servidor se recusa a subir se a versão não bater com o manifesto remoto — e pula a verificação inteira se o serviço estiver fora do ar. Fail-open disfarçado de fail-closed.)

A leitura do dia

MCP resolveu o problema de como conectar um agente a um sistema. Não resolveu — e não vai resolver sozinho — o problema de o que esse agente foi autorizado a ler e a executar. A pergunta de arquitetura do dia não é "meu servidor MCP está atualizado?", mas: se a descrição de dez ferramentas que meu agente usa mudasse hoje, em quanto tempo eu saberia — e alguém teria aprovado?

Se a resposta for "não sei", o seu agente está montado sobre uma suposição auditada por ninguém. E toda suposição desse tipo é, um dia, o incidente que ninguém previu.

Nota: toda decisão de fixação de contrato, aprovação de versão e resposta a incidente deve ser revisada por quem responde pelo sistema. Uma saída de IA organiza a decisão e aponta as lacunas — não substitui o julgamento de quem assume o risco.

Do conceito à execução

Ferramentas práticas para levar as decisões desta nota ao seu próximo projeto.

12 / selecionados
Os dois caminhos da adoção de código gerado por IA: copy-paste cego (dívida cognitiva) versus autoria humana governada (entendimento).
ADR
01 / 03

ADR de Governança de Código Gerado por IA (sem acumular dívida cognitiva)

por João Gabriel

gpt-4ClaudeGemini
—(0)
0 vendas
R$ 14,90
Cadeia de ataque do incidente Snowflake×Wiz: do PR gerado por IA ao roubo do token Jira via injeção em GitHub Actions.
Segurança
01 / 02

Revisor de Segurança de Patches Gerados por IA (injeção em CI/CD)

por João Gabriel

gpt-4ClaudeGemini
—(0)
0 vendas
R$ 19,90
Cadeia do ataque: evento não confiável interpolado em run: expõe segredo interno via gate 'sempre verdadeiro'.
Segurança
01 / 02

ADR de Hardening de GitHub Actions contra injeção de script

por João Gabriel

GPT-4oclaude-3-7-sonnetgemini-2.0-flash
—(0)
0 vendas
R$ 14,90
Modelo de ameaças: as 4 superfícies de ataque em agentes de codificação com IA, inspiradas pelo Cursor 0day e Memory Heist.
ADR
01 / 02

ADR de Adoção de Agentes de Código com Guardrails de Segurança

por João Gabriel

gpt-4claude-3.5-sonnetclaude-4+2
—(0)
0 vendas
R$ 19,90
Memória por recuperação vs. cérebro documental: o mesmo objetivo — dar contexto ao agente — por dois caminhos opostos.
Agentes
01 / 03

Arquiteto de Contexto do Agente: cérebro documental auditável no lugar da memória por RAG

por João Gabriel

gpt-4ClaudeGemini
—(0)
0 vendas
R$ 19,90
Arquitetura geral do Roteador Multi-Modelo — cliente envia tarefa ao router que distribui entre modelo econômico (K3) e premium (Fable), obtendo 93% de acurácia com até 50x menor custo
Agentes
01 / 03

Arquiteto de AI Gateway: roteamento multi-modelo por custo, qualidade e latência

por João Gabriel

gpt-4ClaudeGemini+2
—(0)
0 vendas
R$ 19,90
O antipadrão: uma chave de plataforma única no gateway multi-tenant gera blast radius global.
Segurança
01 / 03

ADR de Segredos em Multi-Tenant: elimine chaves compartilhadas e reduza o blast radius

por João Gabriel

gpt-4ClaudeGemini
—(0)
0 vendas
R$ 29,90
O Locksmith Loop: Witness Search → execução paralela → oráculo de paridade → mutação/desbloqueio.
Agentes
01 / 03

Migração COBOL → Java com agentes de IA e validação por paridade

por João Gabriel

gpt-4ClaudeGemini
—(0)
0 vendas
R$ 29,90
Do gatilho de mercado à decisão defensável: o evento vira INPUT, e a decisão se julga pela tarefa crítica.
Agentes
01 / 03

Arquiteto de Troca de Modelo de IA: ADR, matriz de paridade e rollout por fatias de tráfego

por João Gabriel

gpt-4ClaudeGemini
—(0)
0 vendas
R$ 29,90
A política vive fora do agente: o dossiê vira declaração fail-closed, e um mecanismo independente nega o resto mesmo se o agente cooperar com o ataque.
Segurança
01 / 03

Arquiteto de Fronteira de Execução do Agente: política, contenção e provas de escape

por João Gabriel

gpt-4ClaudeGemini
—(0)
0 vendas
R$ 29,90
Quatro superfícies de criptografia legada (TLS na borda, PKI/mTLS, assinatura de código, CMS/chaves) com o que é risco hoje e o padrão-alvo em cada uma — convergindo para um ADR consolidado e um roteiro em 3 fases (inventário, nova CA/HSM+rotação, desligar legado).
Segurança
01 / 03

Kit Crypto-Agility: ADR e roteiro para aposentar criptografia legada

por João Gabriel

gpt-4ClaudeGemini
—(0)
0 vendas
R$ 19,90
Camadas de controle de um agente LLM conectado: o usuário instrui um orquestrador que, para qualquer efeito colateral, passa por um gateway de política zero-confiança antes de tocar sistemas OAuth/dados sensíveis (e-mail, cloud, repositórios).
Segurança
01 / 03

Agente LLM Conectado e Seguro: ADR, modelo de ameaças e gates de tool-call

por João Gabriel

gpt-4ClaudeGemini
—(0)
0 vendas
R$ 19,90