Subject: Handling in-flight user speech during multi-agent handoff in AgentSession
Hi LiveKit team,
I’m implementing multi-agent workflows using AgentSession and handoffs (based on:
https://docs.livekit.io/agents/logic/agents-handoffs/).
I’m running into an issue with in-flight user speech during agent handoff and wanted to understand the recommended pattern.
### Scenario
- Agent1 is actively listening to the user (streaming STT).
- Mid-conversation, Agent1 decides to hand off control to Agent2.
- During the transition, the user is still speaking (partial utterance, not yet finalized).
- When Agent2 takes control, that incomplete / in-flight speech is lost and never reaches Agent2.
### Problem
Because the pipeline is streaming (audio → STT → turn detection → agent), it seems the partially processed speech is tied to Agent1’s context and does not get transferred.
This leads to:
- Lost user input
- Broken conversational continuity
- Poor UX during transfers
### Question
What is the recommended way to ensure that Agent2 receives the in-progress user speech when a handoff occurs?
Specifically:
1. Is there a built-in mechanism to buffer or transfer partial transcripts between agents?
2. Should we be implementing a shared transcript/state layer outside the agent (e.g., via context or custom RoomIO)?
3. Is the correct approach to delay handoff until turn completion (via turn detection), or is there a way to safely hand off mid-utterance?
4. Are there hooks in the pipeline (STT stream / transcription events) that we can use to replay or forward partial speech to the next agent?
### Goal
We want seamless handoffs where the user can continue speaking naturally without needing to repeat themselves, even if the agent switches mid-sentence.
Any guidance or recommended architecture patterns would be greatly appreciated.
Thanks!