Releases: google/adk-python
v1.22.0
Features
-
[Core]
-
[Evals]
-
[Tools]
-
[Services]
-
[A2A]
- Update event_converter used in A2ARemote agent to use a2a_task.status.message only if parts are non-empty (e4ee9d7).
Bug Fixes
- Add checks for event content and parts before accessing (5912835).
- Validate app name in
adk createcommand (742c926). - Prevent .env files from overriding existing environment variables (0827d12).
- Prevent ContextFilterPlugin from creating orphaned function responses (e32f017).
- Update empty event check to include executable code and execution results (688f48f).
- Make the BigQuery analytics plugin work with agents that don't have instructions such as the LoopAgent (8bed01c).
- Label response as thought if task is immediately returned as working (4f3b733).
- Move and enhance the deprecation warning for the plugins argument in "_validate_runner_params" to the beginning of the function (43270bc).
- Oauth refresh not triggered on token expiry (69997cd).
- Fix double JSON encoding when saving eval set results (fc4e3d6).
- Allow string values for ToolTrajectoryCriterion.match_type (93d6e4c).
- Fix inconsistent method signatures for evaluate_invocations (0918b64).
- Honor the modalities parameter in adk api server for live API (19de45b).
- Filter out thought parts in lite_llm._get_content (1ace8fc).
- Rehydration of EventActions in StorageEvent.to_event (838530e).
- Heal missing tool results before LiteLLM requests (6b7386b).
- Refine Ollama content flattening and provider checks (c6f389d).
- Add MIME type inference and default for file URIs in LiteLLM (5c4bae7).
- Use mode='json' in model_dump to serialize bytes correctly when using telemetry (96c5db5).
- Avoid local .adk storage in Cloud Run/GKE (b30c2f4).
- Remove fallback to cached exchanged credential in _load_existing_credential (1ae0e16).
- Handle overriding of requirements when deploying to agent engine (38a30a4).
- Built-in agents (names starting with "__") now use in-memory session storage instead of creating .adk folders in the agents directory (e3bac1a).
- Change error_message column type to TEXT in DatabaseSessionService (8335f35).
- Add schema type sanitization to OpenAPI spec parser (6dce7f8).
- Prevent retry_on_errors from retrying asyncio.CancelledError (30d3411).
- Include back-ticks around the BQ asset names in the tools examples (8789ad8).
- Fix issue with MCP tools throwing an error (26e77e1).
- Exclude thought parts when merging agent output (07bb164).
- Prepend "https://" to the MCP server url only if it doesn't already have a scheme (71b3289).
- Split SSE events with both content and artifactDelta in ADK Web Server (084fcfa).
- Propagate RunConfig custom metadata to all events (e3db2d0).
- Harden YAML builder tmp save/cleanup(6f259f0).
- Ignore adk-bot administrative actions in stale agent (3ec7ae3).
- Only prepend "https://" to the MCP server url if it doesn't already have a scheme (71b3289).
- Check all content parts for emptiness in _contains_empty_content (f35d129).
Improvements
- Remove unnecessary event loop creation in LiveRequstQueue constructor (ecc9f18).
- Close database engines to avoid aiosqlite pytest hangs (4ddb2cb).
- Add
override_feature_enabledto override the default feature enable states (a088506). - Move SQLite migration script to migration/ folder (e8ab7da).
- Update latest Live Model names for sample agent (f1eb1c0).
- Update google-genai and google-cloud-aiplatform versions (d58ea58).
- Introduce MetricInfoProvider interface, and refactor metric evaluators to use this interface to provide MetricInfo (5b7c8c0).
- Update _flatten_ollama_content return type and add tests (fcea86f).
- Add disambiguation message to enterprise_search_tool (8329fec).
- Add x-goog-user-project header to http calls in API Registry (0088b0f).
- Set the default response modality to AUDIO only ([a4b914b](a4b914b09fbab7683...
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)