github google/adk-python v2.3.0

6 hours ago

2.3.0 (2026-06-17)

Features

  • Add async and concurrency guidelines to ADK Style Guide (66e00db)
  • add create_http_options to ContextCacheConfig for cache creation timeout (ffc9677), closes #4703
  • add GCS first party toolset to ADK integrations (fb19e1a)
  • Add log_level option for adk run CLI (1ac69a9)
  • Add mTLS support in AgentRegistry client (03671c6)
  • add request timeout to load_web_page (792775f)
  • core: migrate core and CLI to enterprise parameters (68221f0)
  • Create GEPARootAgentOptimizer (654145a)
  • eval: expose user_simulator_config in generate_responses (e7a673c)
  • gemma4: support Gemma4 in Gemini (573f043)
  • integrations: Add E2BEnvironment for remote sandbox workspaces (92d608f)
  • labs: add experimental Antigravity SDK agent wrapper (4cb27fd)
  • lazily initialize the Vertex AI client in GCPSkillRegistry, and fix the import path for vertexai (65dca53)
  • live: Handle input transcription differently for Gemini Live 3.1 models (048deea)
  • live: support Live API translation config in RunConfig (463040f)
  • Migrate McpToolset to AsyncAuthorizedSession for mTLS support (fe497a4)
  • plugins: ADK 2.0 minimum producer cut for the BigQuery Agent Analytics plugin (e2676fc)
  • report cached token counts for Anthropic and OpenAI models (b15c8a0)
  • telemetry: support per-request OpenTelemetry configuration (abcaa08)
  • Update gcp_auth client UI to support Remote Agents (57bdecf)
  • utils: add GOOGLE_GENAI_USE_ENTERPRISE env var with deprecation fallback (4e85e9c)

Bug Fixes

  • a2a: Preserve execution metadata in final events (e90b119)
  • a2a: render HITL interrupt when prompt is in a data part (b9e7fca)
  • a2a: set final=True for error TaskStatusUpdateEvent in event_converter (5efe53d)
  • a2a: suppress part_metadata in Vertex AI mode (065f4ae)
  • add a2a as a required dependency for agent_engine deployment (d2ebacb)
  • adk: propagate exceptions from run_node in standalone mode (63841c3)
  • adk: propagate isolation_scope to prevent history filtering loops (f39d75b)
  • agents: await cancelled tasks in _merge_agent_run_pre_3_11 to prevent aclose() RuntimeError (9310ba7)
  • api-registry to fetch all services (81b8067), closes #5478
  • artifacts: Support nested API names (b99546b)
  • auth: handle missing client-credentials scopes safely (a546bcf), closes #5345
  • avoid UserWarning in _build_response_log when response has funct… (f022307)
  • call to sanitize schema for complex union types (9808451)
  • ci: add repository check to prevent workflows from running on forks (90bd38f)
  • ci: Resolve missing sqlalchemy error in adk_release_analyzer (107dc38)
  • cli: Serialize LiteLlm graph models safely (c1e852f)
  • conformance: normalize tool declarations in replay verification (dd97e76)
  • Default subagents to chat mode in build_node (ad560ce)
  • deps: Require otel google-genai instrumentor >=0.7b1 for genai 2.x (2b8c80c)
  • eval: handle failed inference results without invocations (9a6cf60)
  • eval: handle unevaluated final response v2 results (5cfef01)
  • eval: include function-call events in invocation_events when skip_summarization is set (5b16a86)
  • eval: preserve custom eval metadata (780b0ab)
  • Extract grounding_metadata from Live API server_content (8a294af)
  • Fix silent dead end when conditional routes are unmatched (6af4562)
  • Fix typing for create_client in mcp_session_manager (c6546a7)
  • fix vertex_ai_session_service crashing when Agent Engine passes full resource names instead of short session IDs (60c55ad)
  • flows: terminate invocation at tool-level EUC (883ff98)
  • Format files to fix pre-commit failures (395848a)
  • Format the files (9670ce2)
  • gate pr-triage secrets on same-repository pull_request_target (0d20b7c)
  • handle missing agent name in readonly context (a890399)
  • improve error message when beautifulsoup4/lxml not installed for load_web_page (d9f189c), closes #4852
  • live: history_config rejection on Vertex/Enterprise Live sessions (8f85260)
  • live: propagate output token count in live API usage metadata (7e8965d)
  • log diagnostics for empty or unparseable rubric auto-rater output (fe56f31), closes #5732
  • make DatabaseSessionService visible in API docs (69ecf07), closes #4331
  • Mock google.auth.default in test_fast_api.py (a7ceb3f)
  • models: pass NOT_GIVEN to Anthropic when no system_instruction (3f505d2), closes #5318
  • models: surface error when model returns STOP with empty content (ff95d2f)
  • models: surface error when model returns STOP with empty content (423cd28)
  • Move google-cloud-parametermanager to optional dependencies (0856093)
  • Only send grounding_metadata for 3.1 live at the end of each turn (1f2e59b)
  • otel: Handle empty contents in experimental semconv (d611f11)
  • planners: allow BuiltInPlanner subclasses to override process_planning_response (f8e9195)
  • planners: keep all leading parallel function calls (054da5d)
  • plugins: write BigQuery analytics rows when invocation agent is None (bc08f46)
  • preserve empty GCS text artifacts (8e2b06d)
  • Preserve event details when output is delegated (a5a3f2e)
  • preserve function call ids for litellm models (1ad348d), closes #2621
  • prevent compaction from orphaning function responses (71b936b)
  • prevent ReDoS in code block extraction (910e1c1)
  • propagate model_version and other metadata in streaming responses (342b59d)
  • remove developer notes from transfer_to_agent docstring (2a0b4e7)
  • remove live event buffering in runner (4340208)
  • remove the issue/PR analyze and fix agent workflows (9127feb)
  • remove the issue/PR triage and fix agent workflows (66730e9)
  • Reset retry attempt counter on successful connection (ca8baf1)
  • restore GitHub-only changes dropped during v2 bring-over (cb48d01)
  • sessions: Further fixes for DatabaseSessionService (f0ec997)
  • sessions: honor zero recent events in database service (d9a672e)
  • sessions: Prevent MissingGreenlet after append_event with asyncpg (06959b9)
  • Set role='model' for request_input event Content (0c6974c)
  • skills: enforce utf-8 encoding when materializing skill files on Windows (0cb4c81)
  • skip crewai test on ImportError for pytest 9.1 compatibility (4aaf494)
  • Stop interpolating release analyzer workflow inputs into shell commands (5a129a4)
  • support non-Latin text in InMemoryMemoryService search (be1425b)
  • surface MALFORMED_FUNCTION_CALL so on_model_error can recover (2fffcd9)
  • tests: skip bash tool tests on Windows (9371f1b)
  • tools: dereference draft-07 definitions in MCP tool schemas (c11ac7d)
  • tools: handle missing 'request' key in AgentTool.run_async fallb… (8b09c48)
  • update model to gemini-3.5-flash in session_state_agent sample (0aca7bf)
  • use correct 'content' key in sandbox code executor input files (6262f94)
  • utils: Preserve decorated type for @experimental and @working_in_progress (30d1910)
  • utils: Preserve decorated type for @experimental and @working_in_progress (1ff0158)
  • workflow: Preserve explicit single-turn contents (59f7bdf)
  • workflow: Prevent replay divergence hang in sequence barrier (d88192c)
  • workflow: Prevent Shared InvocationContext branch mutation (5c46937)
  • workflow: Prevent silent drain of routed nodes in wait_for_output (ef8a5de)

