Try exposing your existing agent to Copilot Studio as a Flow Tool rather than directly through "Connect Agent2Agent." The Flow is an intermediary that handles the asynchronous portion using Power Automate's asynchronous response capability.
The resulting architecture would be like this:
Copilot Studio Orchestrator
|
| invokes Agent Flow
v
Power Automate Agent Flow
|
| HTTP POST: message:send
v
Your Async A2A Agent
|
| returns immediately
|
| processes task
|
| HTTP POST webhook
v
Power Automate callback/wait
|
| task COMPLETED
v
Respond to the agent
|
v
Copilot Studio Orchestrator
First, create an Agent Flow in the Copilot Studio orchestrator. Use the "When an agent calls the flow" trigger and expose the information your agent needs, such as the user's message, conversation/task information, and a transaction or correlation ID.
Then add an HTTP action that calls your existing A2A message:send endpoint. The important difference from a normal synchronous A2A invocation is that the request should populate configuration.taskPushNotificationConfig.url with a callback endpoint that the flow can receive. Your A2A service continues to process the task asynchronously and returns its initial response immediately.
Next, configure the flow's "Respond to the agent" action for an asynchronous response. In the action's settings, enable "Asynchronous response." This is what allows the agent flow to remain pending rather than requiring the A2A operation to finish within the normal synchronous execution window.
The flow then waits for the webhook notification. Your agent should POST the task notification to the callback endpoint when the relevant state transition occurs. WORKING simply means the task is still being processed. When the task reaches COMPLETED, the callback contains the result that the flow needs to return to Copilot Studio.
INPUT_REQUIRED needs additional consideration because it represents a conversational interruption rather than a completed tool call. The flow needs to preserve the A2A task/context or correlation ID, return the appropriate request for additional information to Copilot Studio, and then use the user's subsequent input to resume the underlying A2A task. If your agent can make each Flow invocation atomic, this is much simpler. For a genuinely multi-turn A2A agent, the flow needs persistent correlation/state handling so the follow-up is associated with the original task.
Note that Power Automate is not acting as an A2A protocol replacement. It is acting as the asynchronous bridge between Copilot Studio's agent/tool invocation model and your webhook-driven A2A implementation.
This gives you a repeatable pattern:
Copilot Studio
-> Agent Flow
-> HTTP message:send
-> wait for webhook
-> receive COMPLETED
-> Respond to the agent
-> Copilot Studio
This also avoids having to build and operate a separate custom proxy service whose primary purpose would be to maintain task state and translate between the two interaction models. The flow can be packaged as part of a Solution, making the pattern reusable across customer environments (subject to the customer's Power Platform connection, authentication, DLP, and environment configuration).
If the above response helps answer your question, remember to "Accept Answer" so that others in the community facing similar issues can easily find the solution. Your contribution is highly appreciated.
hth
Marcin