One Button, One Archive
The four sources of truth are all readable on their own — but when a conversation goes wrong and you want someone else to look at it, collecting the right files by hand is the tedious part. Which log, which task file, which prompt snapshot, and which of them actually belong to the conversation that broke. The diagnostic export does that collection for you. One press gathers everything relevant to one conversation — and nothing about any other — into a single zip you can forward as-is.The export only ever reads. The one thing it writes is the archive itself. It is safe to run on a conversation that is still streaming.
Running It
The export lives on the History page. Since v1.0.236 the bug icon has left the chat’s button row, which had grown a button per feature: every row on History carries its own bug button, including the row for the conversation you currently have open. One home, one button, and no ambiguity about which conversation a press belongs to. A row’s button rests only when there is nothing yet to collect — a conversation whose very first turn is still running has no saved transcript. A conversation that exists but hasn’t reached the index yet says “Not indexed yet” rather than going quietly dead on the click. You can also start one from your phone: the mobile app collects the same bundle, shows the same step-by-step progress, and hands the finished archive to the system share sheet. An overlay takes over while collection runs, showing each stage as it completes and a running file count. It takes a few seconds. When it finishes you get a card listing what went in, with two actions:- Reveal — opens the archive in your file manager
- Save a copy — writes a duplicate anywhere you like
What Goes In
The archive is organized into numbered folders so the reading order is obvious:
The corpus slice in
02_logs is the useful one: it is every logged event whose turn scope names this conversation, in order, with the surrounding noise of everything else the machine was doing stripped out.
What Stays Out
Two exclusions are deliberate, and both exist so the bundle is safe to hand to someone else:- Credentials are redacted. Every credential-shaped value in
config.jsonis replaced by a length marker —[redacted — 51 chars]— never the value. The redaction is keyed on the name, so a key added to the config later is redacted the day it arrives as long as it is named like one. Ifconfig.jsoncan’t be parsed, it is omitted entirely rather than shipped unredacted. - Attachment media is listed, not included. A 200 MB video in the conversation contributes a manifest row, not 200 MB of archive.
The Model’s Opinion
When the export runs on a cloud model, it also makes one side-call: it hands the conversation material to the model and asks what it thinks went wrong, then drops that answer into08_analysis/model-opinion.md.
This is a lean one-shot call — no tools, no streaming, no conversation created — and it is billed like the other utility side-calls (titling, summarization) against your configured Brain.
It is skipped, with the reason recorded on the result card, when:
The call is also on a clock: it gives up after ninety seconds, so a stalled provider costs the bundle this one section — never the whole export.
The opinion is the model’s unverified first read, not a verdict. The
00_README.md inside the archive says so too — it is a starting point for whoever opens the bundle, not a diagnosis.Collection Is Best-Effort
Every collector is best-effort by design: a missing or unreadable source produces a warning, never a failed export. The warnings are listed both on the result card and in the archive’s00_README.md, so the person reading the bundle knows what wasn’t there rather than wondering.
The most common one is benign: corpus logs are kept for 7 days, so exporting an older conversation will report that no event log survives for it. The transcript, tasks and context are still there.