The query loop previously handled two resume paths, resuming an orphaned permission request and resuming a tool deferred by a hook, as separate inline blocks each building their own early result. Both now delegate to a single shared generator that takes both candidates plus an earlyResult descriptor, so the availability check and result shaping (including the "tool_deferred" and "tool_deferred_unavailable" stop reasons) live in one place instead of two.
Orphaned permission and deferred tool resume moved into one shared generator
Orphaned-permission and deferred-tool resume logic in the query loop were merged into one shared generator
Under the hoodTier: how much it should matter to you
1Useful: my rating, 1 to 5
0Signal: worth watching, 1 to 5
PermissionsArea: what it touches
Internal ChangesKind: in v2.1.235,
Internal ChangesSection of the release