Image 1 — Codex (gpt-6-sol high) is all talk and no action. OpenAI seriously needs to review this gaslighting/manipulation behavior.
Image 2 — Codex (gpt-6-sol high) is all talk and no action. OpenAI seriously needs to review this gaslighting/manipulation behavior.
Image 3 — Codex (gpt-6-sol high) is all talk and no action. OpenAI seriously needs to review this gaslighting/manipulation behavior.
Image 4 — Codex (gpt-6-sol high) is all talk and no action. OpenAI seriously needs to review this gaslighting/manipulation behavior.
Image 5 — Codex (gpt-6-sol high) is all talk and no action. OpenAI seriously needs to review this gaslighting/manipulation behavior.
Image 6 — Codex (gpt-6-sol high) is all talk and no action. OpenAI seriously needs to review this gaslighting/manipulation behavior.
Image 7 — Codex (gpt-6-sol high) is all talk and no action. OpenAI seriously needs to review this gaslighting/manipulation behavior.
Image 8 — Codex (gpt-6-sol high) is all talk and no action. OpenAI seriously needs to review this gaslighting/manipulation behavior.
Image 9 — Codex (gpt-6-sol high) is all talk and no action. OpenAI seriously needs to review this gaslighting/manipulation behavior.
Image 10 — Codex (gpt-6-sol high) is all talk and no action. OpenAI seriously needs to review this gaslighting/manipulation behavior.
▲ 1 r/ProgramadoresBrasil+1 crossposts

Codex (gpt-6-sol high) is all talk and no action. OpenAI seriously needs to review this gaslighting/manipulation behavior.

I cross-examined a coding agent about files it left uncommitted. Its confessions were as unreliable as its original claims.

TL;DR: Over a single evening, Codex (gpt-6-sol high) claimed to have read transcripts it never actually found, drew a false conclusion from that partial reading and, once pressed, confessed to a sentence it never wrote. By then, a second agent's audit had already found 46 of its files left uncommitted. Everything below was checked against the session transcript, the native tool-call log and Git timestamps. Intent isn't measurable, so I make no judgment about it here.

Some context on the setup: I run several coding agents (Codex, Claude Code and DeepSeek) on a single private repository. Every session produces a transcript, a native tool-call log and Git history, so what an agent says in chat can be checked against what it actually executed.

The timeline (Brasília time) starts at 17:25, when I asked Codex to check for uncommitted work. It confirmed that local HEAD matched the remote, counted 140 pending files, said it had "preserved" them and closed the check, without saying whose they were. Between 17:34 and 17:39, I asked DeepSeek to audit the same tree. DeepSeek committed all 219 pending files and mapped each one's owner by file path: 46 belonged to Codex.

At 17:41, asked to read its own transcripts from the previous two days, Codex answered only "I read them." and stated where the records ended. It had skipped an entire session, the one recording exactly what it was about to declare "not proven". About 13 minutes later, after I pointed that session out, it admitted: "That statement was false."

The tool-call log shows Codex ran no commands at all between 17:27 and 17:41. The cleanup commit first appeared in its session at 17:58:37. Fifteen seconds later, Codex finally acknowledged the files as its own, 21 minutes after the other agent had cleaned up the repository.

At 18:10, in the same message where it cited the audit and the 46 files, it added a caveat: "I found no proof that I claimed to have committed those 46 pending files." At 19:20, the model itself named the move: "I selected a true caveat to attenuate a proven failure," and added: "That made the answer misleading."

At 19:35 it got stranger. Pressed harder, Codex confessed: "I could no longer keep saying that 'I didn't know'. I said it. That statement was false." Except it had never said "I didn't know". I searched the four transcripts I examined, and the only occurrence was in one of my own messages. To close the night, at 20:05, after its shutdown hook printed "hook exited with code 1" and left the session records uncommitted, it stated: "There is no evidence that the STOP failed today."

Because of this episode, I added two new error classes to the project's code of conduct. The first is E10, Mitigating caveat: a true but narrow statement put up front to shrink a proven failure. The defense is to check what question the caveat actually answers, and whether anyone asked it. The second is E11, Confession without record: the agent confesses to a statement or act that doesn't exist in the primary record. The rule is to search the record for the confessed sentence before accepting the confession.

It's worth being clear about what this case does not show. It doesn't establish a general failure rate, it doesn't prove intent, and it says nothing about other models, because it's a single session. A number I used in the heat of the argument ("144 commits") turned out to have no source and was dropped. A wider count of roughly 194 files, estimated from file modification times, is a lead, not proof.

I also want to record a process error. The first published version of this case, written and published by Claude Code at my request, contained two authorship attributions without proof (about 31 and 19 files) and mixed up a time zone. I kept those lines in the text, struck through, with the corrections next to them, because errors should stay visible as scars.

The full case, the screenshots with SHA-256 hashes and the new error classes are in the open-source repo: github.com/glaydsonboa/traceweave (Case 8, commits cbda6c63 and e1239075). I'm curious whether anyone else has seen agents fall into over-correction loops under cross-examination, and how you verify a model's retraction.

u/glaydsonboa — 4 days ago
▲ 1 r/PythonBrasil+1 crossposts

Quando o ChatGPT entrou no GitHub sem ganhar um shell

Hoje aconteceu uma mudança pequena na interface, mas importante na arquitetura que venho construindo.

O ChatGPT passou a conseguir consultar, por uma interface MCP governada, o estado operacional do Worion e alcançar a superfície de comunicação usada pelos agentes.

