Published 2 Oct 2025
Major Features
- Full Agent-to-Agent (A2A) Protocol Support:
- Multiplatform Kotlin A2A SDK: Including server and client with JSON-RPC HTTP support.
- A2A Agent Feature: seamlessly integrate A2A in your Koog agents
- Non-Graph API for Strategies: Introduced non-graph API for creating AI Agent strategies as Kotlin extension functions with most of Koog's features supported (#560)
- Agent Persistence and Checkpointing:
- Roll back Tool Side-Effects: Add
RollbackToolRegistryin thePersistencefeature in order to roll back tool calls with side effects when checkpointing. - State-Machine Persistence / Message History Switch: Support switching between full state-machine persistence and message history persistence (#856)
- Roll back Tool Side-Effects: Add
- Tool API Improvements:
subgraphWithTaskSimplification: Get rid of requiredfinishTooland support tools as functions insubgraphWithTask, deduce final step automatically by data class (#791)AIAgentServiceIntroduced: MakeAIAgentstate-manageable and single-run explicitly, introduceAIAgentServiceto manage multiple uniform running agents.- New components:
Improvements
- Make Koog-based tools exportable via MCP server (KG-388)
- Add
additionalPropertiesto LLM clients in order to support custom LLM configurations (#836) - Allow adjusting context window sizes for Ollama dynamically (#883)
- Refactor streaming api to support tool calls (#747)
- Provide an ability to collect and send a list of nodes and edges out of
AIAgentStrategyto the client when running an agent (KG-160) - Add
excludedPropertiesto inlinecreateJsonStructuretoo, update KDocs (#826) - Refactor binary attachment handling and introduce Base64 serializer (#838)
- In
JsonStructuredData.defaultJsoninstance rename class discriminator from#typetokindto align with common practices (#772, KG-384) - Make standard json generator default when creating
JsonStructuredData(it was basic before) (#772, KG-384) - Add default audio configuration and modalities (#817)
- Add
GptAudiomodel in OpenAI client (#818) - Allow re-running of finished agents that have
Persistencefeature installed (#828, KG-193) - Allow ideomatic node transformations with
.transform { ...}lambda function (#684) - Add ability to filter messages for every agent feature (KG-376)
- Add support for trace-level attributes in Langfuse integration (#860, KG-427)
- Keep all system messages when compressing message history of the agent(#857)
- Add support for Anthropic's Sonnet 4.5 model in Anthropic/Bedrock providers (#885)
- Refactored LLM client auto-configuration in Spring Boot integration, to modular provider-specific classes with improved validation and security (#886)
- Add LLM Streaming agent events (KG-148)
Bug Fixes
- Fix broken Anthropic models support via Amazon Bedrock (#789)
- Make
AIAgentStorageKeyin agent storage actually unique by removingdatamodifier (#825) - Fix rerun for agents with Persistence (#828, KG-193)
- Update mcp version to
0.7.2with fix for Android target (#835) - Do not include an empty system message in Anthropic request (#887, KG-317)
- Use
maxTokensfrom params in Google models (#734) - Fix finishReason nullability (#771)
Deprecations
- Rename agent interceptors in
EventHandlerand related feature events (KG-376) - Deprecate concurrent unsafe
AIAgent.asToolin favor ofAIAgentService.createAgentTool(#873) - Rename
PersistencytoPersistenceeverywhere (#896) - Add
agentIdargument to allPersistencemethods instead ofpersistencyIdclass field (#904)