Releases: google/adk-python
Releases · google/adk-python
v2.0.0a1
Features
Introduces two major capabilities:
- Workflow runtime: graph-based execution engine for composing
deterministic execution flows for agentic apps, with support for
routing, fan-out/fan-in, loops, retry, state management, dynamic
nodes, human-in-the-loop, and nested workflows - Task API: structured agent-to-agent delegation with multi-turn
task mode, single-turn controlled output, mixed delegation
patterns, human-in-the-loop, and task agents as workflow nodes
v1.27.2
v1.27.1
v1.27.0
Features
-
[Core]
- Introduce A2A request interceptors in RemoteA2aAgent (6f772d2)
- Add UiWidget to EventActions for supporting new experimental UI Widgets feature (530ff06)
- auth: Add pluggable support for auth integrations using AuthProviderRegistry within CredentialManager (d004074)
- Support all
types.SchemaUnionas output_schema in LLM Agent (63f450e) - durable runtime support (07fdd23)
- runners: pass GetSessionConfig through Runner to session service (eff724a)
-
[Models]
-
[Web]
- Updated human in the loop: developers now can respond to long running functions directly in chat
- Render artifacts when resuming
- Fix some light mode styles
- Fix token level streaming not working properly (22799c0)
-
[Observability]
- telemetry: add new gen_ai.agent.version span attribute (ffe97ec)
- otel: add
gen_ai.tool.definitionsto experimental semconv (4dd4d5e) - otel: add experimental semantic convention and emit
gen_ai.client.inference.operation.detailsevent (19718e9) - add missing token usage span attributes during model usage (77bf325)
- capture tool execution error code in OpenTelemetry spans (e0a6c6d)
-
[Tools]
- Warn when accessing DEFAULT_SKILL_SYSTEM_INSTRUCTION (35366f4)
- add preserve_property_names option to OpenAPIToolset (078b516)
- Add gcs filesystem support for Skills. It supports skills in text and pdf format, also has some sample agents (6edcb97)
- Add list_skills_in_dir to skills utils (327b3af)
- Add support for MCP App UI widgets in MCPTool (86db35c)
- add Dataplex Catalog search tool to BigQuery ADK (82c2eef)
- Add RunSkillScriptTool to SkillToolset (636f68f)
- Add support for ADK tools in SkillToolset (44a5e6b)
- limit number of user-provided BigQuery job labels and reserve internal prefixes (8c4ff74)
- Add param support to Bigtable execute_sql (5702a4b)
- bigtable: add Bigtable cluster metadata tools (34c560e)
- execute-type param addition in GkeCodeExecutor (9c45166)
- skill: Add BashTool (8a31612)
- Add support for toolsets to additional_tools field of SkillToolset (066fcec)
-
[Optimization]
-
[Integrations]
-
[A2A]
Bug Fixes
- Allow artifact services to accept dictionary representations of types.Part (b004da5), closes #2886
- Decode image data from ComputerUse tool response into image blobs (d7cfd8f)
- Expand LiteLLM reasoning extraction to include 'reasoning' field (9468487), closes #3694
- Filter non-agent directories from list_agents() (3b5937f)
- Fix Type Error by initializing user_content as a Content object (2addf6b)
- Handle length finish reason in LiteLLM responses (4c6096b), closes #4482
- In SaveFilesAsArtifactsPlugin, write the artifact delta to state then event actions so that the plugin works with ADK Web UI's artifacts panel (d6f31be)
- Make invocation_context optional in convert_event_to_a2a_message (8e79a12)
- Optimize row-level locking in append_event (d61846f), closes #4655
- Preserve thought_signature in FunctionCall conversions between GenAI and A2A (f9c104f)
- Prevent splitting of SSE events with artifactDelta for function resume requests (6a929af), closes #4487
- Propagate file names during A2A to/from Genai Part conversion (f324fa2)
- Propagate thought from A2A TextPart metadata to GenAI Part (e59929e)
- Re-export DEFAULT_SKILL_SYSTEM_INSTRUCTION to skills and skill/prompt.py to avoid breaking current users (de4dee8)
- Refactor type string update in Anthropic tool param conversion (ab4b736)
- simulation: handle NoneType generated_content (9d15517)
- Store and retrieve EventCompaction via custom_metadata in Vertex AISessionService ([2e434ca](2e434ca7be765d...
v1.26.0
1.26.0 (2026-02-26)
Features
-
[Core]
-
[Models]
-
[Tools]
- Add
load_skill_from_dir()method (9f7d5b3) - Agent Skills spec compliance — validation, aliases, scripts, and auto-injection (223d9a7)
- BigQuery ADK support for search catalog tool (bef3f11)
- Make skill instruction optimizable and can adapt to user tasks (21be6ad)
- Pass trace context in MCP tool call's
_metafield with OpenTelemetry propagator (bcbfeba)
- Add
-
[Evals]
- Introduce User Personas to the ADK evaluation framework (6a808c6)
-
[Services]
-
[A2A]
- Add interceptor framework to
A2aAgentExecutor(87fcd77)
- Add interceptor framework to
-
[Auth]
-
[Integrations]
- Agent Registry in ADK (abaa929)
- Add schema auto-upgrade, tool provenance, HITL tracing, and span hierarchy fix to BigQuery Agent Analytics plugin (4260ef0)
- Change default BigQuery table ID and update docstring (7557a92)
- Update Agent Registry to create AgentCard from info in get agents endpoint (c33d614)
-
[Web]
- Enable dependency injection for agent loader in FastAPI app gen (34da2d5)
Bug Fixes
- Add OpenAI strict JSON schema enforcement in LiteLLM (2dbd1f2), closes #4573
- Add push notification config store to agent_to_a2a (4ca904f), closes #4126
- Add support for injecting a custom google.genai.Client into Gemini models (48105b4), closes #2560
- Add support for injecting a custom google.genai.Client into Gemini models (c615757), closes #2560
- Check both
input_streamparameter name and its annotation to decide whether it's a streaming tool that accept input stream (d56cb41) - deps: Increase pydantic lower version to 2.7.0 (dbd6420)
- edit copybara and BUILD config for new adk/integrations folder (added with Agent Registry) (37d52b4)
- Expand add_memory to accept MemoryEntry (f27a9cf)
- Fix pickling lock errors in McpSessionManager (4e2d615)
- fix typo in PlanReActPlanner instruction (6d53d80)
- handle UnicodeDecodeError when loading skills in ADK (3fbc27f)
- Improve BigQuery Agent Analytics plugin reliability and code quality (ea03487)
- Include list of skills in every message and remove list_skills tool from system instruction (4285f85)
- Invoke on_tool_error_callback for missing tools in live mode (e6b601a)
- Keep query params embedded in OpenAPI paths when using httpx (ffbcc0a), closes #4555
- Only relay the LiveRequest after tools is invoked (b53bc55)
- Parallelize tool resolution in LlmAgent.canonical_tools() (7478bda)
- race condition in table creation for
DatabaseSessionService(fbe9ecc) - Re-export DEFAULT_SKILL_SYSTEM_INSTRUCTION to skills and skill/prompt.py to avoid breaking current users (40ec134)
- Refactor LiteLLM streaming response parsing for compatibility with LiteLLM 1.81+ (e8019b1), closes #4225
- remove duplicate session GET when using API server, unbreak auto_session_create when using API server (445dc18)
- Remove experimental decorators from user persona data models (eccdf6d)
- Replace the global DEFAULT_USER_PERSONA_REGISTRY with a function call to get_default_persona_registry (2703613)
- skill: coloate default skill SI with skilltoolset (fc1f1db)
- Update agent_engine_sandbox_code_executor in ADK (ee8d956)
- Update agent_engine_sandbox_code_executor in ADK (dab80e4)
- Update sample skills agent to use weather-skill instead of weather_skill (8f54281)
- update Spanner query tools to async functions (1dbcecc)
- use correct msg_out/msg_err keys for Agent Engine sandbox output (b1e33a9)
- Validate session before streaming instead of eagerly advancing the runner generator (ab32f33)
- web: allow session resume without new message (30b2ed3)
Code Refactoring
- Extract reusable function for building agent transfer instructions (e1e0d63)
- Extract reusable private methods (976a238)
- Extract reusable private methods (42eeaef)
- Extract reusable private methods (706f9fe)
Documentation
...
v1.25.1
v1.25.0
1.25.0 (2026-02-11)
Features
-
[Core]
- Add a demo for the simple prompt optimizer for the optimization interface (0abf4cd)
- Add
--auto_create_sessionflag toadk api_serverCLI (40c15d0) - Add
add_events_to_memoryfacade for event-delta (59e8897) - Add post-invocation token-threshold compaction with event retention (a88e864)
- Add report generation to
adk conformance testcommand (43c437e)
-
[Models]
- Add base_url option to Gemini LLM class (781f605)
-
[Tools]
-
[Web]
- Add
/healthand/versionendpoints to ADK web server (25ec2c6)
- Add
Bug Fixes
- Use async iteration for VertexAiSessionService.list_sessions pagination (758d337)
- Fix event loop closed bug in McpSessionManager (4aa4751)
- Preserve thought_signature in function call conversions for interactions API integration (2010569)
- Propagate grounding and citation metadata in streaming responses (e6da417)
- Add endpoints to get/list artifact version metadata (e0b9712)
- Support escaped curly braces in instruction templates (7c7d25a)
- Strip timezone for PostgreSQL timestamps in DatabaseSessionService (19b6076)
- Prompt token may be None in streaming mode (32ee07d)
- Pass invocation_id from
/runendpoint toRunner.run_async(d2dba27) - Conditionally preserve function call IDs in LLM requests (663cb75)
- Migrate VertexAiMemoryBankService to use the async Vertex AI client (64a44c2)
- Handle list values in Gemini schema sanitization (fd8a9e3)
- Used logger to log instead of print in MCP (6bc70a6)
Improvements
v1.24.1
v1.24.0
1.24.0 (2026-02-04)
⚠ BREAKING CHANGES
- Breaking: Make credential manager accept
tool_contextinstead ofcallback_context(fe82f3c)
Highlights
- [Web]
- Consolidated Event View: Replaced the Event tab with a more intuitive "click-to-expand" interaction on message rows, enabling faster debugging within the chat context
- Enhanced Accessibility: Added full support for arrow-key navigation for a more seamless, keyboard-centric experience
- Rich Developer Tooling: Introduced detailed tooltips for function calls, providing instant visibility into arguments, responses, and state changes
- A2UI Integration: Integrated the A2UI v0.8 standard catalog to automatically render spec-compliant ADK parts as native UI components directly in the chat
Features
-
[Core]
-
[Models]
- Mark Vertex calls made from non-Gemini models (7d58e0d)
-
[Evals]
-
[Tools]
- Make OpenAPI tool asynchronous (9290b96)
- Implement toolset authentication for
McpToolset,OpenAPIToolset, and other toolsets (798f65d) - Add framework support for toolset authentication before
get_toolscalls (ee873ca) - Support dynamic configuration for
VertexAiSearchTool(585ebfd) - Add
get_auth_configmethod to toolset to expose authentication requirements (381d44c) - Add methods in
McpToolsetfor users to access MCP resources (8f7d965) - Improve error message when failing to get tools from MCP (3480b3b)
-
[Services]
- Improve
asyncioloop handling and test cleanup (00aba2d)
- Improve
-
[Live]
- Support running tools in separate threads for live mode (714c3ad)
-
[Observability]
- Add extra attributes to spans generated with
opentelemetry-instrumentation-google-genai(e87a843)
- Add extra attributes to spans generated with
Bug Fixes
- Ignore
session_db_kwargsfor SQLite session services (ce07cd8) - Resolve
MutualTLSChannelErrorby addingpyopenssldependency (125bc85) - Add
update_timestamp_tzproperty toStorageSession(666cebe) - Do not treat Function Calls and Function Responses as invisible when marked as thoughts (853a3b0)
- Add pre-deployment validation for agent module imports (credit to @ppgranger, 2ac468e)
- Fix cases where
execution_result_delimitershaveNonetype element (a16e3cc) - Disable
save_input_blobs_as_artifactsdeprecation warning message for users not setting it (c34615e) - Fix agent config path handling in generated deployment script (8012339)
- Add
pypika>=0.50.0toproject.tomlto supportcrewaion Python 3.12+ (e8f7aa3) - Update OpenTelemetry dependency versions to relax version constraints for
opentelemetry-apiandopentelemetry-sdk(706a6dd) - Enable
pool_pre_pingby default for non-SQLite database engines (da73e71) - Ensure database sessions are always rolled back on errors (63a8eba)
- Reload stale session in
DatabaseSessionServicewhen storage update time is later than the in-memory session object (1063fa5) - Make credential key generation stable and prevent cross-user credential leaks (33012e6)
- Change MCP
read_resourceto return original contents (ecce7e5) - Recognize function responses as non-empty parts in LiteLLM (d0102ec)
- Handle HTTP/HTTPS URLs for media files in LiteLLM content conversion (47221cd)
- Fix Pydantic schema generation error for
ClientSession(131fbd3) - Fix Click’s Wrapping in
adk evalhelp message (3bcd8f7) - Stream errors as simple JSON objects in ADK web server SSE endpoint (798d005)
- Remove print debugging artifact (0d38a36)
Improvements
- Check
will_continuefor streaming function calls (2220d88) - Update ADK web, rework events, and add A2UI capabilities (37e6507)
- Improve error handling for LiteLLM import in
gemma_llm.py(574ec43) - Replace proxy methods with utils implementation (6ff10b2, f82ceb0)
- Replace print statements with logging in ADK evaluation components (dd8cd27)
- Add sample agent that requires OAuth flow during MCP tool listing, and convert
MCPToolsettoMcpToolsetin unit tests (2770012, 4341839) - Ensure
BigQueryAgentAnalyticsPluginis shut down after each test (c0c98d9) - Add ADK logger in
RestApiTool(288c2c4) - Add GitHub Action check to run
mypy(32f9f92) - Add
unittests.shscript and updateCONTRIBUTING.md(025b42c) - Extract helper function for LLM request building and response processing (753084f)
v1.23.0
1.23.0 (2026-01-22)
⚠ BREAKING CHANGES
- Breaking: Use OpenTelemetry for BigQuery plugin tracing, replacing custom
ContextVarimplementation (ab89d12)
Features
-
[Core]
- Add support to automatically create a session if one does not exist (8e69a58)
- Remove
@experimentaldecorator fromAgentEngineSandboxCodeExecutor(135f763) - Add
--disable_featuresCLI option to override default feature enable state (53b67ce) - Add
otel_to_cloudflag toadk deploy agent_enginecommand (21f63f6) - Add
is_computer_usefield to agent information inadk-webserver (5923da7) - Allow
thinking_configingenerate_content_config(e162bb8) - Convert A2UI messages between A2A
DataPartmetadata and ADK events (1133ce2) - Add
--enable_featuresCLI option to override default feature enable state (79fcddb)
-
[Tools]
- Add flush mechanism to
BigQueryAgentAnalyticsPluginto ensure pending log events are written to BigQuery (9579bea) - Allow Google Search tool to set a different model (b57a3d4)
- Support authentication for MCP tool listing (e3d542a 19315fe)
- Use JSON schema for
base_retrieval_tool,load_artifacts_tool, andload_memory_tooldeclarations when the feature is enabled (69ad605) - Use JSON schema for
IntegrationConnectorTooldeclaration when the feature is enabled (2ed6865) - Start and close
ClientSessionin a single task inMcpSessionManager(cce430d) - Use JSON schema for
RestApiTooldeclaration when the feature is enabled (a5f0d33)
- Add flush mechanism to
-
[Evals]
-
[Observability]
- Add minimal
generate_content {model.name}spans and logs for non-Gemini inference and whenopentelemetry-inference-google-genaidependency is missing (935c279)
- Add minimal
-
[Integrations]
- Enhance
TraceManagerasynchronous safety, enrich BigQuery plugin logging, and fix serialization (a4116a6)
- Enhance
-
[Live]
- Persist user input content to session in live mode (a04828d)
Bug Fixes
- Recursively extract input/output schema for AgentTool (bf2b56d)
- Yield buffered
function_callandfunction_responseevents during live streaming (7b25b8f) - Update
authlibandmcpdependency versions (7955177) - Set
LITELLM_MODEtoPRODUCTIONbefore importing LiteLLM to prevent implicit.envfile loading (215c2f5) - Redact sensitive information from URIs in logs (5257869)
- Handle asynchronous driver URLs in the migration tool (4b29d15)
- Remove custom metadata from A2A response events (81eaeb5)
- Handle
Noneinferences in eval results (7d4326c) - Mark all parts of a thought event as thought (f92d4e3)
- Use
json.dumpsfor error messages in SSE events (6ad18cc) - Use the correct path for config-based agents when deploying to AgentEngine (83d7bb6)
- Support Generator and Async Generator tool declarations in JSON schema (19555e7 7c28297)
- Prevent stopping event processing on events with
Nonecontent (ed2c3eb) - Fix
'NoneType'object is not iterable error (7db3ce9) - Use canonical tools to find streaming tools and register them by
tool.name(ec6abf4) - Initialize
self._auth_configinsideBaseAuthenticatedToolto access authentication headers inMcpTool(d4da1bb) - Only filter out audio content when sending history (712b5a3)
- Add finish reason mapping and remove custom file URI handling in LiteLLM (89bed43)
- Convert unsupported inline artifact MIME types to text in
LoadArtifactsTool(fdc98d5) - Pass
log_leveltouvicorninwebandapi_servercommands (38d52b2) - Use the agent name as the author of the audio event (ab62b1b)
- Handle
NOT_FOUNDerror when fetching Vertex AI sessions (75231a3) - Fix
httpxclient closure during event pagination (b725045)
Improvements
- Add new conversational analytics API toolset (82fa10b)
- Filter out
adk_request_inputevent from content list (295b345) - Always skip executing partial function calls (d62f9c8)
- Update comments of request confirmation preprocessor (1699b09)
- Fix various typos (a8f2ddd)
- Update sample live streaming tools agent to use latest live models (3dd7e3f)
- Make the regex to catch CLI reference strict by adding word boundary anchor (c222a45)
- Migrate
ToolboxToolsetto usetoolbox-adkand align validation (7dc6adf 277084e) - Always log API backend when connecting to live model (7b035aa)
- Add a sample BigQuery agent using BigQuery MCP tools (672b57f)
- Add a
DebugLoggingPluginto record human-readable debugging logs (8973618) - Upgrade the sample BigQuery agent model version to
gemini-2.5-flash([fd2c0f5](https://github.com/google/adk-py...