Memory and conversation boundaries
The two-line-per-turn contract
A conversation's persisted history contains exactly the user's message and the final answer for each turn. It never includes the internal handoffs, tool calls, or correction nudges that happened along the way, no matter how many of those occurred internally to produce that answer.
- If a run is canceled before it produces any output at all, nothing is recorded for that turn — you will never see an orphaned user message with no matching answer.
Ephemeral runs
A run can optionally be marked ephemeral, in which case the same two-line-per-turn shape is kept but should be treated as short-lived rather than long-term memory.
(Note: This guarantee governs what the runtime returns as the logical session history; the host application's storage retention policies govern when that data is actually deleted.)
Authoring implications
Don't design a sub-agent expecting to see another sub-agent's internal reasoning or tool output in the conversation history — pass anything the next turn needs to know through the actual conversation content instead.
Common Pitfall: Expecting the session history to explain WHY an answer looks the way it does. Pair it with the execution routing timeline for the internal "how we got there" detail.