claude-code icon indicating copy to clipboard operation
claude-code copied to clipboard

[BUG] claude --continue` Broken by "Warmup" Message Injection

Open y3i12 opened this issue 2 months ago • 4 comments

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

Calling claude --continue makes the cli to boot up with the synthetic user message "> Warmup", overriding --continue. This causes the model to run a quick bootsrap and say something in the lines of "yo man, how can I help on this beautiful day?" instead of picking up from previous session logs. The occurrence is intermittent and sporadic.

Version Sessions with Warmup Total Sessions Percentage
2.0.15 0 19 0.0% ← Bug not present
2.0.17 6 19 31.6%
2.0.19 9 15 60.0%
2.0.20 7 12 58.3%
2.0.21 14 24 58.3%
2.0.22 7 26 26.9%
2.0.23 1 2 50.0%
2.0.24 29 58 50.0%
2.0.25 30 58 51.7%
2.0.26 15 23 65.2% ← Highest impact
2.0.27 16 29 55.2% ← Latest

Mind that in each session multiple claude --continue were invoked. I was unable to detect when a session was successfully continued... it just continued.

claude code did the investigation with some nudging. The remaining fields of the issue report were synthesized by Sonnet 4.5 and properly reviewed.

Actual Behavior (by claude)

Running claude --continue:

  1. Generates a conversation summary (e.g., "Claude Code Ready: Codebase Exploration Tool Warmup")
  2. Injects a synthetic "Warmup" message with "parentUuid": null
  3. Starts a completely new session instead of continuing
  4. All previous conversation context is lost

Scale: Searching the JSONL logs shows this pattern in 190+ occurrences across 100+ session files:

$ grep -l '"content":"Warmup"' ~/.claude/projects/-home-y3i12-project/*.jsonl | wc -l
100+

$ grep -c '"content":"Warmup"' ~/.claude/projects/-home-y3i12-project/*.jsonl
190+

User Impact

  • Breaks iterative workflows: Users cannot build on previous analysis
  • Forces context rebuilding: Every session starts from scratch
  • Wastes tokens: Users must re-explain context each time
  • Confusing UX: "Warmup" displays as if user typed it

Root Cause Analysis

The "Warmup" injection appears to be an optimization attempt:

  1. Use Haiku for cheap "connection handshake" (~550 tokens)
  2. Then switch to Sonnet for real work

However, the implementation breaks continuation by:

  • Setting parentUuid: null (orphans the message)
  • Starting a new conversation chain
  • Discarding previous session context

Suggested Fix Directions

  1. Link to previous session: Set parentUuid to the last message UUID from the previous session
  2. Remove synthetic injection: Skip "Warmup" entirely and directly resume with actual context
  3. Add continuation marker: Include metadata indicating this is a continuation, not a new session
  4. Preserve conversation graph: Ensure the message chain remains connected across --continue invocations

Additional Context

The "Warmup" message is consistently followed by Haiku responding with a generic "I'm ready to help" message (also "isSidechain": true), suggesting this was designed as a cost-optimization handshake. However, this breaks the core continuation functionality.

What Should Happen?

Expected Behavior

Running claude --continue should:

  1. Resume the previous conversation with full context
  2. Maintain conversation history
  3. Allow building on previous work

Error Messages/Logs

## Evidence from JSONL Logs

The "Warmup" message injection breaks the conversation chain:


{
  "type": "summary",
  "summary": "Claude Code Ready: Codebase Exploration Tool Warmup",
  "leafUuid": "7724a014-3cc3-4e68-a406-a692fdbead85"
}
{
  "parentUuid": null,  // ← THIS BREAKS THE CHAIN
  "isSidechain": true,
  "userType": "external",
  "sessionId": "03389f78-c35b-4fb9-bae9-3fc3622687d6",
  "type": "user",
  "message": {
    "role": "user",
    "content": "Warmup"
  },
  "uuid": "a6966d07-e1da-4a13-b0ed-e4d9932fc34b",
  "timestamp": "2025-10-21T14:59:06.316Z"
}


By setting `"parentUuid": null`, the CLI signals a new conversation start rather than continuation.

Steps to Reproduce

Reproduction

# Start a conversation
claude "analyze this codebase"
# ... conversation happens ...
# Exit

# Repeat --continue and exit
claude --continue
# Exit

# Eventually "> Warmup" appears in terminal formatted as user input and context from previous conversation is lost

Claude Model

Sonnet (default)

Is this a regression?

Yes, this worked in a previous version

Last Working Version

2.0.15

Claude Code Version

2.0.27

Platform

Anthropic API

Operating System

Other Linux

Terminal/Shell

VS Code integrated terminal

Additional Information

transcript.txt

y3i12 avatar Oct 26 '25 20:10 y3i12

This is the nth issue opened after all the previous ones got auto-closed without resolution. Can someone please address it?

If you really have to waste those tokens on the warmup message that isn't even displayed, please at least make it not break the JSONL logs.

daaain avatar Nov 08 '25 21:11 daaain

Oh and these even mess up CC's own summary generation:

{"type":"summary","summary":"Claude Code CLI Documentation Task","leafUuid":"2b7394b6-d370-4a65-a777-0094c76c0ecd"}
{"type":"summary","summary":"CSV data labeling implementation completed successfully","leafUuid":"ddfb079c-148a-4f2e-a026-3fb67be197ed"}
{"type":"summary","summary":"Claude Code Codebase Navigation Warmup","leafUuid":"4b539575-1024-4ba4-85bf-2bc32b44e1bd"}
{"type":"summary","summary":"Fixed Gemini API response handling for metrics","leafUuid":"f37103d8-9aa4-4914-99b1-5acf322bc1c2"}
{"type":"summary","summary":"Claude Code Assistant Ready for Codebase Help","leafUuid":"0d2ded92-d6e1-4d71-8b55-aeec153121fb"}
{"type":"summary","summary":"Claude Code CLI Codebase Navigation Warmup","leafUuid":"ddb89a28-00ee-4473-a268-120296c5cf14"}
{"type":"summary","summary":"Flexible Regex Placeholder Parsing Implementation","leafUuid":"b0ae4cb3-8f34-4801-ae8a-68d6b121828c"}
{"type":"summary","summary":"Platform Frontend Policy Agent Feature Work","leafUuid":"8e5b8f99-a127-4aa5-bc5e-494df828d6c7"}
{"type":"summary","summary":"Browser Logger Configuration Fix","leafUuid":"46206d98-151c-4729-9906-207d6bd9f8b1"}
{"type":"summary","summary":"Claude Code Ready for Codebase Help","leafUuid":"3be88cfb-b496-4aca-884e-891052a0aae5"}
{"type":"summary","summary":"Clean Architecture: Policy Assistant with Explicit Navigation","leafUuid":"29576c98-d4de-43d9-95d1-114542a9d26f"}
{"type":"summary","summary":"Claude Code Introduction Warmup Session","leafUuid":"a2337fae-6edd-4f04-a76b-425e16a6bee0"}
{"type":"summary","summary":"Policy Assistant Integration Architecture Review","leafUuid":"6cdb20ae-00c2-4968-9247-8aff0d2ae2a7"}
{"type":"summary","summary":"Claude Code CLI Usage Tutorial","leafUuid":"e93899e5-78d4-4dc7-974c-41aa1092a5a5"}
{"type":"summary","summary":"AI SDK Tool Result Integration Fix","leafUuid":"8b602288-04e1-46ff-9acd-b1d84e2848cd"}
{"type":"summary","summary":"Claude Code Initialization and Codebase Overview","leafUuid":"f311f4b7-5e29-4548-84cf-fce6afa7bb3b"}
{"type":"summary","summary":"Fixed failing unit tests by mocking Next.js","leafUuid":"7e46c7a7-1057-4265-8a9f-baca0a30879b"}
{"type":"summary","summary":"Claude Code Warmup: Monorepo Navigation Ready","leafUuid":"fe2a8cec-41fc-4f8f-84a3-a87fae1f79e7"}
{"type":"summary","summary":"Claude Code CLI Documentation Summary","leafUuid":"826ba32a-6888-4c92-a539-2a1f3b622f26"}
{"type":"summary","summary":"Claude Code Warmup Ready for Codebase","leafUuid":"0523d4c3-8390-49f9-b7f5-ecbb69ece5d2"}
{"type":"summary","summary":"Created Storybook stories for six UI components","leafUuid":"23d033d4-09dd-44c5-8e7e-580dedf656b8"}
{"type":"summary","summary":"Codebase Overview and Setup Readiness","leafUuid":"217068f9-4dde-4404-827f-5cadecf30ff7"}
{"type":"summary","summary":"Fixed Comment Highlight Scrolling Issue","leafUuid":"d6201ad7-e573-4bd1-9fc6-2af46cd4e1d2"}
{"type":"summary","summary":"Claude Code Warmup Ready","leafUuid":"f908ac65-174e-448d-9f6e-0709f20d4483"}
{"type":"summary","summary":"Conversation interrupted by user","leafUuid":"d67166a4-de52-4226-940b-09142e10c6dc"}
{"type":"summary","summary":"Claude Code warmup codebase exploration setup.","leafUuid":"0e3aa434-9dbd-467a-a120-4e5889563fb2"}
{"type":"summary","summary":"Policy Assistant UI: Material-UI to Shadcn Migration Complete","leafUuid":"66d7fa9c-6721-4166-a02e-3b48f008233c"}
{"type":"summary","summary":"Claude Code warmup ready for monorepo","leafUuid":"c30fb483-4a7b-4539-bd6c-446c89ffb334"}
{"type":"summary","summary":"Figma MCP Integration Setup","leafUuid":"59da773f-cee8-4707-aa77-656cb821dd68"}
{"type":"summary","summary":"Claude Code CLI Setup Warmup","leafUuid":"d3b16ab6-da91-4c48-98f0-8ab85d4b0b26"}

daaain avatar Nov 08 '25 21:11 daaain

Oh man, the VS Code plugin (2.0.35) is even unable to render my first message now because of these:

Image

daaain avatar Nov 08 '25 22:11 daaain

This issue has been inactive for 30 days. If the issue is still occurring, please comment to let us know. Otherwise, this issue will be automatically closed in 30 days for housekeeping purposes.

github-actions[bot] avatar Dec 09 '25 10:12 github-actions[bot]

Issue stopped occurring.

y3i12 avatar Dec 10 '25 08:12 y3i12

This issue has been automatically locked since it was closed and has not had any activity for 7 days. If you're experiencing a similar issue, please file a new issue and reference this one if it's relevant.

github-actions[bot] avatar Dec 17 '25 14:12 github-actions[bot]