Skip to main content
In this article, you deploy a long-running hosted agent that supports steering: when a second turn arrives on the same conversation while the first turn is still running, the platform queues the new turn and cooperatively cancels the current one instead of rejecting it with 409 conversation_locked. The sample is a Responses protocol agent that turns on resilience and steering with two options. It uses a simulated model stream, so you can run it without model credentials.
Long-running agents are in preview. APIs and package versions are subject to change.

Prerequisites

Get the sample

In an empty directory, initialize the resilient steering agent from its azure.yaml manifest:
The command downloads the sample source, adopts its azure.yaml, creates an azd environment, and connects it to the Foundry project you select. The agent enables resilience and steering when it constructs the host:
By using steerable_conversations=True, a second turn on a busy conversation is queued and the running handler is cooperatively cancelled, rather than returning 409 conversation_locked.

Provision and deploy

Provision the project and deploy the agent. When prompted for a location, choose a region that supports hosted agents.
azd up prints the Responses endpoint and a playground link.

Steer the deployed agent

Steering needs stored background responses (store: true and background: true), so send each turn’s body from a file. Create the first turn’s request file:
Start the response in a new session. The command returns while the response is still running and saves the hosted session and conversation for the next invocation:
Create the second turn’s request file:
Immediately send the new instruction. azd reuses the saved session and conversation, so the new turn steers the response that’s already in progress:
The first turn observes the queued input and winds down at its next safe point. The queued turn then runs to completion. Stream the session logs to watch the handoff:

Clean up