Gemini Run Live multi-agent mode doesn’t sync chat history across agents

Hello everyone, I’m using the Gemini Run Live API to build a multi-agent app, but I’m running into an issue. When control is handed off to another agent, that agent doesn’t receive the message that triggered the transfer, and it also doesn’t retain the full chat history.

You can see what I mean in the image below.

In the first image, when I asked for the current time, control was passed to the time agent, but it didn’t respond immediately. The same thing happened when control was passed to the search agent.

Later, when I asked the search agent what the first message I sent was, it replied “Hello there”, which is incorrect. The actual first message I sent was “hello”, and “Hello there” was the root agent’s reply.

I think this highlights the problem more clearly: the agents are not sharing a synchronized conversation state, and they also don’t seem to receive the message that triggered the handoff.

Does anyone know how to properly sync chat history across agents and ensure that agents respond immediately when control is passed to them?

Below is a snippet of my agent definitions and the Run Live API initialization.

###Agents

from google.adk.agents.llm_agent import Agent
from google.adk.tools import google_search
import time

def get_current_time(city: str) → dict[str, str]:
“”“Returns the current time in a specified city.”“”
current_time = time.strftime(“%I:%M %p”, time.gmtime())
return {
“status”: “success”,
“city”: city,
“time”: current_time
}

search_agent = Agent(
model=“gemini-2.5-flash-native-audio-preview-09-2025”,
name=“search_agent”,
description=“Searches for information using Google Search.”,
instruction=“You are a helpful assistant that uses the ‘google_search’ tool to find information on the web.”,
tools=[google_search],
output_key=“search-agent”
)

time_agent = Agent(
model=“gemini-2.5-flash-native-audio-preview-09-2025”,
name=“time_agent”,
description=“Tells the current time in a specified city.”,
instruction=“You are a helpful assistant that tells the current time in cities. Use the ‘get_current_time’ tool for this purpose.”,
tools=[get_current_time],
output_key=“weather-agent”
)

root_agent = Agent(
model=“gemini-2.5-flash-native-audio-preview-09-2025”,
name=“root_agent”,
description=“Root agent that delegates tasks to sub-agents for searching information and telling the current time.”,
instruction=“You are the root agent. Delegate tasks to your sub-agents based on user requests.”,
sub_agents=[search_agent, time_agent],
output_key=“root-agent”
)

run config and run live

if is_native_audio:

# Native audio models require AUDIO response modality

# with audio transcription

response_modalities = [“AUDIO”]

run_config = RunConfig(

streaming_mode=StreamingMode.BIDI,

response_modalities=response_modalities,

input_audio_transcription=types.AudioTranscriptionConfig(),

output_audio_transcription=types.AudioTranscriptionConfig(),

session_resumption=types.SessionResumptionConfig(),

)

async for event in runner.run_live(

user_id=user_id,

session_id=session_id,

live_request_queue=live_request_queue,

run_config=run_config,

):

event_json = event.model_dump_json(exclude_none=True, by_alias=True)