Google ADK Python 2.7.0 Enhances Agent-Model Communication and Tooling
Google ADK Python v2.7.0 delivers correctness improvements for agent-model interaction, enhancing how agents send and receive data from large language models. This release enables models to declare their own tool capabilities, allows tools to return diverse media types directly, and improves conversation history preservation for models like Gemini. These updates boost agent robustness and versatility across various LLM providers. A notable breaking change moves the `pyarrow` dependency from the `gcp` extra to a new `bigquery-analytics` extra, requiring users of `BigQueryAgentAnalyticsPlugin` to update their installation.
- →move pyarrow out of the gcp extra
- →accept a pre-configured client on the labs OpenAI model , closes #4180
- →add express mode telemetry logging for ADK CLI onboarding
- →add gen_ai.agent.name attribute to execute_tool spans
- →add Jinja2 templating with use_jinja2 flag , closes #2942
Breaking changes (2) ›
pyarrow left the gcp extra: it lives in the new bigquery-analytics extra, which takes roughly 50 MB off pip install google-adk[gcp]. If you use BigQueryAgentAnalyticsPlugin, install google-adk[bigquery-analytics]
- deps move pyarrow out of the gcp extra
Features (34) ›
- accept a pre-configured client on the labs OpenAI model , closes #4180
- add express mode telemetry logging for ADK CLI onboarding
- add gen_ai.agent.name attribute to execute_tool spans
- add Jinja2 templating with use_jinja2 flag , closes #2942
- add option to save eval results to CSV , closes #2652
- add parent terminal grouping and TTL pruning to ADK CLI telemetry
- agent add native task mode support to root LlmAgent
- Allow clients using the load_artifacts_tool to customize how attachment data is fed to the LLM
- capture TTY connectivity in CLI environment telemetry
- cli auto-discover test_config.json for single eval file in adk eval , closes #4410
- enforce unit guide requirement for new Python files
- environment Add support for executing skill scripts within an Environment
- evaluation add optional eval set result persistence to AgentEvaluator
- eventarc Support Context callables and correct OMIT behavior
- Extend HTTP trace debugging to MCP Toolset operations
- honor model-declared capabilities when pairing an output schema with tools
- honor return_direct on Langchain tools wrapped by LangchainTool , closes #2157
- Introduce a capability reporting system for LLM models
- labs/antigravity allow mode='single_turn' AntigravityAgents to be sub-agents
- let McpToolset reuse the MCP server's tool list
- let tools return media in the function response
- live forward safety_settings from generate_content_config to the Live API
- plugins add BigQuery Agent Analytics delivery and termination observability
- Promote Data Agent tools to stable
- record implicit vs explicit context cache type in analytics
- skills support non-blocking skill loading in async runtimes , closes #6057
- Stop using the obsolete Gemini 1.x / Gemini 2+ model-id check in ADK
- Stop using the obsolete Gemini 1.x / Gemini 2+ model-id check in ADK url context tool
- support audio_stream_end for realtime input
- Support elicitation_callback in McpToolset
- telemetry add feature gate for experimental telemetry
- telemetry Expand load_skill telemetry
- update skill model to include its origin
- warn when agent transfer runs without a context cache config
Enhancements (6) ›
- avoid Pydantic deep-copy / dump-validate round-trips and precompile regex
- avoid quadratic streaming accumulation in the LiteLLM adapter
- drop use_attribute_docstrings from LlmCapabilities
- improve adk import loading
- memoize the model adapter resolved from LlmAgent.model
- reuse one execute_sql function object across BigQuery toolsets
Fixes (158) ›
- a2a adopt a directly supplied agent card's description
- a2a flatten human-input responses on resume to avoid mixing them with text
- add .adk/ to the .gitignore generated by adk create , closes #6647
- add 20MB file size validation to SaveFilesAsArtifactsPlugin , closes #3751
- Add regional and MREP endpoint routing for DataAgentToolset
- adk share a single component-owner map between the triaging agents
- allow injecting credentials into VertexAiMemoryBankService
- artifacts list artifacts nested under another artifact from disk
- artifacts reject rooted, drive-qualified and traversing artifact paths
- artifacts sort and guard GCS artifact version listing
- artifacts stop conflating an artifact with the artifacts nested under it
- attribute a compaction summary to the agent reading it
- auth set a request timeout on OAuth2 token exchange and refresh
- block the whole standard library in agent-config code references
- bound Apigee completions HTTP client timeout and redirects
- bound the entries and bytes read from a skill zip archive
- bqaa skip synchronous log flush to prevent blocking responses
- call build_planning_instruction on custom planners
- ci run the update-constraints hook in check mode
- ci stop CI resolving against half-published PyPI releases
- cli implement early telemetry recording for long-running web servers and log successful exit code upon routine teardown
- cli normalize trigger user ids for sessions
- cli stream_reasoning_engine raises StopIteration RuntimeError on sync generators
- cli track full server duration and log routine Ctrl+C termination as success
- cli update gcloud command to use beta flag
- coerce non-string enum values to strings on string-typed Gemini schemas , closes #3401
- collect eval state from workflow nodes
- constrain the RPC targets of a network-fetched A2A agent card
- core stop the Cloud Run sandbox executor waiting forever
- declare the redis extra that RedisSessionService asks for
- deps exclude LangGraph releases with unsafe checkpoint loading
- deps exclude nltk 3.10.1, which breaks venvs living inside the working directory
- deps stop the published constraints from pinning google-adk itself
- disable dev endpoints for production deployment both AE and Cloud Run
- emit additional_properties with value type schema in dict branch , closes #4868
- eval fail the eval when an agent crashes before any metric runs
- eval grade judge metrics against the criterion's threshold
- eval grade rouge metric against its criterion threshold
- evaluation validate path segments in GCS eval set/result managers
- fix inconsistencies in sample paper content and naming , closes #6651
- Fix permissions for release cherry pick workflow
- flows count compositional function calling against max_llm_calls
- flows inject transfer_to_agent tool for HITL confirmation resume , closes #5633
- gate --sandbox-launcher behind gcloud beta run deploy , closes #6511
- guard reads in the local API server against DNS rebinding
- handle non-numeric OpenAPI response keys in return-doc generation
- handle optional and union pydantic models with string annotations
- honor Apigee request timeouts
- honor num_recent_events=0 in VertexAiSessionService.get_session
- ignore unsafe A2A peer-supplied event actions metadata
- import jinja2 lazily so it is not a required dependency
- install every optional runtime dependency with the all extra
- isolate per-toolset failures in additional-tools resolution
- keep agent instructions out of the published A2A agent card
- keep preloaded context turn-scoped
- keep regular-tool FRs on mixed task turns , closes #6581
- keep server-side tool call parts in conversation history
- keep subpackages reachable as attributes of a lazy package
- keep thought signature parts in conversation history
- keep thought signatures when merging streamed text
- Key directory-loaded skill resources with forward slashes
- key in-memory memory store by app_name and user_id tuple
- kill runaway code on timeout in container and local executors
- labs/antigravity report node input and output from AntigravityAgent
- lift file references and nested parts out of tool results , closes #2577
- litellm convert http_options.timeout from milliseconds to seconds
- live end the Live agent when task_completed is called in parallel
- live transfer to the target agent regardless of function response order
- lower oneOf to anyOf so a union schema reaches Gemini intact
- make advertised tool names match the names tools are registered under
- make parallel worker failure propagation test deterministic
- mark the session type decorators as safe for statement caching
- mcp bound the wait for an MCP session to become ready
- mcp reject stdio MCP servers declared in agent configs by default
- memory scope Vertex RAG retrieval to the requesting app and user
- models honor an LLM registered after that name was resolved
- models keep streamed usage metadata when a later chunk reports none
- models report a missing Anthropic credential when the client is built
- models report Anthropic thinking tokens without double counting output
- models use the reported total token count for interactions usage
- models wrap Anthropic rate limit errors
- narrow broad except in OAuth2 credential refresher
- omit HTTP options from Gemini debug logs
- order database sessions deterministically , closes #6272
- order list_sessions results by last update time , closes #6272 #6431
- prefer application/json for OpenAPI return type docs
- preserve all tool results for parallel function calls , closes #6589
- preserve function-tool preflight in thread pool
- preserve per-part media fields across A2A conversion
- preserve required body properties , closes #6503
- preserve turns when stale compaction loses
- prevent update_constraints.sh from rewriting files when dependencies are unchanged
- propagate context cache config to the AgentTool sub-runner
- propagate context cache config to the AgentTool sub-runner
- prune orphaned function responses instead of failing the request
- read and write eval data files as utf-8
- redact credential values from auto-tracing span attributes
- redact database password from session service errors and logs
- redact secret credentials from AuthCredential repr and error messages
- refuse MCP tools that take a reserved ADK tool name
- Reject reserved ADK tool names in McpTool initialization
- remove invalid event from 10_burgers sample test trace
- resolve Claude 5 model names to the Claude LLM class
- resolve GitHub Actions CI collection and flakiness issues
- resolve shared-state concurrency contention in GCP auth provider using thread-local REST client caching
- resolve zizmor security findings in GitHub Actions workflows
- restrict builder YAML code references to the app being edited , closes #5292
- return schema validation feedback to models
- revert runtime behavior changed by the strict-typing pass
- rollback reject reserved ADK tool names in McpTool initialization
- route apigee, o-series and unlisted LiteLLM provider models
- run synchronous OAuth2 token calls off the event loop
- samples fail the maintenance run when issue discovery dies mid-page
- samples make the human-in-the-loop sample respect the human's decision
- samples make the MCP auth sample actually enforce auth, move MCP samples off the deprecated toolset name, and correct code execution claims
- samples repair integrations samples that no longer run against the current API
- samples repair the adk_team samples against the current API
- samples repair the core, tools, plugins and skills samples
- samples repair the session database migration recipe
- samples repair the workflow samples that produce the wrong output
- samples report failed stale agent audits and exit non-zero , closes #6520
- samples separate skipped from failed issues in the monitoring agent
- scope custom metrics per registry and trust only the config path
- scope file artifact reads and deletes to the requesting app
- scope LangGraph checkpointer thread id to app and user
- scope skip_summarization text-append to AgentTool , closes #6230
- Secure and harden FileArtifactService against tampered metadata and partial writes
- select the mTLS endpoint only when a client certificate exists
- send media attached to a tool response to non-Gemini models
- serialize merged tool calls instead of recording a placeholder
- sessions make event reads deterministic and timezone-correct
- sessions store and filter event timestamps in UTC
- skills load binary references and assets as bytes instead of skipping them
- stop live tool execution from bypassing run_async
- stop LlmAgent resume path from ending parent on pause , closes #6017
- stop logging the full live LlmRequest in base_llm_flow
- stop marking defaulted output_schema fields as required
- stop per-run HTTP options and labels leaking onto the agent
- Stop re-validating already-consumed tool confirmations
- stop request assembly writing into the agent's own config
- strip markdown and typographic decoration from rubric text , closes #6072
- support fallback OAuth token and prefixless credential lookups , closes #4712
- Support multi-content responses from agents within AgentTool
- Support multi-content responses from agents within AgentTool
- telemetry mark failed tool spans as errors and fix provider naming
- telemetry summarize inline binary data instead of writing it to a span
- test tolerate both click exit codes when a group is invoked without a subcommand
- tools recognize Context | None as the context parameter
- tools stop gcs clients being shared across credentials
- Update CI workflow to use uv and adjust codespell configuration
- use _GCLOUD_CMD for gcloud calls in GKE deploy on Windows
- Use official SDK for credential finalization in GCP auth sample
- use typing.Optional in cleanup_unused_files to fix parse error
- validate audio sample rates
- validate skill name before building Agent Registry skill URL
- validate urls before computer use navigate opens them
- wire App plugins through eval paths , closes #5503
- workflow keep jittered retry delay within max_delay
https://github.com/google/adk-python/releases/tag/v2.7.0
Related releases
- Pydantic-AI v2.30.0 Addresses DNS Rebinding and Adds Gemini Flash Model Pydantic AI Releases ·
- Pydantic-AI 1.107.5 Addresses DNS Rebinding Vulnerability in Web Chat UI Pydantic AI Releases ·
- crewAI 1.15.16 Introduces Execution Context Management and Enhanced Tracing CrewAI Releases ·
- Pydantic-AI v2.29.0 Adds Azure AI Voice Live Support and FastMCP 4 Pydantic AI Releases ·
- Pydantic-AI v1.107.4 Addresses High-Severity Web UI Vulnerability Pydantic AI Releases ·
- Pydantic AI v1.107.3 Patches High-Severity Web Chat UI Vulnerability Pydantic AI Releases ·