Releases: google/adk-python
Release 1.21.0
1.21.0 (2025-12-11)
Features
-
[Interactions API Support]
- The newly released Gemini Interactions API is supported in ADK Now. To use it:
Agent( model=Gemini( model="gemini-3-pro-preview", use_interactions_api=True, ), name="...", description="...", instruction="...", )
see samples for details
-
[Services]
- Add
add_session_to_memorytoCallbackContextandToolContextto explicitly save the current session to memory (7b356dd)
- Add
-
[Plugins]
-
[A2A]
- Adds ADK EventActions to A2A response (32e87f6)
-
[Tools]
-
[Models]
- Add Gemma3Ollama model integration and a sample (e9182e5)
Bug Fixes
- Install dependencies for py 3.10 (9cccab4)
- Refactor LiteLLM response schema formatting for different models (894d8c6)
- Resolve project and credentials before creating Spanner client (99f893a)
- Avoid false positive "App name mismatch" warnings in Runner (6388ba3)
- Update the code to work with either 1 event or more than 1 events (4f54660)
- OpenAPI schema generation by skipping JSON schema for judge_model_config (56775af)
- Add tool_name_prefix support to OpenAPIToolset (82e6623)
- Pass context to client interceptors (143ad44)
- Yield event with error code when agent run raised A2AClientHTTPError (b7ce5e1)
- Handle string function responses in LiteLLM conversion (2b64715)
- ApigeeLLM support for Built-in tools like GoogleSearch, BuiltInCodeExecutor when calling Gemini models through Apigee (a9b853f)
- Extract and propagate task_id in RemoteA2aAgent (82bd4f3)
- Update FastAPI and Starlette to fix CVE-2025-62727 (ReDoS vulnerability) (c557b0a)
- Add client id to token exchange (f273517)
Improvements
- Normalize multipart content for LiteLLM's ollama_chat provider (055dfc7)
- Update adk web, fixes image not rendering, state not updating, update drop down box width and trace icons (df86847)
- Add sample agent for interaction api integration (68d7048)
- Update genAI SDK version (f0bdcab)
- Introduce
build_function_declaration_with_json_schemato use pydantic to generate json schema for FunctionTool (51a638b) - Update component definition for triaging agent (ee743bd)
- Migrate Google tools to use the new feature decorator (bab5729)
- Migrate computer to use the new feature decorator (1ae944b)
- Add Spanner execute sql query result mode using list of dictionaries (f22bac0)
- Improve error message for missing
invocation_idandnew_messageinrun_async(de841a4)
1.20.0
1.20.0 (2025-12-01)
Features
-
[Core]
-
[Models]
- Enable multi-provider support for Claude and LiteLLM (d29261a)
-
[Tools]
-
[Web]
- Added an endpoint to list apps with details (b57fe5f)
Bug Fixes
- Allow image parts in user messages for Anthropic Claude (5453b5b)
- Mark the Content as non-empty if its first part contains text or inline_data or file_data or func call/response (631b583)
- Fixes double response processing issue in
base_llm_flow.pywhere, in Bidi-streaming (live) mode, the multi-agent structure causes duplicated responses after tool calling. (cf21ca3) - Fix out of bounds error in _run_async_impl (8fc6128)
- Fix paths for public docs (cd54f48)
- Ensure request bodies without explicit names are named 'body' (084c2de), closes #2213
- Optimize Stale Agent with GraphQL and Search API to resolve 429 Quota errors (cb19d07)
- Update AgentTool to use Agent's description when input_schema is provided in FunctionDeclaration (52674e7)
- Update LiteLLM system instruction role from "developer" to "system" (2e1f730), closes #3657
- Update session last update time when appending events (a3e4ad3), closes #2721
- Update the retry_on_closed_resource decorator to retry on all errors (a3aa077)
- Windows Path Handling and Normalize Cross-Platform Path Resolution in AgentLoader (a1c09b7)
Documentation
- Add Code Wiki badge to README (caf23ac)
1.19.0
1.19.0 (2025-11-19)
Highlights
- Breaking! Raise minimum Python version to 3.10
- Add a File based Artifact Service
- Reduce ADK API server startup latency by lazy loading
- ADK web light mode support
- BigQuery Agent Analytics Plugin
Features
-
[Core]
- Add
idandcustom_metadatafields toMemoryEntry(4dd28a3) - Add progressive SSE streaming feature (a5ac1d5)
- Add a2a_request_meta_provider to RemoteAgent init (d12468e)
- Add feature decorator for the feature registry system (871da73)
- Breaking: Raise minimum Python version to 3_10 (8402832)
- Refactor and rename BigQuery agent analytics plugin (6b14f88)
- Pass custom_metadata through forwarding artifact service (c642f13)
- Update save_files_as_artifacts_plugin to never keep inline data (857de04)
- Add
-
[Evals]
- Add support for InOrder and AnyOrder match in ToolTrajectoryAvgScore Metric (e2d3b2d)
-
[Integrations]
-
[Services]
- Add file-backed artifact service (99ca6aa)
- Add service factory for configurable session and artifact backends (a12ae81)
- Add SqliteSessionService and a migration script to migrate existing DB using DatabaseSessionService to SqliteSessionService (e218254)
- Add transcription fields to session events (3ad30a5)
- Full async implementation of DatabaseSessionService (7495941)
-
[Models]
-
[Tools]
-
[Observability]
- Migrate BigQuery logging to Storage Write API (a2ce34a)
Bug Fixes
- Add
jsonschemadependency for Agent Builder config validation (0fa7e46) - Add None check for
eventinremote_a2a_agent.py(744f94f) - Add vertexai initialization for code being deployed to AgentEngine (b8e4aed)
- Change LiteLLM content and tool parameter handling (a19be12)
- Change name for builder agent (131d39c)
- Ensure event compaction completes by awaiting task (b5f5df9)
- Fix deploy to cloud run on Windows (29fea7e)
- Fix error handling when MCP server is unreachable (ee8106b)
- Fix error when query job destination is None (0ccc43c)
- Fix Improve logic for checking if a MCP session is disconnected (a754c96)
- Fix McpToolset crashing with anyio.BrokenResourceError (8e0648d)
- Fix Safely handle
FunctionDeclarationwithout arequiredattribute (93aad61) - Fix status code in error message in RestApiTool (9b75456)
- Fix Use
async forto loop through event iterator to get all events in vertex_ai_session_service (9211f4c) - Fix: Fixes DeprecationWarning when using send method (2882995)
- Improve logic for checking if a MCP session is disconnected (a48a1a9)
- Improve handling of partial and complete transcriptions in live calls (1819ecb)
- Keep vertex session event after the session update time (0ec0195)
- Let part converters also return multiple parts so they can support more usecases (824ab07)
- Load agent/app before creating session (236f562)
- Remove app name from FileArtifactService directory structure (12db84f)
- Remove hardcoded
google-cloud-aiplatformversion in agent engine requirements (e15e19d) - Stop updating write mode in the global settings during tool execution (5adbf95)
- Update description for
load_artifactstool (c485889)
Improvements
- Add BigQuery related label handling (ffbab4c)
- Add demo for rewind (8eb1bdb)
- Add debug logging for live connection (5d5708b)
- Add debug logging for missing function call events (f3d6fcf)
- Add default retry options as fall back to llm_request that are made during evals (696852a)
- Add plugin for returning GenAI Parts from tools into the model request (116b26c)
- Add support for abstract types in AFC (2efc184)
- Add support for structured output schemas in LiteLLM models (7ea4aed)
- Add tests for
max_query_result_rowsin BigQuery tool config (fd33610) - Add type hints in
cleanup_unused_files.py(2dea573) - Add util to build our llms.txt and llms-full.txt files
- ADK changes (f1f4467)
- Defer import of
google.cloud.storageinGCSArtifactService([9...
Release 1.18.0
1.18.0 (2025-11-05)
Features
-
[ADK Visual Agent Builder]
- Core Features
- Visual workflow designer for agent creation
- Support for multiple agent types (LLM, Sequential, Parallel, Loop, Workflow)
- Agent tool support with nested agent tools
- Built-in and custom tool integration
- Callback management for all ADK callback types (before/after agent, model, tool)
- Assistant to help you build your agents with natural language
- Assistant proposes and writes agent configuration yaml files for you
- Save to test with chat interfaces as normal
- Build and debug at the same time in adk web!
- Core Features
-
[Core]
- Add support for extracting cache-related token counts from LiteLLM usage (4f85e86)
- Expose the Python code run by the code interpreter in the logs (a2c6a8a)
- Add run_debug() helper method for quick agent experimentation (0487eea)
- Allow injecting a custom Runner into
agent_to_a2a(156d235) - Support MCP prompts via the McpInstructionProvider class (88032cf)
-
[Models]
-
[Integrations]
- Add example and fix for loading and upgrading old ADK session databases (338c3c8)
- Add support for specifying logging level for adk eval cli command (b1ff85f)
- Propagate LiteLLM finish_reason to LlmResponse for use in callbacks (71aa564)
- Allow LLM request to override the model used in the generate content async method in LiteLLM (ce8f674)
- Add api key argument to Vertex Session and Memory services for Express Mode support (9014a84)
- Added support for enums as arguments for function tools (240ef5b)
- Implement artifact_version related methods in GcsArtifactService (e194ebb)
-
[Services]
-
[Tools]
-
[Evals]
-
[Observability]
- Add BigQueryLoggingPlugin for event logging to BigQuery (b7dbfed)
-
[Live]
- Add token usage to live events for bidi streaming (6e5c0eb)
Bug Fixes
- Reduce logging spam for MCP tools without authentication (11571c3)
- Fix typo in several files (d2888a3)
- Disable SetModelResponseTool workaround for Vertex AI Gemini 2+ models (6a94af2)
- Bug when callback_context_invocation_context is missing in GlobalInstructionPlugin (f81ebdb)
- Support models slash prefix in model name extraction (8dff850)
- Do not consider events with state delta and no content as final response (1ee93c8)
- Parameter filtering for CrewAI functions with **kwargs (74a3500)
- Do not treat FinishReason.STOP as error case for LLM responses containing candidates with empty contents (2f72ceb)
- Fixes null check for reflect_retry plugin sample (86f0155)
- Creates evalset directory on evalset create (6c3882f)
- Add ADK_DISABLE_LOAD_DOTENV environment variable that disables automatic loading of .env when running ADK cli, if set to true or 1 (15afbcd)
- Allow tenacity 9.0.0 (ee8acc5)
- Output file uploading to artifact service should handle both base64 encoded and raw bytes (496f8cd)
- Correct message part ordering in A2A history (5eca72f)
- Change instruction insertion to respect tool call/response pairs (1e6a9da)
- DynamicPickleType to support MySQL dialect (fc15c9a)
- Enable usage metadata in LiteLLM streaming (f9569bb)
- Fix issue with MCP tools throwing an error (1a4261a)
- Remove redundant
formatfield from LiteLLM content objects (489c39d) - Update the contribution analysis tool to use original write mode (54db3d4)
- Fix agent evaluations detailed output rows wrapping issue(4284c61)
- Update dependency version constraints to be based on PyPI versions(0b1784e)
Improvements
- Add Community Repo section to README (432d30a)
- Undo adding MCP tools output schema to FunctionDeclaration (92a7d19)
- Refactor ADK README for clarity and consistency (b0017ae)
- Add support for reversed proxy in adk web (a0df75b)
- Avoid rendering empty columns as part of detailed results rendering of eval results (5cb35db)
- Clear the behavior of disallow_transfer_to_parent (48ddd07)
- Disable the scheduled execution for issue triage workflow (a02f321)
- Include delimiter when matching events from parent nodes in content processor (b8a2b6c)
- Improve Tau-bench ADK colab stability ([04dbc42](https://gi...
v1.17.0
1.17.0 (2025-10-22)
Features
-
[Core]
- Add a service registry to provide a generic way to register custom service implementations to be used in FastAPI server. See short instruction here. (391628f)
- Add the ability to rewind a session to before a previous invocation (9dce06f)
- Support resuming a parallel agent with multiple branches paused on tool confirmation requests (9939e0b)
- Support content union as static instruction (cc24d61)
-
[Evals]
- ADK cli allows developers to create an eval set and add an eval case (ae139bb)
-
[Integrations]
- Allow custom request and event converters in A2aAgentExecutor (a17f3b2)
-
[Observability]
- Env variable for disabling llm_request and llm_response in spans (e50f05a)
-
[Services]
- Allow passing extra kwargs to create_session of VertexAiSessionService (6a5eac0)
- Implement new methods in in-memory artifact service to support custom metadata, artifact versions, etc. (5a543c0)
- Add create_time and mime_type to ArtifactVersion (2c7a342)
- Support returning all sessions when user id is none (141318f)
-
[Tools]
- Support additional headers for Google API toolset (ed37e34)
- Introduces a new AgentEngineSandboxCodeExecutor class that supports executing agent-generated code using the Vertex AI Code Execution Sandbox API (ee39a89)
- Support dynamic per-request headers in MCPToolset (6dcbb5a)
- Add
bypass_multi_tools_limitoption to GoogleSearchTool and VertexAiSearchTool (9a6b850, 6da7274) - Extend
ReflectAndRetryToolPluginto support hallucinating function calls (f51380f) - Add require_confirmation param for MCP tool/toolset (78e74b5)
-
[UI]
- Granular per agent speech configuration (409df13)
Bug Fixes
- Returns dict as result from McpTool to comply with BaseTool expectations (4df9263)
- Fixes the identity prompt to be one line (7d5c6b9)
- Fix the broken langchain importing caused their 1.0.0 release (c850da3)
- Fix BuiltInCodeExecutor to support visualizations (ce3418a)
- Relax runner app-name enforcement and improve agent origin inference (dc4975d)
- Improve error message when adk web is run in wrong directory (4a842c5)
- Handle App objects in eval and graph endpoints (0b73a69)
- Exclude
additionalPropertiesfrom Gemini schemas (307896a) - Overall eval status should be NOT_EVALUATED if no invocations were evaluated (9fbed0b)
- Create context cache only when prefix matches with previous request (9e0b1fb)
- Handle
Appinstances returned byagent_loader.load_agent(847df16) - Add support for file URIs in LiteLLM content conversion (85ed500)
- Only exclude scores that are None (998264a)
- Better handling the A2A streaming tasks (bddc70b)
- Correctly populate context_id in remote_a2a_agent library (2158b3c)
- Remove unnecessary Aclosing (2f4f561)
- Fix pickle data was truncated error in database session using MySql (36c96ec)
Improvements
- Improve hint message in agent loader (fe1fc75)
- Fixes MCPToolset --> McpToolset in various places (d4dc645)
- Add span for context caching handling and new cache creation (a2d9f13)
- Checks gemini version for
2 and abovefor gemini-builtin tools (0df6759) - Refactor and fix state management in the session service (8b3ed05)
- Update agent builder instructions and remove run command details (89344da)
- Clarify how to use adk built-in tool in instruction (d22b8bf)
- Delegate the agent state reset logic to LoopAgent (bb1ea74)
- Adjust the instruction about default model (214986e)
- Migrate invocation_context to callback_context (e2072af)
- Correct the callback signatures (fa84bcb)
- Set default for
bypass_multi_tools_limitto False for GoogleSearchTool and VertexAiSearchTool (6da7274) - Add more clear instruction to the doc updater agent about one PR for each recommended change (b21d0a5)
- Add a guideline to avoid content deletion (16b030b)
- Add an sample agent for the
ReflectAndRetryToolPlugin(9b8a4aa) - Improve error message when adk web is run in wrong directory (4a842c5)
- Add an sample agent for the
ReflectAndRetryToolPlugin(9b8a4aa) - Add span for context caching handling and new cache creation (a2d9f13)
- Disable the scheduled execution for issue triage workflow (bae2102)
- Correct the callback signatures (fa84bcb)
Documentation
- Format README.md for samples (0bdba30)
- Bump models in llms and llms-full to Gemini 2.5 (ce46386)
- Update gemini_llm_connection.py - typo spelling correction (e6e2767)
- Announce the first ADK Community Call in the README ([731bb90](https://github.com/google/adk-python/...
Release 1.16.0
1.16.0 (2025-10-08)
Features
- [Core]
- [Models]
- [Tools]
- Add
dry_runfunctionality to BigQueryexecute_sqltool (960eda3) - Add BigQuery analyze_contribution tool (4bb089d)
- Spanner ADK toolset supports customizable template SQL and parameterized SQL (da62700)
- Support Oauth2 client credentials grant type (5c6cdcd)
- Add
ReflectRetryToolPluginto reflect from errors and retry with different arguments when tool errors (e55b894) - Support using
VertexAiSearchToolbuilt-in tool with other tools in the same agent (4485379) - Support using google search built-in tool with other tools in the same agent (d3148da)
- Add
- [Evals]
- [UI]
- Adds
adk weboptions for custom logo (822efe0)
- Adds
- [Observability]
- otel: Switch CloudTraceSpanExporter to telemetry.googleapis.com (bd76b46)
Bug Fixes
- Adapt to new computer use tool name in genai sdk 1.41.0 (c6dd444)
- Add AuthConfig json serialization in vertex ai session service (636def3)
- Added more agent instructions for doc content changes (7459962)
- Convert argument to pydantic model when tool declares it accepts pydantic model as argument (571c802)
- Do not re-create
Appobject when loader returns anApp(d5c46e4) - Fix compaction logic (3f2b457)
- Fix the instruction in workflow_triage example agent (8f3ca03)
- Fixes a bug that causes intermittent
pydanticvalidation errors when uploading files (e680063) - Handle A2A Task Status Update Event when streaming in remote_a2a_agent (a5cf80b)
- Make compactor optional in Events Compaction Config and add a default (3f4bd67)
- Rename SlidingWindowCompactor to LlmEventSummarizer and refine its docstring (f1abdb1)
- Rollback compaction handling from _get_contents (84f2f41)
- Set
max_output_tokensfor the agent builder (2e2d61b) - Set default response modality to AUDIO in run_session (68402bd)
- Update remote_a2a_agent to better handle streaming events and avoid duplicate responses (8e5f361)
- Update the load_artifacts tool so that the model can reliably call it for follow up questions about the same artifact (238472d)
- Fix VertexAiSessionService base_url override to preserve initialized http_options (8110e41, c51ea0b)
- Handle
Appinstances returned byagent_loader.load_agent(847df16)
Improvements
- Migrate VertexAiSessionService to use Agent Engine SDK (90d4c19)
- Migrate VertexAiMemoryBankService to use Agent Engine SDK (d1efc84, 97b950b, 83fd045)
- Add support for resolving $ref and $defs in OpenAPI schemas (a239716)
Documentation
- Update BigQuery samples README (3021266)
Release 1.15.1
Release 1.15.0
1.15.0 (2025-09-24)
Features
- [Core]
- [Context Caching]
- Support context caching (c66245a)
-
Support explicit context caching auto creation and lifecycle management.
Usage:
App(root_agent=..., plugins=..., context_cache_config=...)
-
- Support non-text content in static instruction (61213ce)
- Support static instructions (9be9cc2)
-
Support static instruction that won't change, put at the beginning of
the instruction.
Static instruction support inline_data and file_data as contents.
Dynamic instruction moved to the end of LlmRequest, increasing prefix
caching matching size.Usage:
LlmAgent(model=...,static_instruction =types.Content(parts=...), ... )
-
- Support context caching (c66245a)
- [Telemetry]
- [Services]
- Add endpoint to generate memory from session (2595824)
- [Tools]
- [Evals]
- [Samples]
- Make the bigquery sample agent run with ADC out-of-the-box (10cf377)
Bug Fixes
- Close runners after running eval (86ee6e3)
- Filter out thought parts when saving agent output to state (632bf8b)
- Ignore empty function chunk in LiteLlm streaming response (8a92fd1)
- Introduces a
raw_mcp_toolmethod inMcpToolto provide direct access to the underlying MCP tool (6158075) - Make a copy of the
columnsinstead of modifying it in place (aef1ee9) - Prevent escaping of Latin characters in LLM response (c9ea80a)
- Retain the consumers and transport registry when recreating the ClientFactory in remote_a2a_agent.py (6bd33e1)
- Remove unsupported 'type': 'unknown' in test_common.py for fastapi 0.117.1 (3745221)
Documentation
- Correct the documentation of
after_agent_callback(b9735b2)
Release 1.14.1
Release 1.14.0
1.14.0 (2025-09-10)
Features
- [A2A]
- [Tools]
- Allow setting agent/application name and compute project for BigQuery tools 11a2ffe
- Add BigQuery forecast tool 0935a40
- Add GkeCodeExecutor for sandboxed code execution on GKE 72ff9c6
- Add a tool confirmation flow that can guard tool execution with explicit confirmation and custom input a17bcbb
- Add audience and prompt as configurable for OAuth flows edda922
- Allow user specify embedding model for file retrieval 67f23df
- [Core]
- [Misc] Create an initial ADK release analyzer agent to find the doc updates needed between releases e3422c6
Bug Fixes
- Add
custom_metadatato DatabaseSessionService fb009d8- NOTE: This requires DB migration, run
ALTER TABLE events ADD COLUMN custom_metadata JSON;to migrate existing database tables.
- NOTE: This requires DB migration, run
- Add a NOTE to agent transfer instructions listing available agents 43eec82
- Fix pagination of list_sessions in VertexAiSessionService e63fe0c
- Fix AttributeError and indentation in parameter processing of LiteLlm 1e23652
- Allow AgentTool to inherit/use plugins from its invocation context when running 1979dcf
- Enforce foreign key constraint for SQLite DB 0c87907
- Add back installing requirements.txt to Dockerfile template for cloud run 8e43f0d
- Only process the auth responses in the last event with content (if applicable i.e. it's authored by user) 3b922a2
- Extract a utility for aggregating partial streaming responses and emitting LlmResponses for them as needed 7975e8e
- Support saving text artifacts in GCS artifact service cecf7e8
- Fixes
thoughthandling in contents.py and refactors its unit tests a30851e - Fixes the
thoughtfield handling in _planning.py fe8b37b - Pass state_delta to runner in /run endpoint a3410fa
- Fix discussion answering github action workflow to escape the quote in the discussion content JSON 43c9681
- Send full MIME types for image/video/pdf in get_content e45c3be
- Fix flaky unit tests: tests/unittests/flows/llm_flows/test_functions_simple.py b92b288
- Make UT of a2a consistent about how tests should be skipped when python verison < 3.10 98b0426
Improvements
- Update contribution guide 8174a29
- Skip PR triage for already triaged or Google-contributor PRs 78eea1a
- Avoid mutable default arguments in
local_eval_serviceandrunners64f11a6 - Avoid mutable default arguments in
local_eval_serviceandrunners5b465fd - Reorder dependencies in
pyproject.tomlca5f7f1 - Follow pydantic convention to make field_validator a public method 1448406
- Update comment to clarify
after_runcallbacks 7720616 - Tune instructions to not ask root directory if it's already provided in the context 25df6c2
- Load discussion data from event content to avoid additional GraphQL API call a503a0c
- Refactor discussion answering agent to merge answer_discussions.py into main.py 408d3df
- Add community repo dependency group to pyproject toml 7b077ac
- Add warning for using Gemini models via LiteLLM 9291daa
Documentation
- Update root_agent description for clarity 467df1a
- Update the ask_data_insights docstring aad1533
- Add contributing Spanner tools RAG agent sample fcd748e
Tests
- Add functional telemetry tests bc6b546
- Add unit tests for the
Appclass and improveRunnerinitialization tests fc90ce9