[Bug] 2.1.227: interactive sessions never write transcript JSONL (headless -p unaffected); regression boundary measured from 2.1.226
[Bug] 2.1.227: interactive sessions never write transcript JSONL (headless -p unaffected); regression boundary measured from 2.1.226
Environment
- Claude Code 2.1.227, native Windows install (
~/.local/bin/claude.exe) - Windows 11 Home 10.0.26200, sessions launched in Windows Terminal via
pwsh CLAUDE_CONFIG_DIRset to the default path (C:\Users\<user>\.claude) — see matrix below; unsetting it does not change the resultautoUpdatesChannelenabled — 2.1.227 arrived via auto-update mid-day, giving a clean before/after boundary on one machine
Summary
After auto-updating 2.1.226 → 2.1.227, no interactive session writes a conversation transcript .jsonl under ~/.claude/projects/<project>/. Headless claude -p sessions on the same binary, same machine, same environment still write transcripts normally within a minute. On 2.1.226 the same interactive setup wrote transcripts live and incrementally (files created within seconds of session start).
Measured boundary
| timestamp (local) | event |
|---|---|
| 06:27:55 | last write by a 2.1.226 session — a 70-turn interactive session (4a604afb…) that had been appending continuously for 10 hours |
| ~06:30 | auto-update to 2.1.227 |
| 06:48:11 | first 2.1.227 transcript — a headless -p worker |
Across all 70 transcripts in the project folder: versions 2.1.181→2.1.226 include interactive sessions up to 297 user turns; the only 2.1.227 files are headless -p workers (max 2 turns).
Probe matrix (all on 2.1.227, same machine, same project dir)
| mode | model | transcript written? |
|---|---|---|
| headless -p | claude-opus-5 | YES — within ~1 min (2 independent workers) |
| headless -p | claude-fable-5 | NO — nothing after several minutes |
| interactive (seeded prompt, tool use executed) | claude-opus-5 | NO — nothing after 150s+ of live polling |
| interactive (seeded prompt) with CLAUDE_CONFIG_DIR unset | claude-opus-5 | NO — nothing after 150s of live polling |
| interactive (3 independent real sessions, incl. 40+ min heavy tool use) | mixed | NO — no file for the session id ever appears |
Notes:
- Interactive probes are live-write measurements (2.1.226 created the file within seconds of session start, so absence minutes into an active session is the signal). Flush-at-clean-exit was not isolated for interactive; however the headless Fable run exits cleanly and still writes nothing.
- The new per-session directories
~/.claude/projects/<project>/<session_id>/ARE created and receivesubagents/*.meta.json— only the conversation.jsonlis missing. - Ruled out locally: settings changes (only delta is an unrelated
Stophook), relocated files (nothing else under~/.claudewritten in the window), lazy flushing (see 10-hour incremental writer above).
Related issues (searched before filing)
- #78159 — Fable-5 sessions stop writing transcripts since ~2.1.209 while Opus writes: consistent with our headless-Fable row, but does NOT explain the interactive-Opus failure, which is new in 2.1.227.
- #78843 — custom
CLAUDE_CONFIG_DIR→ no interactive transcript since 2.1.207: ourCLAUDE_CONFIG_DIRpoints at the default location and was constant across the 2.1.226→2.1.227 boundary (2.1.226 interactive wrote fine with it set). - #80683 — HOME/USERPROFILE redirection on Windows: not redirected here.
Impact
Interactive sessions leave no local conversation record; tooling that tails or post-processes transcripts (session correlation, progress dashboards, --resume forensics) has nothing to read.