Group of 3 Under the hood
No documentation found
Session resume now tracks and fabricates results for tool calls left hanging by an interruption, via a new answeredToolUseIds field
What
- A new function synthesizes fabricated
tool_resultblocks (marked withtoolDenialKind: "interrupted") for tool_use calls that were left unresolved when a session was interrupted, tracked via a newoutTrailingUnresolvedToolUseIdsset. These are surfaced through a newansweredToolUseIdsfield returned from the resume-message-building pipeline and threaded through to the headless runner. - Session state serialization now carries this
answeredToolUseIdsfield alongside the existingsupersededToolUseIds/supersededToolNamesfields in several places. - When resuming after an interrupted turn, every id in
answeredToolUseIdsis now also added to the set of tool-use ids treated as already-answered, so they won't be re-prompted (previously only ids from the resumed-turn tool list and a currently-parked permission were included).
Why
Without this, resuming a session after an interruption could leave tool calls dangling with no result, or could re-prompt for permissions that were already effectively resolved. Tracking answeredToolUseIds end to end keeps resumed conversations consistent with what actually happened before the interruption.
Names in the bundleansweredToolUseIds
Something disagreesSomething we can check disagrees with this entry, or the writer said they could not settle it.
The writer flagged doubt
What functionality reads or depends on answeredToolUseIds is not stated.