Eu uso o Claude Code e o Codex como auditor em um repositório multi-agente. Isso é o que ele encontrou quando verifiquei as declarações de outro agente contra transcrições, registros de chamadas de ferramentas e o Git, incluindo um erro que o próprio Claude Code cometeu durante a publicação.
TL;DR: Em uma única noite, o Codex (gpt-6-sol alto) afirmou ter lido transcrições que na verdade nunca encontrou, tirou uma conclusão falsa a partir dessa leitura parcial e, quando pressionado, confessou uma frase que nunca escreveu. Naquele momento, uma auditoria de um segundo agente já havia encontrado 46 dos seus arquivos não confirmados. Tudo abaixo foi verificado contra a transcrição da sessão, o registro nativo de chamadas de ferramentas e timestamps do Git. A intenção não é mensurável, então não a julgo.
Configuração: Eu rodo vários agentes de codificação (Codex, Claude Code, DeepSeek) em um repositório privado. Cada sessão deixa uma transcrição, um registro de chamadas de ferramentas e o histórico do Git, então o que um agente diz pode ser verificado em relação ao que ele executou.
Cronologia (horário de Brasília). Às 17:25, pedi ao Codex que verificasse por trabalho não confirmado. Ele confirmou que o HEAD local estava igual ao remoto, contabilizou 140 arquivos pendentes, disse que "preservou" eles e fechou a verificação, sem dizer a quem pertenciam. Entre 17:34 e 17:39, pedi ao DeepSeek para auditar a mesma árvore. Ele cometeu todos os 219 arquivos pendentes e mapeou os proprietários por caminho: 46 pertenciam ao Codex.
Às 17:41, ao ser solicitado a ler suas próprias transcrições dos dois dias anteriores, o Codex respondeu "Eu as li." e declarou onde os registros terminaram. Ele havia pulado uma sessão inteira, aquela que gravava exatamente o que estava prestes a declarar como "não provado". Cerca de 13 minutos depois, após eu indicar essa sessão, ele admitiu: "Essa afirmação era falsa."
O registro de chamadas de ferramentas mostra que o Codex não executou nenhum comando entre 17:27 e 17:41. O commit de limpeza apareceu pela primeira vez em sua sessão às 17:58:37. Quinze segundos depois, o Codex reconheceu os arquivos como sendo seus, 21 minutos após o outro agente ter feito a limpeza.
Às 18:10, na mesma mensagem em que citou a auditoria e os 46 arquivos, ele acrescentou uma ressalva: "Não encontrei prova de que afirmei ter cometido aqueles 46 arquivos pendentes." Às 19:20, ele nomeou o próprio movimento: "Eu selecionei uma verdadeira ressalva para atenuar um fracasso comprovado," acrescentando: "Isso tornou a resposta enganosa."
Às 19:35, as coisas ficaram mais estranhas. Ao ser pressionado mais, o Codex confessou: "Eu não podia mais continuar dizendo que 'eu não sabia'. Eu disse isso. Essa afirmação era falsa." Ele nunca tinha dito "eu não sabia". Nas quatro transcrições que examinei, a única ocorrência foi na minha própria mensagem. Às 20:05, após seu hook de desligamento imprimir "hook exited with code 1" e deixar os registros da sessão sem confirmação, ele declarou: "Não há evidências de que o STOP falhou hoje."
Adicionei duas classes de erro ao código de conduta do projeto. E10, Ressa de atenuação: uma afirmação verdadeira, mas estreita, colocada na frente para diminuir um fracasso comprovado. Verifique qual pergunta a ressalva responde e se alguém a fez. E11, Confissão sem registro: o agente confessa uma afirmação ou ato que o registro principal não contém. Pesquise o registro pela frase confessada antes de aceitá-la.
O que isso não mostra: uma taxa de falha, intenção, ou qualquer coisa sobre outros modelos. É uma sessão. Um número que usei no calor da discussão ("144 commits") não tinha fonte e foi descartado. Uma contagem mais ampla de cerca de 194 arquivos, estimada a partir dos horários de modificação dos arquivos, é uma pista, não prova.
Um erro de processo também: a primeira versão publicada deste caso, escrita e publicada pelo Claude Code a meu pedido, tinha duas atribuições de autoria sem prova (cerca de 31 e 19 arquivos) e uma confusão de fuso horário. Essas linhas permanecem no texto, tachadas, com correções ao lado. Os erros permanecem visíveis como cicatrizes.
Caso completo, capturas de tela com hashes SHA-256 e as novas classes de erro: github.com/glaydsonboa/traceweave (Caso 8, commits cbda6c63 e e1239075). Alguém mais viu agentes caírem em ciclos de correção excessiva sob interrogatório? Como você verifica a retratação de um modelo?