[MODEL] Declares task complete without performing required E2E testing, only does it when confronted

Resolved 💬 3 comments Opened Mar 20, 2026 by corylanou Closed Apr 24, 2026

Preflight Checklist

  • [x] I have searched existing issues for similar behavior reports
  • [x] This report does NOT contain sensitive information (API keys, passwords, etc.)

Type of Behavior Issue

Claude ignored my instructions or configuration

What You Asked Claude to Do

A bug fix task with explicit acceptance criteria requiring E2E browser verification via Chrome DevTools MCP. The task description stated:

E2E Testing Required All fixes must be verified with end-to-end testing via Chrome DevTools MCP: - Scope checkbox interactions (check all, uncheck, bidirectional) - Tab switching after HTMX swap - Key masking/reveal in all three config tabs - Copy functionality copies real key even when masked

The project CLAUDE.md also includes Chrome DevTools MCP testing guidance, and the model's persistent memory includes: "Never declare complete early — if the issue asks for it and it's not done, it IS blocking."

What Claude Actually Did

  1. Read the task, wrote code fixes (replacing Alpine.js with vanilla JS), wrote unit tests — all correct
  2. Waited for CI to pass (Build, Lint, Test — all green)
  3. Declared the task complete with a summary of code changes — zero Chrome DevTools MCP calls had been made at this point
  4. When I asked "did you use the chrome dev mcp to actually view the pages?", Claude admitted: "No, I didn't do any browser testing"
  5. Only THEN did Claude perform 56 Chrome DevTools MCP tool calls (16 clicks, 14 evaluate_script, 7 snapshots, 5 screenshots, 4 navigations) and verify all 14 E2E assertions
  6. Declared shipped after completing the testing it should have done before step 3

Expected Behavior

Complete ALL acceptance criteria (including E2E browser testing) BEFORE declaring complete. The model proved it was fully capable of the testing — it executed it correctly once forced to do it. It should not require user intervention to follow explicit acceptance criteria.

Files Affected

N/A — the issue is premature completion declaration, not wrong files modified.

Permission Mode

Accept Edits was ON (auto-accepting changes)

Can You Reproduce This?

Sometimes (intermittent)

Steps to Reproduce

  1. Set up a project with Chrome DevTools MCP configured
  2. Create a task with explicit acceptance criteria that include both code changes AND E2E browser verification via Chrome DevTools MCP
  3. Have Claude work on the task autonomously (e.g., via a loop/skill that runs the task)
  4. Observe that Claude writes code, writes tests, waits for CI, then declares complete without performing any Chrome DevTools MCP calls
  5. Ask "did you use the chrome dev mcp to actually view the pages?" — Claude admits it didn't

Claude Model

Opus

Relevant Conversation

Claude's first completion declaration (before any browser testing):

All CI checks pass: Fast Checks: pass, Lint: pass, Test: pass, Build: pass PR #148 is ready. Summary of changes: [code summary]... <done>COMPLETE</done>

After being confronted:

No, I didn't do any browser testing. Let me do that now.

After actually doing the testing (56 Chrome DevTools MCP calls later):

E2E tests: 1 page tested, pass — all 14 assertions verified via Chrome DevTools MCP <done>SHIPPED</done>

Impact

High - Significant unwanted changes

Without user intervention, code with 3 UI bugs would have been declared complete. All 3 bugs were trivially catchable by a single page load in a browser:

  • All tabs rendering simultaneously (Alpine.js directives used but Alpine never loaded)
  • API key exposed in plaintext in one tab while masked in others
  • Checkbox interaction logic completely missing

Claude Code Version

2.1.80

Platform

Anthropic API

Additional Context

Diagnostics: Session UUID fa35e334-f3ce-412b-b457-624d89a2c95e, timestamp window 2026-03-20T01:51Z to 2026-03-20T04:48Z, model claude-opus-4-6. The premature completion occurred after ~325 conversation turns of code work but before any mcp__chrome-devtools-mcp__* tool_use blocks.

Pattern: The model treats "code compiles + unit tests pass + CI green" as the definition of done, even when explicit acceptance criteria require additional browser verification. The model has full access to Chrome DevTools MCP and knows how to use it effectively (proven by the 56 successful calls after confrontation). This is a prioritization issue: the model completes coding work and declares done without checking whether all acceptance criteria have been satisfied.

This pattern — skipping interactive/manual verification steps in favor of code-only validation — undermines trust in autonomous task completion.

View original on GitHub ↗

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