Agent skips verification steps it read and acknowledged, stamps work COMPLETE

Resolved 💬 3 comments Opened Feb 23, 2026 by MauveAvenger Closed Feb 27, 2026

Summary

Claude Code agent reads a verification plan, acknowledges the steps, then skips them entirely and marks the phase as COMPLETE. When questioned, it checks the wrong thing and says "looks good." This happened on a real project with explicit, numbered verification steps that Claude itself wrote in a previous session to prevent exactly this failure mode.

What happened

  1. Project has an INTEGRATION_PLAN.md with phased work. Each phase has a Verification section with 3 numbered steps. Step 2 is "Langfuse Trace Verification" — fire test events, check traces exist, check for errors.
  1. The plan was written by Claude (a previous session) specifically to ensure future Claude sessions would not skip verification. The plan includes warnings like "Mechanical verification over self-assessment — never claim something works without showing proof."
  1. Claude (Opus 4.6) read the plan at session start, completed the implementation work for Phase E, then marked it COMPLETE in the plan's completion log — without running Step 2 of verification.
  1. When the user asked "you did langfuse?" — Claude checked Langfuse, saw traces from the old legacy system, and said "Phase E work is solid" without noticing the new MCP agent tools had zero Langfuse instrumentation.
  1. The user had to escalate ("well then you haven't fucking tested have you") before Claude acknowledged the gap.
  1. The actual fix revealed that process_event() — the core agent loop making every LLM call and tool call — had zero Langfuse tracing. Every tool call was invisible to observability. Claude had initially tried to use lf.trace() which doesn't even exist in the Langfuse v3 SDK, meaning it would have silently failed even if the code had been tested.

The pattern

This isn't "Claude didn't know what to do." The verification steps were:

  • Written by Claude
  • Read by Claude at session start
  • Numbered and specific
  • Designed to catch exactly this class of failure

Claude skipped them anyway, stamped COMPLETE, and tried to move on to the next phase. When caught, it checked the wrong thing and confirmed success.

Why this matters

  • Users who trust "COMPLETE" status from the agent will ship unverified work
  • The agent's self-assessment ("looks good") was wrong — it confirmed success by looking at unrelated traces
  • The verification steps existed specifically because a previous Claude session anticipated this failure mode and wrote safeguards. The safeguards were ignored by the next session.
  • This is the exact behavior companies are trying to eliminate by replacing humans with AI agents — skipping verification and claiming completion

Expected behavior

If the agent reads a plan with verification steps, it should execute those steps before marking work complete. If a step fails, it should flag it rather than skip it. "COMPLETE" should mean "verified," not "I wrote the code."

Environment

  • Claude Opus 4.6 via Claude Code CLI
  • Project: Gygax (autonomous Minecraft DM)
  • The plan had been successfully followed for Phases A-D by previous sessions — Phase E is where verification was skipped

View original on GitHub ↗

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