Confirm the durable loop.
01Tool call streamsIts inner arguments JSON ends mid-string or before a closing delimiter.
02Provider returns 400Unterminated string or another JSON parse diagnostic.
03Same Session repeatsEvery later message rebuilds and resends the stored call.
04Fresh Session worksThe account, route, and workspace are no longer the leading suspects.
Recover without rewriting history.
- CancelStop the active turn and prove provider usage stops.
- ExportChoose Session log; keep the downloaded ZIP unchanged.
- Restart cleanCreate a new conversation and carry over only minimal task context.
- Prove isolationRun one bounded read-only prompt before restoring tools.
- ArchiveKeep the old Session for diagnosis, not normal use.
Separate the physical and logical files.
session.jsonl.zstdChecksummed Zstandard frames. One live writer. Do not edit or replace in place.
session.jsonlLogical decoded rows inside the export ZIP. Inspect a copy, read-only.
The outer JSON can still be valid.
{"type":"tool/call","seq":42,
"data":{"name":"read",
"arguments":"{\"file_path\":\"C:\\\\work\\\\file.ts"}}
Parse the event row first, then parse event.data.arguments separately. The malformed value is the JSON string inside the valid event envelope.
Do not turn diagnosis into corruption.
Compression, checksums, identity, and sequence continuity are enforced.
{}The original call may already have reached scheduling. Verify external effects.
The same durable value remains in reconstructed history.
Primary evidence.
- Upstream incident report #3234
- Block assembly at the verified commit
- Argument parsing and durable tool-call append
- JSONL/Zstandard persistence behavior
Keep the full incident runbook.
The canonical guide includes the complete source chain, a read-only detector, unsafe-repair warnings, and a minimal report template.
Read and star on GitHub