[Live] Transcription History is not sent in agent transfer with ADK 1.19.0
** Please make sure you read the contribution guide and file the issues in the right place. ** Contribution guide.
Describe the bug In a multiagent architecture, I said “my name is Simon” to the root agent, then after an agent transfer I asked “what is my name?” and the model did not know.
Looking at the logs, I can see:
2025-11-27 13:43:03,601 DEBUG - google_adk.google.adk.flows.llm_flows.base_llm_flow - base_llm_flow.py:157 - Receive new event: model_version=None content=None grounding_metadata=None partial=True turn_complete=None finish_reason=None error_code=None error_message=None interrupted=None custom_metadata=None usage_metadata=None live_session_resumption_update=None input_transcription=Transcription(
finished=False,
text=' Hello, my name is Simon.'
) output_transcription=None avg_logprobs=None logprobs_result=None cache_metadata=None citation_metadata=None invocation_id='e-f748ad23-3d4c-43f1-936d-a36df66975eb' author='greeter' actions=EventActions(skip_summarization=None, state_delta={}, artifact_delta={}, transfer_to_agent=None, escalate=None, requested_auth_configs={}, requested_tool_confirmations={}, compaction=None, end_of_agent=None, agent_state=None, rewind_before_invocation_id=None) long_running_tool_ids=None branch=None id='bdb2ce64-75be-472c-97dc-f943834ad07f' timestamp=1764250983.60153
[...]
2025-11-27 13:43:17,522 DEBUG - google_adk.google.adk.flows.llm_flows.base_llm_flow - base_llm_flow.py:105 - Establishing live connection for agent: intent_selector_kb with llm request: model='gemini-live-2.5-flash-preview' contents=[Content(
parts=[
Part(
text='For context:'
),
Part(
text="[greeter] called tool `set_user_language` with parameters: {'language': 'English'}"
),
],
role='user'
), Content(
parts=[
Part(
text='For context:'
),
Part(
text="[greeter] `set_user_language` tool returned result: {'status': 'language_set'}"
),
],
role='user'
), Content(
parts=[
Part(
text='For context:'
),
Part(
text="[greeter] called tool `transfer_to_agent` with parameters: {'agent_name': 'intent_selector_kb'}"
),
],
role='user'
), Content(
parts=[
Part(
text='For context:'
),
Part(
text="[greeter] `transfer_to_agent` tool returned result: {'result': None}"
),
],
role='user'
)] config=GenerateContentConfig(
system_instruction="""[...]
""",
tools=[
Tool(
function_declarations=[
FunctionDeclaration(
description="""Transfer the question to another agent.
This tool hands off control to another agent when it's more suitable to
answer the user's question according to the agent's description.
Args:
agent_name: the agent name to transfer to.
""",
name='transfer_to_agent',
parameters=Schema(
properties={<... 1 item at Max depth ...>},
required=[<... 1 item at Max depth ...>],
type=<Type.OBJECT: 'OBJECT'>
)
),
FunctionDeclaration(
description="...",
name='kb_agent',
parameters=Schema(
properties={<... 1 item at Max depth ...>},
required=[<... 1 item at Max depth ...>],
type=<Type.OBJECT: 'OBJECT'>
)
),
FunctionDeclaration(
description="""...""",
name='scratchpad',
parameters=Schema(
properties={<... 1 item at Max depth ...>},
required=[<... 1 item at Max depth ...>],
type=<Type.OBJECT: 'OBJECT'>
)
),
]
),
]
) live_connect_config=LiveConnectConfig(
input_audio_transcription=AudioTranscriptionConfig(),
output_audio_transcription=AudioTranscriptionConfig(),
response_modalities=[
'AUDIO',
],
speech_config=SpeechConfig(
voice_config=VoiceConfig(
prebuilt_voice_config=PrebuiltVoiceConfig(
voice_name='zephyr'
)
)
)
) tools_dict={'transfer_to_agent': <google.adk.tools.function_tool.FunctionTool object at 0x74949c9f9a10>, 'kb_agent': <google.adk.tools.agent_tool.AgentTool object at 0x74949dcc9450>, 'scratchpad': <google.adk.tools.function_tool.FunctionTool object at 0x74949c9fa5d0>} cache_config=None cache_metadata=None cacheable_contents_token_count=None
Note: the logs above are from another App where i have a cleaner logger. The behaviour is the same.
To Reproduce Please share a minimal code and data to reproduce your problem. Steps to reproduce the behavior:
- clone
adk-samples - go to
adk-samples/python/agents/bidi-demo - replace agent.py with:
import os
from google.adk.agents import Agent
say_name = Agent(
name="say_name_agent",
model=os.getenv(
"DEMO_AGENT_MODEL",
"gemini-2.5-flash-native-audio-preview-09-2025",
),
instruction="You are a helpful assistant that says the name of the person you are talking to.",
)
# Default models for Live API with native audio support:
# - Gemini Live API: gemini-2.5-flash-native-audio-preview-09-2025
# - Vertex AI Live API: gemini-live-2.5-flash-preview-native-audio-09-2025
agent = Agent(
name="get_name_agent",
model=os.getenv(
"DEMO_AGENT_MODEL",
"gemini-2.5-flash-native-audio-preview-09-2025",
),
sub_agents=[say_name],
instruction="You are a helpful assistant that asks what is the name of the person you are talking to.",
)
- pin ADK to the 1.19.0 version in the pyproject
- create the venv, install the dependencies
- talk with the agent, saying your name and then asking your name back. The agent will say that it does not know.
Expected behavior The transcriptions are passed to the new agent as context after an agent transfer.
Screenshots N/A
Desktop (please complete the following information):
- OS: linux
- Python version(python -V): 3.13.8
- ADK version(pip show google-adk): 1.19.0
Model Information:
- Are you using LiteLLM: No
- Which model is being used: model independent, tested with
gemini-2.5-flash-native-audio-preview-09-2025andgemini-live-2.5-flash-preview.
Additional context With ADK 1.18.0 the transcriptions are passed in the agent transfers. This bug appears to have been introduced between ADK versions 1.18 and 1.19.
@simone-viozzi This is a known issue in v1.19.0 where transcription fields weren't properly stored/retrieved from session events during agent transfers.
The fix was committed on Nov 19 (commit 3ad30a58) which adds input_transcription and output_transcription fields to session storage.
You can test with the latest main branch (pip install git+https://github.com/google/adk-python.git@main) or wait for v1.20.0 release.
This should restore the working behavior from v1.18.0 where transcriptions are correctly passed during agent transfers.
Thanks!