Skip to content

chore(release/candidate): release 2.8.0 - #6900

Merged
wukath merged 2 commits into
release/candidatefrom
release-please--branches--release/candidate--components--google-adk
Aug 26, 2026
Merged

wukath merged 2 commits into
release/candidatefrom
release-please--branches--release/candidate--components--google-adk

Conversation

@adk-bot

@adk-bot adk-bot commented Aug 25, 2026 •

Copy link
Copy Markdown
Collaborator

🤖 I have created a release beep boop

2.8.0 (2026-08-25)

Features

  • a2a: add native task mode support to RemoteA2aAgent (72f3ff5)
  • add ADK_MAX_LLM_CALLS environment variable to configure max LLM calls limit (75679db)
  • add create_data_agent tool to data_agent toolset (5cd38a0)
  • add delete_data_agent tool to data_agent toolset (9b451fc)
  • add location parameter to list_accessible_data_agents in data_agent toolset (393ec08)
  • add Model Armor guardrail plugin (11efc3f)
  • add nvidia nim integration sample (c6bba8d)
  • add sample for skill state injection via adk_inject_state (9384127)
  • add spreadsheet mime types to load_artifact_tool (370027a)
  • add update_data_agent tool to data_agent toolset (92d00aa)
  • allow configuring Vertex AI API version (ede87c2), closes #3246
  • allow streaming tools to set response scheduling per yield (bf2efd7)
  • antigravity: capture client-side tool outcomes for a function_response (4599a52)
  • cli: Support Cloud Build worker pools for Agent Engine deploy (e577c30)
  • eval: support custom metrics in AgentEvaluator (babb11c)
  • guard against SQL injection vulnerabilities in BigQuery tools (d6290a0)
  • live: Add VIDEO to the allowed modalities in the ADK API server (dd998a7)
  • live: let a live streaming tool send messages to the user directly (98896eb)
  • live: run before and after model callbacks in live mode (ef2d680)
  • live: surface live interaction_status on LlmResponse and Event (b858904)
  • live: use RunConfig.session_resumption.handle when opening a live session (eac32c3)
  • mcp: report MCP HTTP exchanges as OpenTelemetry log records (85a6fa1)
  • parallelize LLM-as-judge evaluation using asyncio.gather() (0dbb88c)
  • preserve field descriptions in set_model_response schema (a30858b), closes #6707
  • record context cache state on the LLM call span (c0614d6)
  • resolve auth for RemoteA2aAgent in AgentRegistry (d695494)
  • support auth_scheme and auth_credential in RemoteA2aAgent (d42c634)
  • support injecting custom LLM clients into Gemini and AnthropicLlm (a01d516), closes #5027
  • support memory_id and allowed_topics in Vertex Memory Bank (bf73360)
  • support opt-in session retention in MultimodalToolResultsPlugin (775c1bd), closes #6695
  • support sub-agent escalation event in ParallelAgent (0fd681e), closes #5104

Telemetry

  • telemetry: add per-invocation token spend metrics for invoke_agent (dc00db5)
  • telemetry: add per-workflow inference and tool call counts (6e6c4a5)
  • telemetry: add per-workflow token spend metrics (dd8797e)
  • telemetry: Expand telemetry for load_skill_resource span (6e0facf)
  • telemetry: honor RunConfig.telemetry at the runner's invocation span (00fc6eb)

Note: new experimental telemetry feature for token usage per agent invocation and per workflow, inference and tool call counts per workflow, and expanded load_skill attributes. Off by default, opt in with ADK_EXPERIMENTAL_TELEMETRY=true or RunConfig.telemetry.adk_experimental_telemetry_opt_in=True.

