Pattern
Async continuation for long-running agent flows
Agent flows that cannot answer within the synchronous 100-second limit, including every flow that waits for a human.
Last reviewed 8 July 2026
The pattern
Split the agent flow at the "Respond to the agent" action: fast work before it, long work after it.
When the long work finishes, call the agent back with the "Execute Agent" action from the Copilot Studio connector.
That callback is a new, independent invocation — not a continuation of the original session.
Pass System.Conversation.Id into the flow and return it in the callback.
The agent can then correlate the new session with the original conversation.
Extend the agent's instructions to handle both the initial call and the later callback.
When to use it
- The flow runs longer than the 100-second synchronous limit.
- A person is in the loop: approvals and "Request information from humans" pause the flow. Such steps can never answer synchronously.
- An autonomous scenario needs to report a result back into a conversation.
Steps
- Add an input for the conversation ID to your agent flow.
- In the calling topic or tool configuration, pass
System.Conversation.Idinto that input. - Place "Respond to the agent" directly after the fast part of the flow.
- Move all long-running actions, such as waits and approvals, behind "Respond to the agent".
- At the end of the flow, add the "Execute Agent" action from the Copilot Studio connector.
- Pass the stored conversation ID back as an input of that callback.
- Extend the agent's instructions to handle the initial call and the asynchronous callback.
- Test the full round trip in a published channel.