Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/.release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "2.4.0"
".": "2.5.0"
}
2 changes: 1 addition & 1 deletion .github/release-please-config.json
Original file line number Diff line number Diff line change
Expand Up @@ -57,5 +57,5 @@
]
}
},
"last-release-sha": "44d747ed5eaf543b5b8d22e0088f8a7c7eeee846"
"last-release-sha": "c9bacd40ee4f8ad9951d543b240ce3f2f59ebb42"
}
115 changes: 115 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,120 @@
# Changelog

## [2.5.0](https://github.com/google/adk-python/compare/v2.4.0...v2.5.0) (2026-07-16)


### Features

* add Cloud Run sandbox option in code executors ([5b1088a](https://github.com/google/adk-python/commit/5b1088acbefb7eb55488ed9ebf90683f24bfe54a))
* Add search agents and search MCP severs to agent registry ([ed579c1](https://github.com/google/adk-python/commit/ed579c1304cf7ad4c16868323632e6350f462548))
* add skill to verify markdown code snippets ([c0fa51b](https://github.com/google/adk-python/commit/c0fa51b33f3e32812f307caa2ac3c5c2425c5224))
* Add strict input schema validation for LlmAgent workflow nodes ([6f66814](https://github.com/google/adk-python/commit/6f66814e194994a9ab38cf3959a1d8f53cae3d89))
* add to_mcp_server to serve an ADK agent over MCP ([50ff37f](https://github.com/google/adk-python/commit/50ff37f8b027f5147f0baf5906414e7ac6163b9e))
* **agents:** add single_turn mode field to ManagedAgent ([da50578](https://github.com/google/adk-python/commit/da50578bc5833c76eb96bc8f005fc9e5e5c154e7))
* **agents:** bridge node_input to user_content for ManagedAgent nodes ([a680cea](https://github.com/google/adk-python/commit/a680cea874fcf0496df9697be5962dbedde70d42))
* **agents:** support remote MCP servers for ManagedAgent with runtime header callbacks ([2e2ec09](https://github.com/google/adk-python/commit/2e2ec09a760b5cb956082526296450842da28487))
* **agents:** wrap single_turn non-LlmAgent sub-agents as inline tools ([fc98549](https://github.com/google/adk-python/commit/fc985492447a133cbbd7d90bf34cb849b445a26b))
* **bigquery:** log tool descriptions and parameter schemas in LLM_REQUEST ([ecef5f8](https://github.com/google/adk-python/commit/ecef5f859f050c206efab93a9a200cad6d75d62d))
* enable a2a-sdk 1.x by widening the dependency constraint ([b46dd13](https://github.com/google/adk-python/commit/b46dd136aafe0f1ed5b269b7e3c92055726a5125))
* **live:** allow Voice activity detection (VAD) events to be returned ([820a910](https://github.com/google/adk-python/commit/820a910ef860c42b519b7c3519c5b1065a172a52))
* **live:** Run non-blocking tools in a background task ([5620d8f](https://github.com/google/adk-python/commit/5620d8f4f16864a68d04187f31ac0a0d532a3efa))
* **plugins:** add on_agent_error_callback and on_run_error_callback ([7d0ae63](https://github.com/google/adk-python/commit/7d0ae63ab13ad68dc1558a3a2c40c18baa531386))
* Support HITL resumption for standalone nodes and NodeTool ([00760f8](https://github.com/google/adk-python/commit/00760f84556cacef6fb24fc12a24075fd617f558))
* Support LoadArtifacts parsing for binary text documents (e.g., DOCX) ([ccbedd8](https://github.com/google/adk-python/commit/ccbedd80c2b8c55f4d80b4324f8bb23ea48d6996))
* Validate that no old orchestrators are used inside Workflow graphs ([7e245c4](https://github.com/google/adk-python/commit/7e245c48c278e96d6064b0475c7b0b4fe01d033b))
* Validate that no old orchestrators are used inside Workflow graphs ([eaffb0e](https://github.com/google/adk-python/commit/eaffb0ec64ed0d73013ffe0aa2ebf08682559a26))
* **workflow:** Support state-based resumption for task-mode agent workflow nodes ([9d306f5](https://github.com/google/adk-python/commit/9d306f5d322eccbc5022ac72407fa8a994f64cf6))


### Bug Fixes

* Add mTLS support for for API registry ([41693dc](https://github.com/google/adk-python/commit/41693dce67f5e8c39802db2fff75e7c6d8c876f0))
* Add mtls support for gcp_utils ([3fa993b](https://github.com/google/adk-python/commit/3fa993bf82b7dd9f8334d84ea492adad5a477bfe))
* Add support for list_artifact_versions and get_artifact_version to ForwardingArtifactService ([61ba59a](https://github.com/google/adk-python/commit/61ba59a23f06d78bbd5ed49bac918787e2739066))
* avoid crash on first turn with empty user content ([c9bacd4](https://github.com/google/adk-python/commit/c9bacd40ee4f8ad9951d543b240ce3f2f59ebb42))
* Avoid shell execution in ReadFileTool ranged reads ([1ac6875](https://github.com/google/adk-python/commit/1ac68752ad30563e17d3cbf40e667df3c8df850a))
* block posix, nt, _posixsubprocess, and _socket modules in agent config validation ([faa1744](https://github.com/google/adk-python/commit/faa174425453b7adc1243c5217a2a40e13b4f031))
* **cli:** Block special internal agents in ApiServer mode ([3f6eb1f](https://github.com/google/adk-python/commit/3f6eb1f0a1884a9c04cc34c0c57c7b9d8665bf2f))
* confine docs-agent file tools to the managed repos directory ([f00fc5a](https://github.com/google/adk-python/commit/f00fc5a329f2ff58c34ded1f27a0a1daa89ce0d4))
* decode shell skill output as UTF-8 ([b7ad76a](https://github.com/google/adk-python/commit/b7ad76a28dfbdc3bcab71e9e81aaa546ebd287be))
* **environment:** add integer validation in ReadFileTool ([3c0fb65](https://github.com/google/adk-python/commit/3c0fb65caa989b6d48ba78cb55ec3a15f476c6f8))
* exclude LiteLlm llm_client from JSON serialization ([ecbefd9](https://github.com/google/adk-python/commit/ecbefd9547839752ab8d28146a51bad7dd6833f1)), closes [#6164](https://github.com/google/adk-python/issues/6164)
* exclude rewound invocations from event compaction ([0d4d378](https://github.com/google/adk-python/commit/0d4d3783f7825a620c95a7b9dca919db790b879f))
* explicitly preserve language and tools during event compaction ([b44d2c9](https://github.com/google/adk-python/commit/b44d2c9d6c381e44a9a24727fe973fc94d572854)), closes [#6273](https://github.com/google/adk-python/issues/6273)
* Fix InputTokensDetails validation in OpenAI responses test and formatting in a2a_agent_executor ([99ea228](https://github.com/google/adk-python/commit/99ea228f0068de94a2a540929b83b3e16fa17897))
* Fix sub-branch event routing for nested sub-agents and tools in InvocationContext ([3cdc102](https://github.com/google/adk-python/commit/3cdc102204696e2dd9c92ece66daee4c5b1010ca))
* GitHub CI for the verify-snippets skill ([ccc8ab4](https://github.com/google/adk-python/commit/ccc8ab4efb86d03cf4cb7a5b63c0ca67e1406618))
* grow eligible Gemini cache prefixes ([98fc036](https://github.com/google/adk-python/commit/98fc03690b5fb611b11072a354061dd10a886c50))
* guard decode_model against non-dict session values ([8c60d99](https://github.com/google/adk-python/commit/8c60d99a5267eca02d01365982837bc16f4d292c)), closes [#6348](https://github.com/google/adk-python/issues/6348)
* handle sqlite float timestamps in PreciseTimestamp ([2da09e6](https://github.com/google/adk-python/commit/2da09e60d7d03d27bf9aa721db37cf0475157c21)), closes [#6352](https://github.com/google/adk-python/issues/6352)
* honor server-reported Gemini cache expiry ([4fdc94c](https://github.com/google/adk-python/commit/4fdc94c79185f13db9f8c20870add6b611a235c3))
* **litellm:** preserve reasoning replay and optionally share agent thoughts ([6290aec](https://github.com/google/adk-python/commit/6290aec5cefea5ebc362eb74b5a73897e9b73d41))
* **litellm:** preserve signature-only blocks for Anthropic streaming thinking aggregation ([78d1957](https://github.com/google/adk-python/commit/78d1957a0d877ab976d44599cafd304632adc043))
* make agent and run error callbacks best-effort so they never mask the original error ([2f48ad3](https://github.com/google/adk-python/commit/2f48ad3f0e4721e25d31641d564415c1d0f51e29))
* make discussion answering model configurable ([de4ac2d](https://github.com/google/adk-python/commit/de4ac2d93f4bde068e7b68fa5e01cd552f14a33d))
* match HF-style gemma-4 model names for tool_responses role ([4930155](https://github.com/google/adk-python/commit/49301558dcdc767b3844eec928d5c3457645301a)), closes [#6334](https://github.com/google/adk-python/issues/6334)
* **models:** Allow context caches with empty content prefixes ([ee7174d](https://github.com/google/adk-python/commit/ee7174da1fc1101f16b1b4f067d9beb2bc0a1de7))
* **models:** forward request headers on google_llm interactions path ([b5a3e34](https://github.com/google/adk-python/commit/b5a3e34f2dd973736b3197c0024c62cfb901452e))
* preserve non-ASCII characters in agent input ([7006e33](https://github.com/google/adk-python/commit/7006e33e98f8e5b84414a6588d911c2280fb287b)), closes [#6279](https://github.com/google/adk-python/issues/6279) [#6282](https://github.com/google/adk-python/issues/6282)
* preserve non-image file MIME type in LiteLlm content conversion ([065234e](https://github.com/google/adk-python/commit/065234e27973d4af0084cbac1db3d21561ba6e66)), closes [#4174](https://github.com/google/adk-python/issues/4174)
* Prevent continuation forgery in tool confirmation ([c03f333](https://github.com/google/adk-python/commit/c03f333769feaeaa9fe8910fbe95cb9f2d513f54))
* prevent model bypass in resumable mode by rejecting user-authored function calls ([283e92e](https://github.com/google/adk-python/commit/283e92efc2297246ff6f70ceb220b9b299aa2d67))
* prevent synchronous code executors from blocking the event loop ([585809c](https://github.com/google/adk-python/commit/585809cf98838fb64b076400fe5bfbe92f8543ad)), closes [#6353](https://github.com/google/adk-python/issues/6353)
* recover a compacted sibling's latest response, not its placeholder ([0bd7ea0](https://github.com/google/adk-python/commit/0bd7ea05d6d8459f9648b201afbf34ee6b39d903))
* recover compacted function calls during prompt assembly ([0c517e7](https://github.com/google/adk-python/commit/0c517e767efc8661f6d1667db4a4a565ef2cc1d7)), closes [#5602](https://github.com/google/adk-python/issues/5602)
* remove OpenTelemetry event logger setup since the Events API/SDK has been deprecated and is soon being removed entirely ([bb3b2a4](https://github.com/google/adk-python/commit/bb3b2a47f887bd3ae0b2f363cb38c27a9f012fe5))
* repair two broken contributing samples ([ee3a381](https://github.com/google/adk-python/commit/ee3a3815a16795402242c5c620bb83c6e49b27bd))
* require starlette>=1.3.1 to clear known CVEs ([221bad9](https://github.com/google/adk-python/commit/221bad92b8ed659fc0d34c610d5b3bc469e0bac5)), closes [#6038](https://github.com/google/adk-python/issues/6038)
* Resolve scheduler leakage and make scheduler instantiation explicit ([ce2e4ca](https://github.com/google/adk-python/commit/ce2e4caf147ebcc8e6a7bb9997e6e961f626807b))
* Resolve scheduler leakage and make scheduler instantiation explicit ([d4f0772](https://github.com/google/adk-python/commit/d4f0772f5d94e5887fe465c98e0c5b1730b633d8))
* Retain user input across transfer_to_agent when include_contents='none' ([ad5445a](https://github.com/google/adk-python/commit/ad5445a1bdf6a2b9e79ebdb706b0410490feef90)), closes [#3535](https://github.com/google/adk-python/issues/3535)
* Return 404 instead of 500 when app_name does not match any agent ([f4decf6](https://github.com/google/adk-python/commit/f4decf61d134a782482c184ca2a5c2f864aaf5a1)), closes [#5374](https://github.com/google/adk-python/issues/5374)
* return MCP tools in stable sorted order for cache stability ([2aba05c](https://github.com/google/adk-python/commit/2aba05cff814e664d7ed3520000f453fcc810473))
* reuse current-step tool resolution ([3164504](https://github.com/google/adk-python/commit/3164504f649168e3ff87de9657260fcc8e88dee6))
* reuse fetched session and honor get_session_config on chat path ([81306bb](https://github.com/google/adk-python/commit/81306bbbd442d4b09dc7afb26a7dcf98e01a2168))
* rollback of path segment validation in InMemoryArtifactService and GcsArtifactService ([961f3e8](https://github.com/google/adk-python/commit/961f3e885c68385d67823885897f1c5690ff5b4c))
* **samples:** Fix monitor_video_stream in live bidi streaming sample ([7c11f58](https://github.com/google/adk-python/commit/7c11f5861fabc1f963d99ec213118c1460c374b3))
* scope Gemini cache identity ([8de4237](https://github.com/google/adk-python/commit/8de4237e18bc7a6a8bed3f252bca7d1b15ddbec9))
* **sessions:** prevent PydanticSerializationError when session state contains non-serializable objects ([757ef22](https://github.com/google/adk-python/commit/757ef22435970df8816222f8091046948af2c4d3))
* shield toolset cleanup from cancellation ([a69ba4f](https://github.com/google/adk-python/commit/a69ba4fa74e87f3dc742f3cfaece6cff1cc86eee))
* snapshot events under lock in InMemoryMemoryService.search_memory ([aeccd3b](https://github.com/google/adk-python/commit/aeccd3bb2cf76058cf9be82bc33927d2d70c8fbc)), closes [#6167](https://github.com/google/adk-python/issues/6167)
* Support passing credentials to GCPSkillRegistry ([c441ab2](https://github.com/google/adk-python/commit/c441ab2763b871db5e66048944d179bdf76bc56e))
* support unencrypted workload certificates for mTLS in GoogleApiToolset ([d831ee6](https://github.com/google/adk-python/commit/d831ee6e76d390a2a32d1733afee428ae3cba450))
* **telemetry:** add 0 bucket boundary to per-invocation call count histograms ([c291821](https://github.com/google/adk-python/commit/c2918211f82a84f91f8ee852e1b90a225f17f0b2))
* **test:** correct polling timeout unit test in IAM Connector credentials provider ([4448117](https://github.com/google/adk-python/commit/4448117076c97a164f5aad5037236a7c6f02fadc))
* Update GCP Skill Registry to use agentregistry/skill endpoint ([fa884e3](https://github.com/google/adk-python/commit/fa884e3d028e2809526dc732592a6b5b944a8c17))
* Update VertexAiRagMemoryService methods to use latest RAG module ([96d2914](https://github.com/google/adk-python/commit/96d2914339ade4409b2366b80a0668ca8001aedb))
* Validate path segments in GcsArtifactService and InMemoryArtifactService to prevent cross-user artifact access ([45a77dc](https://github.com/google/adk-python/commit/45a77dc514f1e151c08e32f7c9a94b0a222eea36))
* Validate path segments in GcsArtifactService and InMemoryArtifactService to prevent cross-user artifact access ([8718aef](https://github.com/google/adk-python/commit/8718aefff01d3ad37a4f9de73ca6abfdb3bb452e)), closes [#6115](https://github.com/google/adk-python/issues/6115) [#6116](https://github.com/google/adk-python/issues/6116)
* **workflow:** Process all completed tasks in batch before exiting on error ([8db2ace](https://github.com/google/adk-python/commit/8db2ace37308c15d59d40d1b8c3b8dc30eb64cfd))
* **workflow:** treat RetryConfig(max_attempts=0) as no retries ([3b3f127](https://github.com/google/adk-python/commit/3b3f127d8fdd3189c2527edc128e64375b5f5f88))


### Performance Improvements

* lazy-load ManagedAgent to keep the interactions API off startup ([995628c](https://github.com/google/adk-python/commit/995628c9e2b2449b37d4a146e9d014d073932023))
* **litellm:** track brace depth incrementally for streaming tool-call args ([e5fdb51](https://github.com/google/adk-python/commit/e5fdb51e7ca8ac964e75c0458567f88a37c0b7be))
* Optimize workflow rehydration performance with indexing ([64a7448](https://github.com/google/adk-python/commit/64a7448fc6e05f37e6dedadd6c0e65bc19264057))
* skip disabled request-log formatting ([cba2827](https://github.com/google/adk-python/commit/cba28271b4bd0de3201b468578f3cb3da6113a5f))
* skip non-recording LLM trace work ([0c63a89](https://github.com/google/adk-python/commit/0c63a892e2d4bdae4cdf33a5bde21e4266e03371)), closes [#4233](https://github.com/google/adk-python/issues/4233)


### Documentation

* add to_mcp_server unit guide ([534e8d5](https://github.com/google/adk-python/commit/534e8d50cc275e717b21b8a950df5439e251dc76))
* Fix token exceeded error on ADK release analyzer's final summary agent ([989af4d](https://github.com/google/adk-python/commit/989af4d81eea05befb33348deb0b604bc483ee75))
* **guides:** Add ManagedAgent unit guide ([ab839d5](https://github.com/google/adk-python/commit/ab839d51d338e8231a79e0e65aec5d9a3fd896b4))
* **guides:** note single_turn works for non-LlmAgent agents ([26ed6fe](https://github.com/google/adk-python/commit/26ed6fe382881fe6c8e9caaf31f9b0a6c655389b))
* **samples:** add ManagedAgent remote MCP (Maps Grounding Lite) sample ([cc444b6](https://github.com/google/adk-python/commit/cc444b6cbf0e60f2c2b5d4f1f7ae5d6fda03fc0e))
* **samples:** Add ManagedAgent single-turn sub-agent sample ([57e1ba6](https://github.com/google/adk-python/commit/57e1ba66ee5f762e22cf5aa727f10fea3485a572))
* **samples:** Link ManagedAgent sample READMEs to the guide ([3834c0b](https://github.com/google/adk-python/commit/3834c0bdb65476661ad2b2c939ed19cba2a3fcd6))
* **samples:** Remove NOT WORKING YET comments from workflow samples ([f3f602f](https://github.com/google/adk-python/commit/f3f602f1fa7ee4d6822b68e798ae09b145d898c5))
* simplify sample graph guidance in adk-sample-creator skill ([27edb1a](https://github.com/google/adk-python/commit/27edb1afdca5b32d050915f5c45b8a812045994f))
* **skills:** Add coding conventions and state lifecycle rules to style and architecture guides ([367ab9a](https://github.com/google/adk-python/commit/367ab9aeaeb1ef869e5d7d18d96c1452420447e5))
* **tools:** encourage using mode='single_turn' in AgentTool and document manual artifacts configuration ([a9b4276](https://github.com/google/adk-python/commit/a9b4276447453a85bffc2cdd35561f2e44779d06))
* **tools:** recommend mode='single_turn' in AgentTool docstring ([f4072a4](https://github.com/google/adk-python/commit/f4072a4d38fd3dcbdcb694b3276ff672e8ce3653))
* Update models owner for ADK PR triaging agent ([b8a1dab](https://github.com/google/adk-python/commit/b8a1dabf9ed3ab8119249403a507fa49202c4a4c))

## [2.4.0](https://github.com/google/adk-python/compare/v2.3.0...v2.4.0) (2026-07-07)


Expand Down
2 changes: 1 addition & 1 deletion src/google/adk/version.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,4 @@
# limitations under the License.

# version: major.minor.patch
__version__ = "2.4.0"
__version__ = "2.5.0"
Loading