Summary
Users can see Copilot CLI sessions on the Entire dashboard, and the session logs/files/checkpoints are present, but the session detail view may show:
No transcript messages to display.
In other cases, the session is only partially visible: tool calls or later turns appear, but the actual conversational text is missing or truncated.
This happens because some Copilot transcripts contain empty data.content fields for both user.message and assistant.message, while the real displayable text lives in fallback fields:
user.message.data.transformedContent
assistant.message.data.reasoningText
Impact
Copilot sessions are detected and checkpointed correctly, but the most important session details are missing from the UI. That makes the session look broken, blank, or incomplete even though the agent did real work.
Observed behavior
- Session shows up in the sessions tab
- Files/logs/checkpoints are present
- Session detail page has no displayable user/assistant messages, or only a partial transcript
- Empty-state text says the parser did not extract any displayable messages
- In some cases the stored/compacted transcript contains tool calls and file activity, but no displayable conversational text
Expected behavior
Entire should extract displayable transcript content for Copilot CLI sessions even when content is empty, using:
transformedContent for user prompts
reasoningText for assistant text
It should also remove Copilot wrapper noise like:
<current_datetime>...</current_datetime>
<reminder>...</reminder>
Likely root cause
Copilot CLI emits transcript events where:
user.message.data.content == ""
assistant.message.data.content == ""
The current transcript extraction path assumes content is populated, so those events are treated as empty and dropped. As a result, the compacted/stored transcript may only contain tool calls and no displayable conversational text.
There may also be a recovery gap for already-stored bad Copilot transcripts: if stale cached payloads already exist, fixing the parser alone may only help newly generated sessions unless old data is reprocessed or rehydrated.
Suggested fix
In the Copilot transcript handling path:
Areas to update
cmd/entire/cli/agent/copilotcli/transcript.go
cmd/entire/cli/transcript/compact/copilot.go
If server-side recovery is needed too:
api/src/lib/transcript-parsers/copilot-cli-parser.ts
api/src/lib/session-transcript.ts
api/src/routes/cache.ts
Suggested tests
Add coverage for:
user.message with empty content but populated transformedContent
assistant.message with empty content but populated reasoningText
- stripping of
<current_datetime> and <reminder> blocks
- compacted transcript output includes displayable text instead of only tool calls
- already-stored stale Copilot transcripts can be recovered
- partially stale multi-checkpoint Copilot sessions recover instead of remaining truncated
Nice-to-have follow-up
If applicable on the server side, add fallback handling or transcript reprocessing for already-uploaded Copilot sessions so existing empty or incomplete sessions recover, not just newly generated ones.
Summary
Users can see Copilot CLI sessions on the Entire dashboard, and the session logs/files/checkpoints are present, but the session detail view may show:
No transcript messages to display.In other cases, the session is only partially visible: tool calls or later turns appear, but the actual conversational text is missing or truncated.
This happens because some Copilot transcripts contain empty
data.contentfields for bothuser.messageandassistant.message, while the real displayable text lives in fallback fields:user.message.data.transformedContentassistant.message.data.reasoningTextImpact
Copilot sessions are detected and checkpointed correctly, but the most important session details are missing from the UI. That makes the session look broken, blank, or incomplete even though the agent did real work.
Observed behavior
Expected behavior
Entire should extract displayable transcript content for Copilot CLI sessions even when
contentis empty, using:transformedContentfor user promptsreasoningTextfor assistant textIt should also remove Copilot wrapper noise like:
<current_datetime>...</current_datetime><reminder>...</reminder>Likely root cause
Copilot CLI emits transcript events where:
user.message.data.content == ""assistant.message.data.content == ""The current transcript extraction path assumes
contentis populated, so those events are treated as empty and dropped. As a result, the compacted/stored transcript may only contain tool calls and no displayable conversational text.There may also be a recovery gap for already-stored bad Copilot transcripts: if stale cached payloads already exist, fixing the parser alone may only help newly generated sessions unless old data is reprocessed or rehydrated.
Suggested fix
In the Copilot transcript handling path:
For prompt extraction:
data.contenttodata.transformedContent<current_datetime>and<reminder>blocks before storing/displayingFor assistant summary / compact transcript generation:
data.contenttodata.reasoningTextFor recovery of existing broken sessions:
Areas to update
cmd/entire/cli/agent/copilotcli/transcript.gocmd/entire/cli/transcript/compact/copilot.goIf server-side recovery is needed too:
api/src/lib/transcript-parsers/copilot-cli-parser.tsapi/src/lib/session-transcript.tsapi/src/routes/cache.tsSuggested tests
Add coverage for:
user.messagewith emptycontentbut populatedtransformedContentassistant.messagewith emptycontentbut populatedreasoningText<current_datetime>and<reminder>blocksNice-to-have follow-up
If applicable on the server side, add fallback handling or transcript reprocessing for already-uploaded Copilot sessions so existing empty or incomplete sessions recover, not just newly generated ones.