[BUG] 2.1.234/2.1.235: interactive sessions in fullscreen TUI write no transcript JSONL at all (headless -p and non-fullscreen pty still do) — 2.1.233 fine

Status Open
Reported on v2.1.233
Maintainer reply None cached
Activity 1 comment · opened Aug 19, 2026

Summary

After the 2.1.233 → 2.1.234 auto-update, real interactive sessions (fullscreen TUI) stopped writing session transcript JSONL entirely — no file under ~/.claude/projects/<project>/ is created, not during the session and not at exit. Session history registration and ~/.claude/history.jsonl entries for the project are also absent. The conversation itself works normally (2h16m of real work in the affected session, slash commands included). 2.1.235 did not fix it. Rolling back to 2.1.233 restored transcript persistence.

Environment

  • Claude Code CLI: 2.1.234 (auto-updated), 2.1.235 (manually tested), 2.1.233 (current, working)
  • Oracle Linux 9, x86_64, native terminal (Alacritty + tmux), "tui": "fullscreen" in global settings
  • No custom CLAUDE_CONFIG_DIR

Timeline (local, UTC+3)

| When | Event | Evidence |
|---|---|---|
| ≤ Aug 18 16:38 | Last transcript written (healthy rate: 7–78 transcripts/day through Aug 17) | ~/.claude/projects/<proj>/ mtimes |
| Aug 18 19:05 | Unrelated local config change: a broken apiKeyHelper (exit 127, missing binary) appeared in global ~/.claude/settings.json | settings.json mtime + content |
| Aug 18 21:54:07 | Interactive session cd1e32b5 starts | session-env, task registry, tracer trace |
| Aug 18 21:54:13 | CLI auto-update 2.1.233 → 2.1.234 | .last-update-result.json |
| 21:54–00:10 | Session runs 2h16m of real work (/scp /save /exit) — no transcript file, no history entry, nothing in .claude.json | filesystem-wide search for the session UUID |
| Aug 19 | A second session on a worktree project: same — registers nowhere, no transcript | .claude.json, projects dir |
| Aug 19 10:49–10:51 | Bounding probes on 2.1.234: headless claude -p AND a pty-driven interactive session both DO write transcripts | probe files ae3d497e, f7bcf63d |
| Aug 19 11:50 | Rollback to 2.1.233 + autoUpdates: false | settings.json |
| Aug 19 13:xx | Fullscreen-TUI interactive session on 2.1.233 writes a healthy transcript with real usage lines | new JSONL with real usage |

The bounding probes (why this looks TUI/auth-conditioned)

On 2.1.234, claude -p and a pty-driven interactive session both persisted normally — transcript writing was not blanket-broken. What the affected real sessions had and the probes lacked: the fullscreen TUI ("tui": "fullscreen") and real-terminal conditions. The 2.1.234 changelog's transcript-adjacent change is the per-project transcript-directory rework (CLAUDE_CODE_PROJECT_DIR_NAME), alongside fullscreen-renderer fixes on the same path.

Confound disclosed for completeness

The broken apiKeyHelper (2h49m before the update) failed auth with exit 127 at session start; Claude Code surfaced "Your apiKeyHelper script is failing · re-authenticate" and fell back to working auth (probes with the helper still present did persist transcripts, and affected sessions did real authenticated work for hours). We consider the helper unlikely to be the cause, but it was present in the failure window and is noted for reproducibility. After stripping the helper AND rolling back, persistence is fully restored (real usage lines in interactive transcripts again).

Possibly related: #76267 (persistence silently stopping after deauth-like state) — different observable (their file exists and stops growing; ours is never created), possibly shared machinery.

Workaround

Pin 2.1.233 with autoUpdates: false until fixed. Happy to run instrumented probes on 2.1.235+ if it helps.

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