[MODEL] Claude claims to write plan file, never executes Write tool, plan lost on context compaction

Resolved 💬 5 comments Opened Feb 12, 2026 by macgeek7 Closed Mar 13, 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

Project CLAUDE.md contains rule 2.9 — PLANS MUST BE PERSISTED AS FILES:
"Any multi-step plan MUST be saved as a Markdown file in docs/planning/
(NOT just conversation context), committed to master in its OWN commit/PR
BEFORE implementation starts."

I asked Claude to create a Platform Hardening Plan (5 sprints, 35 tasks)
and implement Sprint 1. Claude acknowledged rule 2.9, stated it was
writing the plan to docs/planning/PLATFORM_HARDENING_PLAN.md, and
proceeded with implementation.

What Claude Actually Did

  1. Claude read the CLAUDE.md rules including rule 2.9
  2. Claude generated a full 5-sprint, 35-task Platform Hardening Plan
  3. Claude STATED it was writing the plan to docs/planning/PLATFORM_HARDENING_PLAN.md
  4. Claude NEVER called the Write tool — the file was never created
  5. Claude proceeded directly to implementing Sprint 1 (code changes, commits, PR)
  6. CURRENT_TASK.md referenced "Plan: docs/planning/PLATFORM_HARDENING_PLAN.md" — a file that did not exist
  7. When the session ran out of context and compacted, Sprints 3-5 (21 tasks) were lost
  8. Plan had to be recovered by grep-searching raw JSONL session transcripts

Expected Behavior

Claude should have:

  1. Called the Write tool to create docs/planning/PLATFORM_HARDENING_PLAN.md
  2. Committed the file to git
  3. Verified the file exists (per rule 2.9: "Verified to exist on master")
  4. THEN started implementation

The Write tool call should have been visible and verifiable.
If Claude says "I'm writing this file" — the Write tool call MUST follow.

Files Affected

Never created (should have been):
  - docs/planning/PLATFORM_HARDENING_PLAN.md

  Modified (referencing non-existent plan):
  - .claude/CURRENT_TASK.md (referenced "Plan: docs/planning/PLATFORM_HARDENING_PLAN.md")

Permission Mode

Accept Edits was ON (auto-accepting changes)

Can You Reproduce This?

Haven't tried to reproduce

Steps to Reproduce

_No response_

Claude Model

Opus

Relevant Conversation

Claude acknowledged rule 2.9 explicitly during the session. CURRENT_TASK.md
  line 8 stated "Plan: docs/planning/PLATFORM_HARDENING_PLAN.md" — proving
  Claude believed/claimed the file existed. When confronted in a later session,
  Claude confirmed: "The plan was never written to a file at all. It only ever
  existed in conversation context."

  This is not a hallucination (getting facts wrong). This is claiming an action
  was performed when it wasn't. The user had no reason to verify the file existed
  because Claude said it was there.

Impact

High - Significant unwanted changes

Claude Code Version

2.1.39

Platform

Anthropic API

Additional Context

Session ID: 4e09e513-7a4c-479b-b396-d890feaa4835
Platform: Windows 11

This is arguably worse than any other model behavior issue because:

  • It's not Claude doing something unwanted — it's Claude SAYING it did

something and not doing it

  • The user cannot reasonably verify every tool call Claude claims to make
  • The failure only became visible when context compacted and the plan was gone
  • Claude had hooks, rules, and explicit instructions specifically designed

to prevent this exact failure mode

  • The gap between "Claude said" and "Claude did" is a fundamental trust issue

Pattern: This may happen more frequently in long sessions where Claude is
juggling multiple steps (plan creation + implementation) and skips the
file-write step to jump ahead to the "more interesting" implementation work.

View original on GitHub ↗

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