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
definitionsin 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)