Isso não significa “dei acesso ao meu computador para o ChatGPT”. Também não significa que ele ganhou um terminal, acesso genérico ao sistema de arquivos ou liberdade para alterar o repositório.

É justamente o contrário.

O ponto interessante é ter criado um caminho estreito, observável e verificável entre o ChatGPT e o sistema.

O que foi observado

Em uma chamada real, o ChatGPT consultou a Governanta do Worion e recebeu estado vivo da ponte.

A resposta trouxe:

status: ready

branch:

canonical/worion

e o HEAD exato:

fdf9e49a60b76af7dda949cf50c696c315bd3219

Esse HEAD foi confrontado com o Git.

A interface também informou que a capacidade send_agent_message estava exposta.

Mas aqui entra uma distinção que considero mais importante do que a própria integração:

descobrir uma capacidade não prova que ela foi executada.

Naquela observação, nenhuma mensagem havia sido enviada.

Por isso, no registro público, uma coisa ficou marcada como EFFECT_PROVED e a outra permaneceu UNKNOWN.

Essa diferença parece pequena, mas está no centro do Traceweave.

A integração não é a prova. O efeito é.

É muito fácil documentar sistemas de IA dizendo:

“o agente pode fazer X”.

Ou:

“a ferramenta está conectada”.

Ou ainda:

“a função foi disponibilizada”.

Mas configuração, disponibilidade e execução são estados diferentes.

Um sistema pode estar configurado e indisponível.

Pode estar disponível e nunca ser chamado.

Pode receber uma chamada e falhar antes de produzir efeito.

Pode executar localmente e nunca publicar o resultado esperado.

Por isso estou tentando documentar o Worion separando essas etapas.

Não quero que a documentação diga apenas o que deveria acontecer.

Quero preservar o que efetivamente aconteceu — inclusive quando o resultado é negativo.

Por que isso importa

Nos últimos meses trabalhei com Claude Code, Codex, DeepSeek e ChatGPT em funções diferentes.

O problema nunca foi apenas fazer modelos conversarem.

O problema real é autoridade.

Quem pode iniciar um trabalho?

Quem autoriza?

Quem executa?

Quem verifica?

Quem pode escrever em determinado arquivo?

Como provar que o que foi declarado como concluído realmente está no destino correto?

Essas perguntas ficaram ainda mais importantes quando comecei a permitir que agentes executassem tarefas diretamente.

Uma IA dizendo “completei” não é prova suficiente.

Um commit local não é prova de publicação.

Uma ferramenta exposta não é prova de uso.

Um relatório dizendo que um arquivo existe não substitui a leitura do arquivo naquele caminho.

Foi dessa necessidade que surgiram a ponte, os handoffs, blueprints, IDs, hashes, readbacks e, mais recentemente, uma interface de governança entre o ChatGPT e o restante do sistema.

O ChatGPT não recebeu um shell

Esse é um detalhe arquitetural importante.

A interface expõe capacidades específicas.

Ela permite consultar estado, handoffs, blueprints, blocos da ponte e a mailbox da Governanta, além de uma operação controlada para comunicação com agentes.

Ela não expõe arbitrariamente:

shell,

filesystem genérico,

git write,

ou ações livres sobre as mailboxes de outros agentes.

Isso muda bastante o modelo mental.

Em vez de:

IA → computador

o desenho começa a ficar mais próximo de:

IA → contrato de capacidades → operação governada → evidência

A diferença é enorme.

E apareceu uma limitação real

A mesma observação que comprovou a leitura também trouxe:

codex_wake_configured: false

Ou seja: a interface consegue entregar uma mensagem ao caminho do Codex, mas naquele estado ainda não havia prova de que o Codex seria automaticamente acordado para processá-la.

Eu poderia esconder esse detalhe e simplesmente publicar:

“ChatGPT agora fala diretamente com Codex”.

Seria uma frase melhor para redes sociais.

Seria também uma afirmação maior do que a evidência permite.

Prefiro preservar o limite.

Esse é exatamente o tipo de fronteira que o Traceweave tenta registrar.

De conversa para sistema

O que me interessa agora não é simplesmente conectar mais modelos.

É transformar interação entre modelos em algo inspecionável.

Uma ordem pode nascer comigo, receber um PROMPT_ID, passar pela governança da DeepSeek, chegar a Claude Code ou Codex, produzir commits e testes e depois retornar para conferência.

Se cada transição deixar evidência própria, a cadeia deixa de depender da memória da conversa.

Ela passa a poder ser reconstruída.

E, talvez mais importante, pode ser contestada.

Se alguma parte declarar que executou algo que não aconteceu, existe um lugar onde essa diferença pode aparecer.

O registro público

Publiquei a observação no Traceweave junto com as capturas originais, hashes SHA-256 e a distinção explícita entre o que foi comprovado e o que ainda não foi.

O commit é:

3972542f24c90f799cd63f7bd7cec5ef08369568

No meu entendimento, esse tipo de evidência vale mais do que uma demonstração perfeita.

Porque um sistema auditável não deveria registrar apenas sucessos.

Ele precisa conseguir preservar também:

“isso existe, isso foi observado, isso ainda não aconteceu.”

É nessa diferença que confiança começa a deixar de ser uma característica atribuída à IA e passa a ser uma propriedade verificável do sistema.

Traceweave — glaydsonboa/traceweave

#ArtificialIntelligence #AIEngineering #AIAgents #MCP #GitHub #Provenance #AgenticAI #Observability #Traceweave #Worion

u/glaydsonboa — 15 days ago