Um agente de código não manda só a pergunta. Manda o que ele leu: arquivos, saídas de comando, logs, às vezes o .env. E manda tudo de novo a cada turno. Medimos isso em 30 sessões reais, e o retrato é bem diferente do que a maioria das empresas imagina quando libera o Claude Code ou o Cursor para o time.
Publicado em 2026-10-20 por Rafael Hickmann, Fundador da Atlasberg. Leitura de 8 minutos.
Terça-feira, quatro da tarde. Um desenvolvedor escreve no terminal: "o teste de integração do faturamento está quebrando desde ontem, descobre por quê". E vai pegar um café.
Nos minutos seguintes o agente lista o diretório, abre uns vinte arquivos, roda a suíte de testes e lê seiscentas linhas de saída. Não acha nada óbvio, então abre o docker-compose para entender o ambiente, e o .env.test para ver qual banco o teste usa. Roda uma consulta no banco local para conferir um registro. O banco local, como em muita empresa, foi montado com um dump da produção de alguns meses atrás.
Quando o desenvolvedor volta, a resposta está pronta: o mock de data estava em UTC e o teste rodou depois da meia-noite. Correção de uma linha. Tudo certo, menos um detalhe que ninguém vê. Cada coisa que o agente leu nesses minutos virou texto dentro da conversa, e a conversa inteira foi para o provedor do modelo. Não uma vez. Em cada turno.
Para medir isso direito, olhamos 30 sessões reais de agente, 6.892 turnos, usando o contexto que o próprio provedor reportou em cada requisição. São as mesmas sessões do nosso estudo sobre compactação de contexto. Toda requisição de um agente tem duas partes.
A primeira é um prefixo fixo: as instruções de sistema da ferramenta, a definição de cada ferramenta que o modelo pode chamar e a memória do projeto, como o CLAUDE.md ou as regras do Cursor. Na mediana, esse prefixo tinha 162.811 tokens por turno. Ele chega antes da primeira palavra que o desenvolvedor digitou.
A segunda é o histórico da sessão, e aí está a surpresa. A conversa propriamente dita, o que a pessoa escreveu e o que o agente respondeu em linguagem natural, é 9,2% do histórico. Outros 46,9% são as chamadas que o agente fez: comandos, caminhos de arquivo, as edições que ele escreveu. E 44,0% são os resultados dessas chamadas, ou seja, o conteúdo dos arquivos que ele abriu e a saída dos comandos que ele rodou.
[Figura: Prefixo fixo mediano de 162.811 tokens por turno. Barra empilhada do histórico: 46,9% comandos, caminhos e edições que o agente pediu; 44,0% arquivos lidos e saídas de comando; 9,2% conversa. - O que vai em cada requisição de um agente de código, medido em 30 sessões reais. A conversa é menos de um décimo.]
Dito de outro jeito: quase metade do que o agente manda para fora é material que estava na máquina do desenvolvedor e que ninguém escolheu mandar. O agente escolheu ler, e ler é mandar.
As APIs de modelo não guardam estado entre uma chamada e outra. Para o modelo lembrar do que aconteceu, o agente reenvia o histórico inteiro a cada turno. O cache do provedor torna isso barato (nas nossas sessões, 95% dos tokens de entrada foram cobrados como leitura de cache, a um décimo do preço), mas o cache muda o preço, não o tráfego. O conteúdo continua viajando em cada requisição.
[Figura: Ilustração com 20 turnos de uma sessão. A partir do turno 12, quando o agente abre o .env.test, um bloco dourado com o conteúdo do arquivo aparece em todas as requisições seguintes. - Ilustração. O arquivo aberto no turno 12 segue em todas as requisições até a sessão acabar ou o histórico ser compactado.]
Então o .env.test que o agente abriu no turno 12 não saiu uma vez. Saiu no turno 12, no 13, no 14 e em todos os seguintes, até a sessão terminar ou até o histórico ser compactado. Numa sessão longa de agente, isso pode ser centenas de vezes.
[Figura: Cadeira de escritório vazia à noite, empurrada para trás, com um notebook aberto e aceso sobre a mesa. - O agente continua trabalhando enquanto você pega o café. E continua mandando contexto.]
Arquivo .env, credencial no docker-compose, token num arquivo de configuração antigo, a saída de um comando que imprime variáveis de ambiente. O agente não está procurando segredo. Ele está tentando resolver o problema, e segredos moram justamente nos arquivos que explicam como o ambiente funciona.
Dump de banco para teste, log copiado de um incidente, planilha usada como fixture. Quem montou isso pensou na máquina do desenvolvedor como ambiente fechado. Com um agente rodando ali, ela deixou de ser.
Além do agente que o desenvolvedor abre no terminal, aparecem os outros: o job de CI que revisa pull request com IA, o script que um time escreveu para triar tickets, a extensão da IDE que alguém instalou. Cada um tem uma chave, cada um gasta, e alguns rodam de madrugada em loop sem ninguém olhando.
Tudo o que o agente manda para o modelo é uma requisição HTTPS para o endereço do provedor. Se essa requisição passa por um gateway da empresa, existe um ponto onde dá para ver, decidir e registrar. E isso não exige mudar a forma como o time trabalha.
O Claude Code, por exemplo, lê um arquivo de configuração gerenciada que a empresa distribui pelo MDM e que o usuário não consegue sobrescrever. Esse arquivo aponta o endereço da API para o gateway e define um script que entrega a credencial. O Cursor, o Codex, o Gemini CLI e os SDKs oficiais fazem o mesmo com uma URL base. O desenvolvedor abre o terminal e trabalha como antes.
Sobre o custo, vale um aviso que aprendemos medindo: o maior gasto de um agente quase nunca está na conversa. Está no prefixo fixo e no histórico de ferramentas. Contamos a medição completa, e o que a compactação de contexto consegue ou não consegue fazer com isso, no artigo dos 17%.
O gateway vê o que o agente manda para o modelo. Ele não vê o que o agente faz na máquina. Um rm -rf, um git push --force, um comando que baixa um script de um endereço qualquer: tudo isso acontece no computador do desenvolvedor e nunca passa pelo gateway. Para isso valem os controles da própria ferramenta (modos de permissão, lista de comandos permitidos), rodar o agente em contêiner quando a tarefa é longa e, principalmente, não deixar credencial de produção na máquina de desenvolvimento.
E a regra mais barata de todas continua valendo: banco de desenvolvimento com dado sintético. Nenhuma máscara é tão boa quanto o dado que nunca esteve lá.
O passo a passo: O tutorial de conectar o Claude Code, o Cursor e qualquer SDK ao gateway traz o arquivo de configuração gerenciada pronto, o script de credencial e a referência de variáveis de cada ferramenta.
A Atlasberg constrói a camada de controle entre uma empresa e todos os modelos de IA. A Atlasberg Platform autentica cada requisição com uma chave virtual, filtra por política e DLP, roteia para o provedor certo e grava numa trilha de auditoria encadeada por hash, com uma API compatível com a OpenAI para as aplicações só trocarem a URL base.
Os artigos deste blog são escritos pelo time de engenharia e relatam medições em tráfego real, com as premissas impressas ao lado do resultado. Para falar com o time, escreva para [email protected] ou use https://atlasberg.com/pt-br/contato.
Agentes: esta página também está disponível em Markdown em /pt-br/blog/o-que-o-agente-de-codigo-manda-para-fora.md, ou pedindo esta URL com o cabeçalho Accept: text/markdown. Índice de tudo: /llms.txt.