python Google ADK (Python) Releases · · 2.4.0

google/adk-python v2.4.0 release highlights

sdkaiazuredeprecationmediapython-agentic
feature patch

The google/adk-python library has released version 2.4.0, introducing significant new features and bug fixes. Key enhancements include mTLS support for Google API tools, added support for OpenAI Responses API, and new capabilities for managing AI model interactions and workflows. These updates are relevant for developers utilizing the ADK library for integrating with Google Cloud services and AI models.

  • Add mTLS support for DiscoveryEngineSearchTool
  • Add mTLS support to Google API tools
  • add OpenAI Responses API support in labs , closes #3209
  • Add support for reusing an existing SQLAlchemy AsyncEngine in DatabaseSessionService
  • add support for session TTL and expiration in Vertex AI session service
Features (29)
  • Add mTLS support for DiscoveryEngineSearchTool
  • Add mTLS support to Google API tools
  • add OpenAI Responses API support in labs , closes #3209
  • Add support for reusing an existing SQLAlchemy AsyncEngine in DatabaseSessionService
  • add support for session TTL and expiration in Vertex AI session service
  • adk add Anthropic effort config handling, thinking parameter propagation, and conflict mitigation
  • agents add ManagedAgent backed by the Managed Agents API
  • bigquery expose thinking and tool-use token columns in analytics views
  • bigtable Support parameterized views with secure parameter inj…
  • HTTP traces for MCP server requests/errors
  • Implement Workflow as Tool core feature
  • integrations Add DaytonaEnvironment for remote sandbox workspaces
  • interactions stream thought, media, code-exec and function-result deltas
  • interactions surface streamed grounding and final usage metadata
  • memory add Vertex AI load_profiles tool
  • models Add configuration options to Gemini class , closes #3813
  • models surface and recover environment_id from interactions
  • plugins add otel correlation, custom_metadata allowlist, and column projection to BigQuery analytics
  • scripts add check for private-by-default new Python files
  • support file_data URI references in GcsArtifactService
  • support mTLS and GOOGLE_API_USE_MTLS_ENDPOINT for GDA client
  • Support passing dynamic custom headers to LiteLLM via RunConfig
  • Support provider-prefixed Gemini model IDs
  • tools add response_scheduling to control Live function response behavior
  • tools exposed configurable parameter as property in McpToolset
  • tools resolve built-in tools for managed-agent requests
  • tools Support tuple tool parameters
  • utils Add support for nested state access in template injection
  • workflow Allow ToolNode to accept JSON string or Content inputs
Enhancements (4)
  • avoid deepcopy of session contents when building LLM requests
  • create SQLite session schema once per service instance
  • remove state injection when instruction has no placeholders
  • skip event query in DB get_session when num_recent_events is 0