Bug Fixes

  • a2a: keep file payloads out of the debug log line (ef158d3)
  • agents: report which toolset an agent lost when one fails to load (66930e6)
  • artifacts: Publish file artifact versions atomically (94475c9)
  • auth: take the auth scheme from the request, not the client's response (8989aea)
  • avoid O(n^2) deep event comparison during rehydration (b8dd086), closes #6657
  • block yaml and ruamel deserialization in agent-config code references (924d802)
  • cache read write token counts in LiteLLM and Anthropic models (d0b33a0), closes #5835
  • check every function response, not just the first, when inferring which invocation to resume (5449314)
  • cli: clean up pytest subprocesses on test-client disconnect (a84a4b5)
  • cli: Preserve non-ASCII text in adk test --rebuild, Web UI test saving, and CLI JSONL (dc735bd)
  • cli: report env var names instead of values when overriding env_vars (b0c599f)
  • count tool call and response chars in compaction (66908e4)
  • declare a2a-sdk[http-server] so the a2a extra can serve (65234e7)
  • deduplicate events in InMemorySessionService.append_event (4d74774), closes #5723
  • deliver parallel sub-agent failures to the caller (ece924c), closes #5455
  • detect MCP tool errors under either field spelling (d18df2f)
  • disable Windows glob expansion for CLI args (2638155), closes #6248
  • emit Anthropic prompt cache breakpoints for ContextCacheConfig (811d379), closes #5395
  • fence relayed agent output so it cannot pose as instructions (9ffe8be)
  • filter thought parts from A2A client user-facing response (8963a04), closes #4676
  • Fix built-in search tools in agent hierarchy when transfer_to_agent is present (f3250bd)
  • Fix crashes and cross-invocation leaks from copying RunConfig.http_options (67ca98c)
  • flows: pair a function response with the call it answers (deee6d2), closes #6761
  • flows: sort function_call.args when rendering cross-agent context (735402d)
  • Guard invocation_context.branch assignment against mock SessionService instances (9917922)
  • guard against Content with no parts in _content_to_message_param (1ed8d48)
  • handle read-only .git files in deploy cleanup on Windows (c93fcc0)
  • honor before_run_callback early-exit for Workflow runs (dac1869), closes #6013
  • honor ContextCacheConfig on the LiteLLM path (b1c984b)
  • improve clarity and actionable context in error messages (7c2af5f)
  • include grounding metadata in rubric judge prompt (b0cdecf), closes #5831
  • integrations: send api registry credentials only to google api endpoints (cc275f0)
  • keep non-text static_instruction as a stable request prefix (deda5b3), closes #6652
  • keep session identity across single-turn node contexts (c602065), closes #6691
  • keep tool calls at most once (5bcf5cd)
  • live: stop background tool tasks when a live agent run ends (0088abb)
  • live: stop live runs from writing back into the caller's RunConfig (0b39e72)
  • make SqliteSessionService state merges use dict.update() semantics (e4ba704), closes #6728
  • mcp: evict idle sessions from the MCP session pool (69a3ca5)
  • only attach default credentials to https endpoints (5d3d152)
  • only emit --gemini_enterprise_app_name for adk_version >= 2.2.0 (00932e6)
  • pass file metadata tuple to Azure for PDF uploads (ff4567d), closes #6539
  • percent-encode path parameter values in RestApiTool (25f53bd)
  • point to Gemini Enterprise registration docs after agent_engine deploy (1d2d1ed), closes #6633
  • populate developer_instructions when invocation_events is empty (69c9090), closes #5593
  • prefer the function response's own invocation over a caller-supplied id on the node path (4d0d63c)
  • prevent contextvars leak across async generators (bb86bdd), closes #5722
  • prevent duplicate function execution when support_cfc is enabled (c986ff0)
  • prevent duplicate OAuth prompts and fix tool resumption (eaad2f8)
  • prevent duplicate synthetic user event on single-turn agent resumption (e753651)
  • prevent prompt injection via GitHub event data in workflows (4f558f1)
  • rank and bound the results of InMemoryMemoryService.search_memory (f3fae72)
  • re-raise agent errors from the synchronous Runner.run() (b55000d)
  • read long-running function name from data, not metadata (029c17b), closes #6295
  • redact credentials from DebugLoggingPlugin output file (a86bd25)
  • redact credentials from generate_content_config.http_options in debug logs (1cd6f46)
  • reject negative recent-event limits (26110c7)
  • reject tool confirmations arriving over A2A (9e9eaa6), closes #6461
  • report root_agent type mismatch instead of 'No root_agent found' (4f07c93), closes #6606
  • resolve Claude 5 model names in the LLM registry (42a4a5f)
  • resolve NameError in legacy create-eval-set route (023f45c)
  • resolve nested provider behind litellm_proxy prefix (602e58d), closes #6538
  • resolve server disconnect logs (3f2d399)
  • resolve systemic parts[0] indexing bugs (2109ea9), closes #6616
  • Restore invocation_context.branch from session history when executing a non-root agent node or resuming a sub-agent in Runner (676d1e7)
  • restrict unpickling of legacy v0 session event actions (97c2af0), closes #5634
  • resume an invocation whose user message leads with a non-text part (6d8c588)
  • revert the A2A guard that broke every HITL tool confirmation (9a32eba)
  • route workflow IDs and retry jitter through platform seams (8f85107)
  • samples: widen numeric tool parameters to match their docstrings (0c67410)
  • sanitize state deltas before writing them to JSON state columns (3f9e6be)
  • send the required list on a CrewAI or LangChain function declaration (186d9f7)
  • sessions: dedupe InMemorySessionService events by equality not id (c9323d5)
  • sessions: load legacy v0 event actions with the restricted unpickler (fb15710)
  • sessions: stop dropping event actions on v0 PostgreSQL migration (e3ae4ac)
  • skills: skip search results that fail frontmatter validation (3c977bc), closes #6838
  • skip non-agent directories in AgentLoader.list_agents() (caac070)
  • skip non-numeric response keys in generate_return_doc (920bc3e), closes #6174
  • stop re-sending thought summaries as conversation history (e4f5900)
  • stop re-sending thought summaries as conversation history (3c1b1bc)
  • stop RemoteA2aAgent forwarding credential requests to the remote peer (2aea859)
  • stop the session liveness probe from crashing when the SDK moves its streams (d9f4d3d)
  • strip internal planning tags from PlanReActPlanner output (ac8dad2), closes #3378
  • telemetry: End the inference span when the inference ends (ecc730c)
  • telemetry: record call_llm span attributes when a plugin short-circuits the model call (0321136)
  • tools: report no match instead of raising on empty retrieval (99660d9)
  • tools: run AgentTool nested agent in unary mode (0d5752b)
  • tools: run an agent tool under the caller's RunConfig (983c280)
  • trigger Gemini 3.x Live response after sending conversation history (7616c78)
  • update unit guide skill to exclude internal implementation details (0c0296c)
  • use OAuth2 client-credentials scheme for OpenAPI SA helpers (9897217), closes #6656
  • use Unicode-aware keyword extraction in InMemoryMemoryService (b8ea1e8), closes #5501
  • validate session initialization events (3fa71b6), closes #5290
  • validate SQL identifiers in Spanner search tool (8d2f277), closes #5913
  • workflow: cancel parallel worker items when the worker is cancelled (dec729f)
  • workflow: declare abc.ABC on BaseNode so abstract subclasses type-check (f3b59fd)
  • workflow: do not act on function calls in partial events (816ada5), closes #6583
  • workflow: honor START as a satisfied JoinNode predecessor (d8df6fd)
  • workflow: resume node auth from the node's own auth config (5b59139)