Performance Improvements

  • flows: skip async-rearrange when no function_responses (70b314b)
  • test: Speed up unit test suite via parallelism and dedup (4e4bf84)

Code Refactoring

  • Add diversion logic based on the auth provider resource name (d4ba521)
  • Implement the auth provider using Agent Identity Credentials service (dc6fbd8)
  • Move the IamConnectorCredential service depedency to a seperate file (c423fcd)
  • otel: Add pure functions for constructing stable and experimental semconv logs (23c0826)
  • Remove unused imports across src (b79096a)
  • Separate PR analysis from triage for automation (10e5f07)
  • telemetry: change agent and tool execution duration metrics from milliseconds to seconds (623c9bd)

Documentation

  • add beginner explanation for single agent example (225fafc)
  • add PyPI, Python version, downloads, and docs badges to README (04d278a)
  • add unit guides for event.py, request_input.py and update adk-unit-guide skill (7d74a0a)
  • add unit guides for task mode (f84a5b5)
  • Align Python version to 3.10+ and update README badges (d3c21d7)
  • clarify context cache min_tokens gating and 4096-token minimum (8c92cde)
  • Fix ADK release analyzer session db saving error (991431f)
  • fix formatting in multi-agent sample READMEs (fa82929)
  • fix triaging agent sample typo (ef395c7)
  • openapi: improve docs for session model (7a11b50)
  • remove stale -b v2 flag from clone command in CONTRIBUTING.md (2e28e5d)
  • skills: fix broken refs in adk-workflow skill (24a1b26)
  • update llms.txt and remove build script (c66dc1d)
  • Upgrade ADK release analyzer agent to use gemini-3.1-pro-preview model (d72bb7d)

Don't miss a new adk-python release

NewReleases is sending notifications on new releases.