Fixes (116)
  • adapt interactions conversion to google-genai 2.9 SDK changes
  • Add credential_key to ApplicationIntegrationToolset and IntegrationConnectorTool , closes #4553
  • Add debug level logging to mcp sse agent sample
  • add DNS-rebinding protection to _OriginCheckMiddleware
  • add module blocklist for YAML agent config code references
  • add parameter validation for sync tools in ADK functions.py
  • add trailing newline to check_new_py_files.sh
  • Address mypy failures in google_api_tool/
  • agents persist output_key when before_agent_callback short-circuits LlmAgent
  • agents preserve text streamed before tool calls in output_key
  • agents prevent path traversal in AgentTool config_path resolution
  • ApplicationIntegrationTool implement dynamic mTLS endpoint resolution
  • apply run_config custom_metadata to user event in node runtime
  • artifacts Preserve .text on GcsArtifactService load , closes #3157
  • auth allow configuring OAuth prompt parameter
  • auth strip redirect_uri from credential_key
  • avoid mutating event validation input
  • Avoid overwriting existing isolation scope in stamp_event_branch_context
  • avoid yielding a None function-response event in live mode
  • catch RecursionError in safe JSON serialization helpers , closes #5411
  • check if transfer target is a sibling agent
  • ci Restrict GitHub Actions to main/v1 branches and main repository
  • cli detailed error message on sse stream specifying stacktrack (error type on client side as well)
  • cli enable interspersed option parsing for cloud_run command
  • cli Ensure ADK compatibility in agent engine requirements , closes #5966
  • cli respect ignore files in adk deploy commands
  • cli support flat-module agents in _determine_agent_language
  • concatenate list values in deep_merge_dicts during parallel tool call merge , closes #5190
  • concatenate list values in deep_merge_dicts during parallel tool call merge , closes #5190
  • Constrain artifact references to the caller scope , closes #6124 #6125
  • correct misleading workflow-agent deprecation messages
  • Derive sandbox reasoning engine from template or snapshot name
  • drop nonexistent log_query tool from session_state_agent sample
  • emit standard OTel cloud.resource_id for Agent Engine telemetry , closes #6247
  • Enable history_config on Vertex AI now that it is supported
  • enforce agent-config args denylist when loaded under adk web
  • ensure AgentTool text output when skip_summarization is True , closes #3881
  • exclude live HTTP clients from trace serialization
  • exclude scripts/ from pre-commit compliance checks
  • exit connection cleanly on expected GoAway signal in bidi streaming
  • fingerprint cacheable context prefix
  • firestore preserve update timestamps in list_sessions
  • Fix branch parsing and unify branch stamping
  • Fix Code Generation Template Injection via Filenames
  • Fix error swallowing in MCP session context
  • Fix event loop closed and thread leak errors in unit tests
  • Fix instructions_utils matching invalid nested paths
  • Fix MCP debug client factory compatibility with keyword-only factories
  • fix polling loop in IAM Connector Credentials Provider when consent is pending
  • Fix regression in instructions_utils placeholder matching
  • Fix Vertex AI Live API session replay on reconnect / modality switch
  • guard against None converter results in RemoteA2aAgent
  • guard against None converter results in RemoteA2aAgent handlers
  • guard user_content assignment against None in EvaluationGenerator
  • Handle empty message in LiteLLM response
  • handle Pydantic models in safe_json_serialize for tool tracing , closes #4629
  • harden ContainerCodeExecutor sandbox by default
  • implement dynamic mtls endpoint resolution for parameter manager
  • implement dynamic mtls endpoint resolution for secret manager
  • import App lazily in _resolve_app to fix legacy Runner NameError
  • in mcp mtls logic, check for authorization header case insensitively
  • LiteLLM Claude thinking blocks with display: "omitted" were lost
  • Litellm preserve streamed reasoning deltas in LiteLLM adapter
  • litellm parse DeepSeek-V3 proprietary inline tool-call tokens
  • LiteLlm recognize assistant- prefix as valid OpenAI file ID , closes #5664
  • LiteLlm recognize assistant- prefix as valid OpenAI file ID
  • live fix the return type hint of handle_function_calls_live
  • live forward thinking config
  • live keep streaming tool yields from completing turns
  • Make EUC request args JSON-serializable
  • map A2A Message.role to correct GenAI content role
  • mcp await async MCP header providers , closes #6090
  • mcp propagate trace context in default streamable HTTP client , closes #4768
  • migrate AgentRegistry base URLs from v1alpha to v1
  • models gate Gemini cache creation on cacheable prefix tokens
  • N sized sliding window
  • preserve Anthropic thinking blocks and signatures in LiteLLM round-trip
  • preserve JSON-native types in A2A _serialize_value() , closes #5183
  • prevent crash when parsing default values for typing.Any parameters
  • prevent empty responses after load_skill
  • prevent VertexAiRagRetrieval from blocking the event loop , closes #5033
  • prevent warning logs when cancelling MCP session runner task
  • propagate Gemini grounding metadata from ModelResponse
  • raise ValueError for unsupported MIME types in file_data URI path
  • reconnect on live connection 1011 error , closes #5525
  • recurse into JSON-native containers in A2A _serialize_value()
  • 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

  • remove unit test with wrong assumption about claude thinking parts
  • remove unused userinfo_endpoint from GoogleApiToolset OIDC config
  • restore auth_token initialization for secret and parameter manager clients
  • Rollback instruction util refactoring as its breaking internal customers
  • sandbox nested persona template rendering in evaluation prompts
  • scope single-turn node inputs to workflow branch
  • security enable Jinja2 autoescape to prevent XSS in gepa sample
  • send correct field names for sandbox input files
  • sessions drop unsupported part_metadata before Vertex appendEvent , closes #6014
  • sessions strip tzinfo for MariaDB in DatabaseSessionService
  • Set persist-credentials to false in release-update-adk-web workflow
  • strip tzinfo from datetime for MySQL in create_session
  • surface error for empty STOP model turn in non-streaming mode , closes #5631
  • telemetry always export Agent Engine logs to stdout
  • telemetry emit gen_ai.workflow.nested for nested workflows
  • terminate infinite retry loop in RunSkillScriptTool on SCRIPT_NOT_FOUND , closes #5684
  • tools accept dict output_schema in SetModelResponseTool
  • tools handle tuple schemas in function parsing fallback
  • Truncate MCP http debug logs if greater than 1000 chars
  • Update custom gemini llm connection logic to be used for all 3_x models, not just 3.1
  • update litellm dependency constraint to >=1.84.0
  • update mtls_utils import in secret_client.py
  • use branch-scoped events for auth responses
  • use exchanged OAuth credential in ApplicationIntegrationToolset
  • use Modality enum for RunConfig.response_modalities
  • use mTLS endpoint for Google OAuth2 token requests
  • Use RELEASE_PAT for checkout in release-update-adk-web workflow
  • validate local eval path segments
  • Wrap math formulas in math blocks in retry config guide
Maintenance (13)
  • Add manual batch mode trigger for ADK Pull Request Triaging workflow
  • clarify is_final_response() is a public helper , closes #4016
  • fix typo in per-turn user simulator quality prompt
  • index missing reference guides in adk-agent-builder SKILL.md
  • remove trailing whitespace in dynamic_nodes guide
  • samples Add ManagedAgent code-execution sample
  • samples Add ManagedAgent sample using server-side google_search
  • Sort PRs by update time in list_untriaged_pull_requests
  • Streamline open_source_workspace/AGENTS.md
  • Update ADK Pull Request Triaging Agent workflow to run periodically
  • update GoogleSearchTool docstring to refer to Gemini models , closes #12345
  • Update sample-creator skill with agent topology graph rule
  • workflow Add and update workflow developer guides
Read the original announcement →

https://github.com/google/adk-python/releases/tag/v2.4.0

Related releases