github google/adk-python v2.4.0

latest releases: v1.36.0, v1.36.1
3 hours ago

2.4.0 (2026-07-07)

Features

  • Add mTLS support for DiscoveryEngineSearchTool (8ba0e6a)
  • Add mTLS support to Google API tools (3466586)
  • add OpenAI Responses API support in labs (6b831d5), closes #3209
  • Add support for reusing an existing SQLAlchemy AsyncEngine in DatabaseSessionService (f4c7e4c)
  • add support for session TTL and expiration in Vertex AI session service (49d4441)
  • adk: add Anthropic effort config handling, thinking parameter propagation, and conflict mitigation (4c862b9)
  • agents: add ManagedAgent backed by the Managed Agents API (cf91b84)
  • bigquery: expose thinking and tool-use token columns in analytics views (c14258d)
  • bigtable: Support parameterized views with secure parameter inj… (14a24f2)
  • HTTP traces for MCP server requests/errors (4c4f77a)
  • Implement Workflow as Tool core feature (1263ed6)
  • integrations: Add DaytonaEnvironment for remote sandbox workspaces (df6baf4)
  • interactions: stream thought, media, code-exec and function-result deltas (b2dda6e)
  • interactions: surface streamed grounding and final usage metadata (6a50b8d)
  • memory: add Vertex AI load_profiles tool (fb2b3af)
  • models: Add configuration options to Gemini class (037ec12), closes #3813
  • models: surface and recover environment_id from interactions (81f9f2e)
  • plugins: add otel correlation, custom_metadata allowlist, and column projection to BigQuery analytics (38d715c)
  • scripts: add check for private-by-default new Python files (63561ce)
  • support file_data URI references in GcsArtifactService (43115b2)
  • support mTLS and GOOGLE_API_USE_MTLS_ENDPOINT for GDA client (e85a7b2)
  • Support passing dynamic custom headers to LiteLLM via RunConfig (000d74d)
  • Support provider-prefixed Gemini model IDs (816a87f)
  • tools: add response_scheduling to control Live function response behavior (7443bfa)
  • tools: exposed configurable parameter as property in McpToolset (cca8c56)
  • tools: resolve built-in tools for managed-agent requests (f11d19d)
  • tools: Support tuple tool parameters (a57c3e4)
  • utils: Add support for nested state access in template injection (94c43a2)
  • workflow: Allow ToolNode to accept JSON string or Content inputs (4e44632)

