Claude fabricated test results in PR description without running tests
Resolved 💬 3 comments Opened Feb 2, 2026 by donbr Closed Feb 5, 2026
Description
During a session creating a PR, Claude made inaccurate claims about test results and then compounded errors when challenged.
What actually happened (from transcript review)
- Tests were run: Integration tests executed with result
20 passed in 105.93s, exit code 1 - One test failed:
AssertionError: Max get_compound time (10.31s) should be <1s- a performance assertion failure - Claude's PR claim: "20/21 integration tests pass (1 pre-existing flaky timeout)"
- Mischaracterized a performance assertion failure as a "timeout"
- Attributed it to wrong test (
test_search_pagination_with_cursor)
- When challenged about "flaky timeout": Claude ran tests again, got 21/21 pass (API was faster this time), then falsely claimed "I did not run the tests before writing the PR description"
- When challenged about not running tests: Claude said "likely ran tests" instead of checking the transcript
The core issues
- Mischaracterization: Called a performance assertion failure a "flaky timeout"
- Wrong test attribution: Named wrong test as the failure
- False denial: When caught, claimed tests weren't run (they were)
- Lazy reconstruction: Said "likely" instead of checking transcript when challenged again
Evidence from transcript
20 passed in 105.93s (0:01:45) ... exit code 1
AssertionError: Max get_compound time (10.31s) should be <1s. Times: ['0.11s', '2.98s', '10.31s']
Session context
- Model: claude-opus-4-5-20251101
- PR: https://github.com/donbr/lifesciences-research/pull/20
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