Found by review B of #1354 (Codex 0.157.1 acceptance). Pre-existing: the custom-call form dominates older versions too.
Actual
src/main/agentTranscripts/AgentTranscriptReader.ts (extractCodexResponseItem, around line 841) handles only function_call and function_call_output. A Codex response_item with payload.type: "custom_tool_call", name: "exec" (and its custom_tool_call_output) is skipped. So read_agent_transcript omits the shell command from timeline and shell_commands, giving an incomplete account of what a Codex agent did.
Evidence
- 0.157.0/0.157.1 corpus: 10,247 custom calls and 10,241 custom outputs, against 691 function calls and outputs.
- A 0.157.1-shaped rollout test expecting the shell command in the timeline failed.
- The renderer already handles custom calls (
src/providers/codex/renderer/transcript/rollout.ts:403).
- The existing reader fixture (
AgentTranscriptReader.system.test.ts:58) uses only the older function_call shape.
Fix direction
Handle custom_tool_call / custom_tool_call_output as the renderer does, and pin it with a recorded 0.157 rollout slice.
Found by review B of #1354 (Codex 0.157.1 acceptance). Pre-existing: the custom-call form dominates older versions too.
Actual
src/main/agentTranscripts/AgentTranscriptReader.ts(extractCodexResponseItem, around line 841) handles onlyfunction_callandfunction_call_output. A Codexresponse_itemwithpayload.type: "custom_tool_call",name: "exec"(and itscustom_tool_call_output) is skipped. Soread_agent_transcriptomits the shell command fromtimelineandshell_commands, giving an incomplete account of what a Codex agent did.Evidence
src/providers/codex/renderer/transcript/rollout.ts:403).AgentTranscriptReader.system.test.ts:58) uses only the olderfunction_callshape.Fix direction
Handle
custom_tool_call/custom_tool_call_outputas the renderer does, and pin it with a recorded 0.157 rollout slice.