Bug Fixes

  • adapt interactions conversion to google-genai 2.9 SDK changes (9f3aeef)
  • Add credential_key to ApplicationIntegrationToolset and IntegrationConnectorTool (c6a94b8), closes #4553
  • Add debug level logging to mcp sse agent sample (3962d0b)
  • add DNS-rebinding protection to _OriginCheckMiddleware (9a4f479)
  • add module blocklist for YAML agent config code references (6a5be34)
  • add parameter validation for sync tools in ADK functions.py (9b9d27d)
  • add trailing newline to check_new_py_files.sh (21512ea)
  • Address mypy failures in google_api_tool/ (5301ffa)
  • agents: persist output_key when before_agent_callback short-circuits LlmAgent (0e263f1)
  • agents: preserve text streamed before tool calls in output_key (5a0b4af)
  • agents: prevent path traversal in AgentTool config_path resolution (171ae9e)
  • ApplicationIntegrationTool: implement dynamic mTLS endpoint resolution (37ca6fb)
  • apply run_config custom_metadata to user event in node runtime (066fbce)
  • artifacts: Preserve .text on GcsArtifactService load (ba51ff2), closes #3157
  • auth: allow configuring OAuth prompt parameter (ac99770)
  • auth: strip redirect_uri from credential_key (ffa1843)
  • avoid mutating event validation input (6b385e4)
  • Avoid overwriting existing isolation scope in stamp_event_branch_context (798207a)
  • avoid yielding a None function-response event in live mode (4d88a52)
  • catch RecursionError in safe JSON serialization helpers (5515800), closes #5411
  • check if transfer target is a sibling agent (fa18d26)
  • ci: Restrict GitHub Actions to main/v1 branches and main repository (8c4173e)
  • cli: detailed error message on sse stream specifying stacktrack (error type on client side as well) (56b84e1)
  • cli: enable interspersed option parsing for cloud_run command (7b049b9)
  • cli: Ensure ADK compatibility in agent engine requirements (ea772b9), closes #5966
  • cli: respect ignore files in adk deploy commands (ee79e71)
  • cli: support flat-module agents in _determine_agent_language (7a553b7)
  • concatenate list values in deep_merge_dicts during parallel tool call merge (fda2347), closes #5190
  • concatenate list values in deep_merge_dicts during parallel tool call merge (1ff84eb), closes #5190
  • Constrain artifact references to the caller scope (f863150), closes #6124 #6125
  • correct misleading workflow-agent deprecation messages (53a8ab1)
  • Derive sandbox reasoning engine from template or snapshot name (5afa9db)
  • drop nonexistent log_query tool from session_state_agent sample (ade8577)
  • emit standard OTel cloud.resource_id for Agent Engine telemetry (8fc25f1), closes #6247
  • Enable history_config on Vertex AI now that it is supported (2920145)
  • enforce agent-config args denylist when loaded under adk web (e506fa6)
  • ensure AgentTool text output when skip_summarization is True (b983fcf), closes #3881
  • exclude live HTTP clients from trace serialization (59868ea)
  • exclude scripts/ from pre-commit compliance checks (c91fc75)
  • exit connection cleanly on expected GoAway signal in bidi streaming (4d165ef)
  • fingerprint cacheable context prefix (7c7f1e7)
  • firestore: preserve update timestamps in list_sessions (99ba8ce)
  • Fix branch parsing and unify branch stamping (9e3b43f)
  • Fix Code Generation Template Injection via Filenames (e042b8d)
  • Fix error swallowing in MCP session context (ccb8138)
  • Fix event loop closed and thread leak errors in unit tests (2f2e03b)
  • Fix instructions_utils matching invalid nested paths (20ba01c)
  • Fix MCP debug client factory compatibility with keyword-only factories (1ad8864)
  • fix polling loop in IAM Connector Credentials Provider when consent is pending (a614507)
  • Fix regression in instructions_utils placeholder matching (9ecbaed)
  • Fix Vertex AI Live API session replay on reconnect / modality switch (c007a87)
  • guard against None converter results in RemoteA2aAgent (23ff66e)
  • guard against None converter results in RemoteA2aAgent handlers (2e3d717)
  • guard user_content assignment against None in EvaluationGenerator (6bc9c9f)
  • Handle empty message in LiteLLM response (d3e793f)
  • handle Pydantic models in safe_json_serialize for tool tracing (25d666a), closes #4629
  • harden ContainerCodeExecutor sandbox by default (0a9ce0f)
  • implement dynamic mtls endpoint resolution for parameter manager (62b9700)
  • implement dynamic mtls endpoint resolution for secret manager (5d4a13f)
  • import App lazily in _resolve_app to fix legacy Runner NameError (7481d07)
  • in mcp mtls logic, check for authorization header case insensitively (3870032)
  • LiteLLM Claude thinking blocks with display: "omitted" were lost (7461863)
  • Litellm preserve streamed reasoning deltas in LiteLLM adapter (b9625bf)
  • litellm: parse DeepSeek-V3 proprietary inline tool-call tokens (c5b2caa)
  • LiteLlm: recognize assistant- prefix as valid OpenAI file ID (ea325c7), closes #5664
  • LiteLlm: recognize assistant- prefix as valid OpenAI file ID (796964a)
  • live: fix the return type hint of handle_function_calls_live (9865e2b)
  • live: forward thinking config (71d8c84)
  • live: keep streaming tool yields from completing turns (07aa1e0)
  • Make EUC request args JSON-serializable (a181a39)
  • map A2A Message.role to correct GenAI content role (fe08a9f)
  • mcp: await async MCP header providers (c01e538), closes #6090
  • mcp: propagate trace context in default streamable HTTP client (431e3c2), closes #4768
  • migrate AgentRegistry base URLs from v1alpha to v1 (82432a3)
  • models: gate Gemini cache creation on cacheable prefix tokens (1070036)
  • N sized sliding window (d00ad67)
  • preserve Anthropic thinking blocks and signatures in LiteLLM round-trip (febb250)
  • preserve JSON-native types in A2A _serialize_value() (139c700), closes #5183
  • prevent crash when parsing default values for typing.Any parameters (e360241)
  • prevent empty responses after load_skill (7c79230)
  • prevent VertexAiRagRetrieval from blocking the event loop (5898f37), closes #5033
  • prevent warning logs when cancelling MCP session runner task (4aa0fd8)
  • propagate Gemini grounding metadata from ModelResponse (c303c62)
  • raise ValueError for unsupported MIME types in file_data URI path (42eceb3)
  • reconnect on live connection 1011 error (f36d257), closes #5525
  • recurse into JSON-native containers in A2A _serialize_value() (c08debc)
  • refactor _redact_file_uri_for_log to dynamically extract file ID prefixes (file-, assistant-). This ensures compatibility with both current prefixes and future OpenAI/Azure file ID types. (ea325c7)
  • remove unit test with wrong assumption about claude thinking parts (94fcdbb)
  • remove unused userinfo_endpoint from GoogleApiToolset OIDC config (1509dcf)
  • restore auth_token initialization for secret and parameter manager clients (46a2181)
  • Rollback instruction util refactoring as its breaking internal customers (59fe9b3)
  • sandbox nested persona template rendering in evaluation prompts (30493ba)
  • scope single-turn node inputs to workflow branch (8d389e2)
  • security: enable Jinja2 autoescape to prevent XSS in gepa sample (a721c1e)
  • send correct field names for sandbox input files (2b7e08a)
  • sessions: drop unsupported part_metadata before Vertex appendEvent (40a0279), closes #6014
  • sessions: strip tzinfo for MariaDB in DatabaseSessionService (2f799d5)
  • Set persist-credentials to false in release-update-adk-web workflow (79b8923)
  • strip tzinfo from datetime for MySQL in create_session (a012bb7)
  • surface error for empty STOP model turn in non-streaming mode (932a9b5), closes #5631
  • telemetry: always export Agent Engine logs to stdout (e6df097)
  • telemetry: emit gen_ai.workflow.nested for nested workflows (20197de)
  • terminate infinite retry loop in RunSkillScriptTool on SCRIPT_NOT_FOUND (89d9bda), closes #5684
  • tools: accept dict output_schema in SetModelResponseTool (#5469) (d69dedd)
  • tools: handle tuple schemas in function parsing fallback (4fa7741)
  • Truncate MCP http debug logs if greater than 1000 chars (3ebef82)
  • Update custom gemini llm connection logic to be used for all 3_x models, not just 3.1 (8aff514)
  • update litellm dependency constraint to >=1.84.0 (a912306)
  • update mtls_utils import in secret_client.py (0b79f8d)
  • use branch-scoped events for auth responses (f706a1e)
  • use exchanged OAuth credential in ApplicationIntegrationToolset (e76df3d)
  • use Modality enum for RunConfig.response_modalities (5c8c55a)
  • use mTLS endpoint for Google OAuth2 token requests (ffe41f0)
  • Use RELEASE_PAT for checkout in release-update-adk-web workflow (28b7721)
  • validate local eval path segments (7b87f91)
  • Wrap math formulas in math blocks in retry config guide (a40f199)

Performance Improvements

  • avoid deepcopy of session contents when building LLM requests (400f512)
  • create SQLite session schema once per service instance (10a2cc5)
  • remove state injection when instruction has no placeholders (59970b6)
  • skip event query in DB get_session when num_recent_events is 0 (7e8191a)

Documentation

  • Add manual batch mode trigger for ADK Pull Request Triaging workflow (dbd4bb0)
  • clarify is_final_response() is a public helper (978be4b), closes #4016
  • fix typo in per-turn user simulator quality prompt (9a79fa1)
  • index missing reference guides in adk-agent-builder SKILL.md (c922b08)
  • remove trailing whitespace in dynamic_nodes guide (a7377b4)
  • samples: Add ManagedAgent code-execution sample (527e3c1)
  • samples: Add ManagedAgent sample using server-side google_search (969909f)
  • Sort PRs by update time in list_untriaged_pull_requests (8679aa8)
  • Streamline open_source_workspace/AGENTS.md (ea2ea73)
  • Update ADK Pull Request Triaging Agent workflow to run periodically (b3f278a)
  • update GoogleSearchTool docstring to refer to Gemini models (8b011f9), closes #12345
  • Update sample-creator skill with agent topology graph rule (7423101)
  • workflow: Add and update workflow developer guides (e5c7d20)

Don't miss a new adk-python release

NewReleases is sending notifications on new releases.