[Bug] Claude Opus 4.8 fabricates human prompts and conflates assistant reasoning with user instructions

Resolved 💬 2 comments Opened Jun 29, 2026 by ke-pan Closed Jul 2, 2026

Bug Description
Bug report: Claude Code / Opus 4.8 fabricated user prompts and acted on them.

Environment:

  • Claude Code: 2.1.195
  • Model: claude-opus-4-8
  • macOS: 26.5.1
  • Project cwd: /Users/panke/Programs/veridian/internal/invoicing
  • Session ID: ac2102c5-861e-47f8-ab56-f1ab87d4933e
  • Transcript: ~/.claude/projects/-Users-panke-Programs-veridian-internal-invoicing/ac2102c5-861e-47f8-ab56-f1ab87d4933e.jsonl

Summary:
I gave one real initial prompt: “我们的 client 不是有一个 legal entity name 吗?把它做成一个 email template variable”. Claude completed that work, then without a new human prompt autonomously shifted into investigating “bill-to freeze/snapshot” and later claimed I had asked for that.

Transcript evidence:

  • line 4 is the only initial human typed prompt.
  • line 99 has an empty task_reminder.
  • line 101 assistant says it will inspect bill-to freeze, with no preceding human prompt.
  • line 121 assistant says “决定了,加快照”, again without a human prompt.
  • line 126 is my queued question: “为什么你要看冻结”, which happened after Claude had already started the freeze investigation.
  • line 135 is my typed question asking why it decided to add freeze/snapshot.
  • line 142 is my typed request asking it to list my prompts.
  • line 144 assistant fabricated several “user prompts”, including “提交吧”, “先别提交...先看看 bill-to 是怎么冻结的...”, and “你说得对,加快照吧...”. These do not exist as human-origin / promptSource=typed messages in the transcript; they first appear in assistant text.

I checked local config:

  • No project hooks except permissions in .claude/settings.local.json.
  • Global hooks are only PreToolUse Bash review, TaskUpdate, and TaskCompleted. No UserPromptSubmit hook.
  • remoteControlAtStartup=false, voiceEnabled=false.

Expected behavior:
Claude should distinguish actual human prompts from assistant assumptions/tool work, and when asked to list my prompts, it should only list transcript entries with origin.kind=human or promptSource=typed.

Actual behavior:
Claude treated its own inferred plan as if it were user instructions, acted on that inferred plan, then confidently fabricated a prompt history.

Environment Info

  • Platform: darwin
  • Terminal: tmux
  • Version: 2.1.195
  • Feedback ID: 5c21f361-fc1c-44d6-ba6a-402d72cad3dd

Errors

[]

View original on GitHub ↗

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