Performance Improvements

  • buffer streamed function call arguments instead of concatenating (f604de2)
  • key the Pub/Sub publisher cache on its options' value (51231cd)
  • remove redundant event scans in prompt assembly (d7adc1c)
  • remove redundant event scans in prompt assembly (e66fdd2)
  • resolve the optional id-pairing providers once, not per request (203461c)
  • run local code execution in a plain child interpreter (c244a9c)
  • run the Google credential refresh off the event loop (2aa2b46)

Documentation

  • add audio_stream_end documentation for realtime input (17cb265)
  • correct node schema docstrings about which variants validate (e649a38)
  • correct the documented contract of the invocation-subtree event filter (be8fcf4)
  • fix typos and grammar in README (ffe518a)
  • guides: add developer unit guide for BaseCodeExecutor (b370fc0)
  • guides: add developer unit guide for BasePlanner (ea23a89)
  • guides: add developer unit guide for Runner and Runner Live Streaming (1d89e0f)
  • repair the workflow guides and document BaseNode (7c7d2ba)
  • tell sample creator skill not to prefix dirs with $category or suffix with _agent (50c3edf)

This PR was generated with Release Please. See documentation.

@github-actions

github-actions Bot commented Aug 25, 2026 •

Copy link
Copy Markdown

Release artifact check: PASS

Comparing 2.8.0 against 2.7.1.
Modules swept: 685 candidate, 674 baseline.

No module regressed against the baseline.

New modules that do not import (3)

Not a failure. New modules usually sit behind an optional extra, so this is expected on a bare install -- but a module that is meant to work without extras belongs on the list above, so it is worth a glance.

  • google.adk.integrations.model_armor._plugin
    • ModuleNotFoundError: No module named 'google.api_core'
  • google.adk.labs.antigravity._sub_agent_tools
    • ImportError: The 'google-antigravity' package is required to use the ADK Antigravity integration. Install it with: pip install "google-adk[antigravity]"
  • google.adk.labs.antigravity._tool_result_capture
    • ImportError: The 'google-antigravity' package is required to use the ADK Antigravity integration. Install it with: pip install "google-adk[antigravity]"
No longer shipped (1)
  • google.adk.labs.antigravity._trajectory_files

@wukath

wukath commented Aug 26, 2026 •

Copy link
Copy Markdown
Collaborator

(telemetry team requested a note about their new feature in the release notes, so I added it after autogenerating)

@wukath
wukath merged commit 2174b84 into release/candidate Aug 26, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants