claude-code - 💡(How to fix) Fix [BUG] turn-transition render omission — content recorded in .jsonl but absent from scrollback (2 incidents across 2 versions)

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

Error Message

Error Messages/Logs

Code Example

05/27 @ 16:14:04

  Acknowledged. Checking what RESUME artifacts exist for the inbox-backlog → inbox-tending chain, then reconstructing for closure.

---

05/29 @ 15:33:43

  Concede — that distinction was artificial. Provenance as comprehensive audit trail (the AMD pattern's "data lineage" function alongside structural decisions, forks, etc.) includes origin attribution naturally. Pointer-shaped entries belong in provenance by design; calling them friction was wrong.

  (a) is the right path. Authoring prov-010 (criteria origins) and prov-011 (Option-3 fork) now.

---

// at 2026-05-27T20:14:04.583Z — user prompt (string content)
{
  "type": "user",
  "message": {
    "role": "user",
    "content": "RESUME_inbox-tending.md needs to be closed.  It's an orphaned path metamorphosis from inbox-backlog.  You''l need to do the recreation."
  },
  "timestamp": "2026-05-27T20:14:04.583Z"
}

// at 2026-05-27T20:14:37.718Z — assistant response (pure text, end_turn)
{
  "type": "assistant",
  "message": {
    "role": "assistant",
    "content": [{
      "type": "text",
      "text": "05/27 @ 16:14:04\n\nAcknowledged. Checking what RESUME artifacts exist for the inbox-backlog → inbox-tending chain, then reconstructing for closure."
    }]
  },
  "timestamp": "2026-05-27T20:14:37.718Z"
}

---

// at 2026-05-29T19:33:43.657Z — user prompt (string content)
{
  "type": "user",
  "uuid": "f837582a-8896-4527-9258-265f914bff89",
  "parentUuid": "62116f56-68ed-46f4-b5c2-9414ffa3b763",
  "message": {
    "role": "user",
    "content": "I think you may be creating an unnecessarily fine distinction.  If I want information about the project I go to provenance.  Provenance points me to the *various* sources that influenced the project/build.  Why would it be \"friction\" to have more than one form of information pointed to?"
  },
  "timestamp": "2026-05-29T19:33:43.657Z",
  "sessionId": "f2336af3-0903-4b7d-ba87-b6eb0eddbe1f",
  "version": "2.1.145",
  "cwd": "/home/rhys/homelab/projects/active/homelab_main",
  "gitBranch": "main"
}

// at 2026-05-29T19:33:59.466Z — assistant response (text prefix to tool_use)
{
  "type": "assistant",
  "uuid": "07dfa0f5-8c13-473c-a7e4-c4d3ffce7732",
  "message": {
    "role": "assistant",
    "content": [{
      "type": "text",
      "text": "05/29 @ 15:33:43\n\nConcede — that distinction was artificial. Provenance as comprehensive audit trail (the AMD pattern's \"data lineage\" function alongside structural decisions, forks, etc.) includes origin attribution naturally. Pointer-shaped entries belong in provenance by design; calling them friction was wrong.\n\n(a) is the right path. Authoring prov-010 (criteria origins) and prov-011 (Option-3 fork) now."
    }],
    "stop_reason": "tool_use"
  },
  "timestamp": "2026-05-29T19:33:59.466Z",
  "sessionId": "f2336af3-0903-4b7d-ba87-b6eb0eddbe1f"
}

---

None.
RAW_BUFFERClick to expand / collapse

Preflight Checklist

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

What's Wrong?

Anthropic bug report — cct render-omission at turn transitions (cluster, two-incident evidence)

20260527_dialog_omission.pdf <img width="3120" height="1050" alt="Image" src="https://github.com/user-attachments/assets/261a4148-8cc9-4388-a93f-984a1f91ee9d" />

Dialog-omission-capture.md <img width="1440" height="900" alt="Image" src="https://github.com/user-attachments/assets/215a2fb6-4c94-43ab-8035-0e53967157de" /> <img width="1440" height="900" alt="Image" src="https://github.com/user-attachments/assets/18ca31f4-1ad4-4f83-a519-2c0fa30e896b" /> <img width="1440" height="900" alt="Image" src="https://github.com/user-attachments/assets/6911fc75-9fd8-49a2-a164-7ed4595e5647" /> <img width="1440" height="900" alt="Image" src="https://github.com/user-attachments/assets/6e3d88c2-fc90-4441-9fc5-4d620c25d0b7" /> <img width="1440" height="900" alt="Image" src="https://github.com/user-attachments/assets/0a34e965-0050-41f3-ae62-50b034463d3c" /> <img width="1440" height="900" alt="Image" src="https://github.com/user-attachments/assets/ac0c1232-4985-4ec0-b624-a46b192bc6d7" /> <img width="1440" height="900" alt="Image" src="https://github.com/user-attachments/assets/d2a5721e-c8d2-4486-b44f-4bc42708a6f2" /> <img width="1440" height="900" alt="Image" src="https://github.com/user-attachments/assets/4baa5f63-c08c-415e-9c62-50bb38a45372" />

cct: at certain turn transitions, user prompts (and in one observed case the full turn) are omitted from rendered scrollback while .jsonl storage records all components correctly — observed across CCC 2.1.144 and 2.1.145, two terminals' worth of evidence

What this file is: Submission-ready bug report for Anthropic regarding a Claude Code (cct) display anomaly: at certain turn transitions, the user prompt (and in one observed instance the entire turn including agent response body) is absent from rendered scrollback while the .jsonl storage layer records all components correctly. Built from two captured incidents (2026-05-27 at CCC 2.1.144, 2026-05-29 at CCC 2.1.145) plus three earlier surface-observed instances in the same display-vs-storage cluster.

What it interacts with: Per-incident drafts retained as provenance — anthropic_bug_report_cct_render_omission_20260527.md (4th-instance source) and Second-incident-2026-05-29/anthropic_bug_report_cct_render_omission_20260529.md (5th-instance source). Evidence files: Screenshot_20260527_174843.png, 20260527_dialog_omission.pdf (4th-instance), Second-incident-2026-05-29/Dialog-omission-capture.md + 8 PNG screenshots (5th-instance). hbsup project memory project_cct_render_omission_20260527.md (cluster summary).

Where to look for more: Per-incident drafts above for the unabridged single-incident narratives. Session transcripts at ~/.claude/projects/-home-rhys-homelab-hub/c008eb0f-a293-4663-837f-45625f0604c5.jsonl (4th) and ~/.claude/projects/-home-rhys-homelab-projects-active-homelab-main/f2336af3-0903-4b7d-ba87-b6eb0eddbe1f.jsonl (5th).


Related (same cluster, different specific defect): #63462 (phantom Human lines — inverse direction), #60802 (/resume wrong-session render — different trigger). These cases together suggest a class of scrollback-vs-storage divergence anomalies; the present report adds reproducible cluster-instance-at-turn-transition evidence with version-bump stability.

One-paragraph summary

Claude Code's terminal-rendering layer drops content at certain turn transitions: the user's prompt and the hook-injected turn-anchor are absent from the rendered scrollback, and in one observed instance the agent's response body is also absent. The .jsonl session transcript records all omitted content correctly, demonstrating that the failure is in the display path, not the input or model path. Two reproducible instances are documented in detail; both occurred in Konsole on Kubuntu 24.04 LTS, one at CCC 2.1.144 and one at 2.1.145 (the version bump did not resolve the defect). The two instances differ in failure scope (partial vs full-turn omission), and that scope difference correlates with a shift in the agent response's stop_reason (end_turn vs tool_use), which is suggested as a bisection target.

Environment (common substrate across both incidents)

  • Claude Code (cct): 2.1.144 (1st captured incident) and 2.1.145 (2nd captured incident) — defect persists across the version bump
  • Terminal: Konsole 23.08.5 (Qt 5.15.13, KDE Frameworks 5.115.0)
  • OS: Kubuntu 24.04.3 LTS (KDE Plasma 5.27)
  • Hooks active (UserPromptSubmit): bash /home/rhys/homelab/scripts/turn_tag_inject.sh (global; injects MM/DD @ HH:MM:SS turn-anchor as agent reply prefix)
  • Hooks active (UserPromptSubmit, project-scoped, present 4th-instance only): /home/rhys/homelab/scripts/userpromptsubmit_diag.sh (captures prompt to log)
  • Hooks active (SessionStart): /home/rhys/homelab/hub/tools/turn_count_inject.sh (global)

Two captured incidents

Incident A — 2026-05-27 (4th cluster instance, partial-turn omission)

  • Session: c008eb0f-a293-4663-837f-45625f0604c5, hub project
  • Turn transition: 2026-05-27 20:14:04 UTC (16:14:04 local)
  • CCC version: 2.1.144

Storage layer (.jsonl) — records correctly:

  • User prompt (timestamp 2026-05-27T20:14:04.583Z): "RESUME_inbox-tending.md needs to be closed. It's an orphaned path metamorphosis from inbox-backlog. You''l need to do the recreation."
  • Agent response (timestamp 2026-05-27T20:14:37.718Z, stop_reason: end_turn, pure text):
    05/27 @ 16:14:04
    
    Acknowledged. Checking what RESUME artifacts exist for the inbox-backlog → inbox-tending chain, then reconstructing for closure.

Display layer (rendered scrollback) — verified via screenshot + Konsole Paste-Selection (X PRIMARY selection):

  • User prompt: absent
  • Agent turn-anchor (05/27 @ 16:14:04): absent
  • Blank-line separator: absent
  • Agent response body: present and correct

The selectable buffer goes directly from the previous response (- Consolidation: #119 triage / #118 practice writing / #117 lower-priority propagation) → blank line → Acknowledged. Checking... with no trace of the omitted prompt + turn-anchor.

Incident B — 2026-05-29 (5th cluster instance, full-turn omission)

  • Session: f2336af3-0903-4b7d-ba87-b6eb0eddbe1f, hlmain project
  • Turn transition: 2026-05-29 19:33:43 UTC (15:33:43 local)
  • CCC version: 2.1.145

Storage layer (.jsonl) — records correctly:

  • User prompt (timestamp 2026-05-29T19:33:43.657Z, uuid f837582a-8896-4527-9258-265f914bff89): "I think you may be creating an unnecessarily fine distinction. If I want information about the project I go to provenance. Provenance points me to the *various* sources that influenced the project/build. Why would it be \"friction\" to have more than one form of information pointed to?"
  • Agent response (timestamp 2026-05-29T19:33:59.466Z, uuid 07dfa0f5-8c13-473c-a7e4-c4d3ffce7732, stop_reason: tool_use, text prefix to Edit tool calls):
    05/29 @ 15:33:43
    
    Concede — that distinction was artificial. Provenance as comprehensive audit trail (the AMD pattern's "data lineage" function alongside structural decisions, forks, etc.) includes origin attribution naturally. Pointer-shaped entries belong in provenance by design; calling them friction was wrong.
    
    (a) is the right path. Authoring prov-010 (criteria origins) and prov-011 (Option-3 fork) now.

Display layer (rendered scrollback) — verified via Konsole Paste-Selection (Dialog-omission-capture.md) + 8 screenshots:

  • User prompt: absent
  • Agent turn-anchor (05/29 @ 15:33:43): absent
  • Blank-line separator: absent
  • Agent response body: absent

The buffer goes directly from the previous turn's response (ending the "hop friction" discussion at 15:29:10) → blank line → the next user prompt at 15:45:46 (which itself flagged the glitch). The entire 15:33:43 turn is missing from rendered scrollback.

The reporter confirmed storage integrity by asking the post-omission agent to retrieve the dropped content; agent retrieved it verbatim, proving input reached the model and produced the response despite the rendering failure.

Scope-escalation comparison and stop_reason correlation

AspectIncident A (2026-05-27)Incident B (2026-05-29)
User prompt renderedNoNo
Agent turn-anchor renderedNoNo
Agent response body renderedYes (correct)No (also omitted)
Failure scopeprompt + turn-anchorfull turn
Agent response stop_reasonend_turn (pure text)tool_use (text prefix to tool calls)
CCC version2.1.1442.1.145

Key diagnostic observation: the failure-scope escalation (response body also omitted in Incident B) correlates with a shift in the agent response shape from pure-text-end_turn to text-prefix-to-tool_use. If cct's render path handles text + tool_use response packets differently from text + end_turn, that interaction is a plausible failure-trigger candidate worth checking.

Diagnostic features of dropped content (cross-incident)

FeatureIncident AIncident B
Dropped prompt length~30 words, 2 sentences~50 words, 4 sentences
Markdown emphasis in promptNoYes (*various*)
Scare quotes in promptNoYes ("friction")
Interrogative formNoYes (terminal ?)
Substantive correctiveDirectiveYes (corrective rhetorical question)
Dropped response length~25 words~75 words, 2 paragraphs
Response stop_reasonend_turntool_use

Both prompts are substantive content (neither a single-word reply, pure directive, nor short acknowledgement); a sample of two is not enough to characterize the trigger condition further. Reproducibility-mapping across other turn shapes (single-word replies, pure directives, tool-output continuations, etc.) has not yet been attempted.

Reproducibility

Both incidents are persistent in their respective scrollbacks — re-opening the affected region in either session shows the same omission, not a transient flicker. The defect survived the CCC 2.1.144 → 2.1.145 version bump and was observed in two different cct projects, ruling out per-project hook configuration as the cause.

Broader reproducibility (rate per turn transition, sensitivity to terminal choice, sensitivity to hook presence) is not yet characterized. The reporter can produce additional captures: ANSI raw output via script-wrapped session, A/B testing with hooks disabled, terminal-portability tests against xterm/alacritty/gnome-terminal.

Evidence attached

EvidenceIncidentLocation
Screenshot of broken renderAScreenshot_20260527_174843.png
PDF capture (additional)A20260527_dialog_omission.pdf
Paste-Selection extraction (verbatim)AInline in per-incident draft anthropic_bug_report_cct_render_omission_20260527.md
userpromptsubmit_diag log (hook fired at submit)A/home/rhys/.claude/logs/diag_raw/userpromptsubmit_diag_20260527_161404_78688.json
Buffer capture (Konsole Paste-Selection)BSecond-incident-2026-05-29/Dialog-omission-capture.md
Screenshots (8 captures, 16:15–16:18 local)BSecond-incident-2026-05-29/Screenshot_20260529_1615*.png...161842.png
Agent-side storage-integrity confirmationBCaptured in the same Dialog-omission-capture.md — turns at 15:45:46 + 15:46:46 retrieving the omitted prompt + response verbatim from session memory

.jsonl excerpts (verbatim from session transcripts)

Incident A:

// at 2026-05-27T20:14:04.583Z — user prompt (string content)
{
  "type": "user",
  "message": {
    "role": "user",
    "content": "RESUME_inbox-tending.md needs to be closed.  It's an orphaned path metamorphosis from inbox-backlog.  You''l need to do the recreation."
  },
  "timestamp": "2026-05-27T20:14:04.583Z"
}

// at 2026-05-27T20:14:37.718Z — assistant response (pure text, end_turn)
{
  "type": "assistant",
  "message": {
    "role": "assistant",
    "content": [{
      "type": "text",
      "text": "05/27 @ 16:14:04\n\nAcknowledged. Checking what RESUME artifacts exist for the inbox-backlog → inbox-tending chain, then reconstructing for closure."
    }]
  },
  "timestamp": "2026-05-27T20:14:37.718Z"
}

Incident B:

// at 2026-05-29T19:33:43.657Z — user prompt (string content)
{
  "type": "user",
  "uuid": "f837582a-8896-4527-9258-265f914bff89",
  "parentUuid": "62116f56-68ed-46f4-b5c2-9414ffa3b763",
  "message": {
    "role": "user",
    "content": "I think you may be creating an unnecessarily fine distinction.  If I want information about the project I go to provenance.  Provenance points me to the *various* sources that influenced the project/build.  Why would it be \"friction\" to have more than one form of information pointed to?"
  },
  "timestamp": "2026-05-29T19:33:43.657Z",
  "sessionId": "f2336af3-0903-4b7d-ba87-b6eb0eddbe1f",
  "version": "2.1.145",
  "cwd": "/home/rhys/homelab/projects/active/homelab_main",
  "gitBranch": "main"
}

// at 2026-05-29T19:33:59.466Z — assistant response (text prefix to tool_use)
{
  "type": "assistant",
  "uuid": "07dfa0f5-8c13-473c-a7e4-c4d3ffce7732",
  "message": {
    "role": "assistant",
    "content": [{
      "type": "text",
      "text": "05/29 @ 15:33:43\n\nConcede — that distinction was artificial. Provenance as comprehensive audit trail (the AMD pattern's \"data lineage\" function alongside structural decisions, forks, etc.) includes origin attribution naturally. Pointer-shaped entries belong in provenance by design; calling them friction was wrong.\n\n(a) is the right path. Authoring prov-010 (criteria origins) and prov-011 (Option-3 fork) now."
    }],
    "stop_reason": "tool_use"
  },
  "timestamp": "2026-05-29T19:33:59.466Z",
  "sessionId": "f2336af3-0903-4b7d-ba87-b6eb0eddbe1f"
}

Cluster context (5 instances, varying-resolution evidence)

The two incidents above are the high-evidence members of a wider display-vs-storage anomaly cluster the reporter has been tracking. The earlier 3 are user-observed at lower diagnostic resolution; they are listed for pattern context, not load-bearing claim.

DateInstanceNoteReference
2026-05-231stRecap block appeared in user-prompt slot, omitting the prompt from scrollback. User-prompt-slot rendering failure.hub-support project memory: project_cct_recap_in_prompt_slot.md
2026-05-25 (approx.)2ndStatus-line turn counter observed stuck at 1 — "documented behavior conflicts with surface presentation."hub-support project memory: project_ccc_statusline_counter_stuck.md
(date unspecified)3rdEffort-cache display value ≠ actual cached value.Cluster summary reference
2026-05-274th (Incident A above)Partial-turn omission (prompt + turn-anchor); response body rendered. Storage vs display asymmetry verified at transcript level.bug-reports/anthropic_bug_report_cct_render_omission_20260527.md (per-incident draft)
2026-05-295th (Incident B above)Full-turn omission (prompt + turn-anchor + response body). Defect persists across CCC version bump (2.1.144 → 2.1.145).bug-reports/Second-incident-2026-05-29/anthropic_bug_report_cct_render_omission_20260529.md (per-incident draft)

Cluster signature: "documented behavior conflicts with surface presentation" — storage/protocol layer behaves correctly; display layer rendering selectively fails. Across the cluster, the affected surface varies (prompt slot, status line, effort cache, turn body), but the underlying gap is the same: state available in the system is not faithfully reflected in what the user sees.

Suggested investigation paths

  1. text + tool_use rendering path — the response-body omission in Incident B correlates with a shift from end_turn (pure text) to tool_use (text prefix to tool calls). If the render path treats text + tool_use response packets differently from text + end_turn, that interaction is a plausible failure trigger. Worth bisecting.
  2. Failure-scope variation — Incident A omitted prompt + turn-anchor; Incident B omitted the full turn. Is this one failure mode with variable scope (driven by post-prompt response shape), or two distinct failure modes that happen to co-occur in the same code path?
  3. CCC version stability — defect survives 2.1.144 → 2.1.145. Either both versions carry the defect, or the defect originates outside the CCC code path (terminal, environment, hook-output-stream interaction).
  4. Hook output interaction — both incidents had the global turn_tag_inject.sh UserPromptSubmit hook active, which emits a turn-anchor string appended to the user prompt before submission. Worth testing whether disabling the hook eliminates the omission; if yes, the interaction between hook output and the prompt-render path is implicated. (Incident A had an additional project-scoped diag-capture hook; Incident B did not — and the failure was more severe in Incident B, weakening any "more hooks = more failure" story but not ruling out hook-presence as a trigger.)
  5. Konsole-specific check — reproducibility under other terminals (xterm, alacritty, gnome-terminal, kitty) would localize whether the failure is in cct's escape-sequence emission or in Konsole's handling of it. Reporter has not tested other terminals; can produce captures on request.

Reporter context

Hub-coordinated diagnostic work across a multi-project homelab structure with cross-project agent memory and hook architecture. The cluster has been visible across multiple project-memory entries; Incidents A and B are the first two to produce structural evidence (storage/display asymmetry verifiable at the transcript level) that earlier user-reported instances lacked. Two separate cct projects (hub and hlmain) and two separate CCC versions (2.1.144 and 2.1.145) cover the defect, ruling out single-project hook configuration as the cause.

The reporter can produce additional diagnostic capture on request: ANSI raw output via script-wrapped session, reproducibility-mapping across more turn transitions, hook-disable A/B testing, terminal-portability tests.

Submission status

DRAFT — pending reporter review + submission. Submission destination TBD: GitHub issue at anthropic-related repo, in-app feedback, or other channel per reporter's preference.

What Should Happen?

The dialog content in the jsonl should be produced in the context window..

Error Messages/Logs

None.

Steps to Reproduce

Both incidents are persistent in their respective scrollbacks — re-opening the affected region in either session shows the same omission, not a transient flicker. The defect survived the CCC 2.1.144 → 2.1.145 version bump and was observed in two different cct projects, ruling out per-project hook configuration as the cause.

Broader reproducibility (rate per turn transition, sensitivity to terminal choice, sensitivity to hook presence) is not yet characterized. The reporter can produce additional captures: ANSI raw output via script-wrapped session, A/B testing with hooks disabled, terminal-portability tests against xterm/alacritty/gnome-terminal.

Claude Model

Opus

Is this a regression?

Yes, this worked in a previous version

Last Working Version

Versions prior to the most recent two.

Claude Code Version

Version: 2.1.149

Platform

Anthropic API

Operating System

Ubuntu/Debian Linux

Terminal/Shell

Other

Additional Information

KDE 5.27 is the DE. Terminal: Konsole 4:23.08.5-0ubuntu4

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

claude-code - 💡(How to fix) Fix [BUG] turn-transition render omission — content recorded in .jsonl but absent from scrollback (2 incidents across 2 versions)