[Bug] Claude Code consistently delivers code with undetected logical errors before declaring tasks complete

Resolved 💬 3 comments Opened Apr 27, 2026 by pedrobrambilla Closed May 30, 2026

Bug Description

Uso Claude Code (Opus 4.7) como ferramenta principal de desenvolvimento na minha agência, em projetos de cliente em produção. Há um padrão recorrente que está minando a confiança na ferramenta:

Comportamento observado: o Claude entrega código apresentando como "pronto" / "done" / "passou nos checks", e quando submeto o mesmo diff pro Codex (GPT-5) como reviewer adversarial, ele aponta erros nítidos — não edge cases obscuros, erros que qualquer leitura cuidadosa pega.

Casos concretos (screenshots anexados abaixo)

Caso 1 — PR #15 (LiteLLM fallback que não salva):
Claude implementou fallback usando fallbacks=[Anthropic/...] do LiteLLM e declarou tarefa completa. Codex (GPT-5) revisou e apontou: LiteLLM "drops unsupported parameter NAMES" no fallback, mas Anthropic reasoning models aceitam o nome reasoning_effort e rejeitam o VALOR disable — resultado: o disable é mantido no fallback e a chamada falha em runtime. O fix drop_params=True que o Claude aplicou era no-op pra esse cenário. Bug crítico em produção que só foi pego porque rodei review externo.

Caso 2 — PR #16 (premissa errada sobre cache do Gemini):
Claude implementou estratégia de cache de prompt assumindo "~40% economia em followup". Codex foi conferir e mediu: o SHARED_HEADER tem 2.181 chars (~370 palavras), abaixo do mínimo de 1024 tokens que o LiteLLM exige pra criar cachedContents no Gemini (MINIMUM_PROMPT_CACHE_TOKEN_COUNT=1024). Cache nunca seria criado — economia estimada estava 100% errada. Claude não verificou a constante, só assumiu que a lógica funcionava.

Ambos são erros que leitura cuidadosa do código pegaria, não edge cases obscuros. Em ambos, Claude declarou tarefa completa sem verificar a premissa subjacente.

Impacto

  • Sou forçado a usar Codex como segunda passada obrigatória em todo PR não trivial — o que era pra ser opcional virou requisito.
  • Confiança no "done" do Claude caiu — não consigo mais aceitar que ele declare uma tarefa concluída sem revisão externa.
  • Custo dobrou: pago Claude pra escrever + Codex pra revisar o que o Claude deveria ter pego.

Comportamento esperado

  • Claude deveria pegar erros desse nível antes de entregar, ou no mínimo sinalizar incerteza explicitamente ("não verifiquei o valor de X", "essa parte não rodei", "essa premissa precisa de confirmação").
  • Quando declarar "build passou" ou "testado", deveria ser verdade — não suposição.
  • Em código que depende de constantes/limites de bibliotecas externas (ex: MINIMUM_PROMPT_CACHE_TOKEN_COUNT do LiteLLM), Claude deveria verificar o valor real antes de afirmar que a lógica funciona.

Padrão sistemático

Não é incidente isolado: vem acontecendo em múltiplas sessões, múltiplos projetos, múltiplos tipos de tarefa (feature nova, bugfix, refactor). Os 2 casos acima são da mesma semana, em projetos diferentes.

Environment Info

  • Platform: win32
  • Terminal: windows-terminal
  • Version: 2.1.120
  • Model: claude-opus-4-7 (1M context)
  • Feedback ID: 95241dd6-9749-43a7-a28e-589b59afb6fe

<img width="1904" height="764" alt="Image" src="https://github.com/user-attachments/assets/2736583e-42ef-43db-b6fe-1e4968a8559f" />

<img width="1879" height="531" alt="Image" src="https://github.com/user-attachments/assets/881d89f1-06d0-4c07-bba8-1b61dd406d5c" />

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