Releases: agno-agi/agno
Releases · agno-agi/agno
v2.6.0
Changelog
New Features:
- Team HITL: Added API layer for Team human in the loop and support in
AgentOSchat page. - Team Approvals: Added support for Approvals in Team, along with in
AgentOSchat page. - Workflow Executor HITL: Added support for executor level human in the loop in case when a pause tool flow is setup on an agent/team in a particular step of a workflow.
- Multi-framework support in AgentOS (Beta): Added basic support for
ClaudeAgentSDK,LanggraphandDSPyusing a singleAgentProtocolas the backbone which works withAgentOSruntime. - Reconnection and Resume Runs: Agent/Team running in background using SSE can now be reconnected and resumed in AgentOS in case of a interruption (refresh) so you start from where you left.
- Factories: Agent/Team/Workflow can now be created dynamically at run-time using
AgentFactory,TeamFactoryandWorkflowFactoryallowing for more multi-tenant usecases. - Context Provider: Added
agno.context— a first-party API for plugging an external source (filesystem, web, SQL database, Slack, Google Drive, MCP server) into anagent as a natural-language tool.
Bug Fixes:
- Callable Factory:
- Fixed to preserve factory tools and members when Agent/Team is copied.
- Fixed to skip iteration of callable-factory tools in
Agent.deep_copy.
- Telegram Interface:
- Fixed to respect retry_after on Telegram 429 rate limit errors
- Added quoted_responses option to Telegram interface
- Agent OS Router: Fixed
GET /workflows/{id}which omitted nested workflow steps andCondition.else_steps(along with the agents inside them) from the response - Workflow: Fixed to preserve
parent_step_idthrough nested workflow enrichment layers in case of workflow as a workflow step. - MCP: Fixed to handle None headers when merging init headers in MCP tools.
- Claude: Fixed to make anthropic imports lazy in
agno.utils.models.claude. - Remote Content Source: Fixed where two uploads of the same filename from different remote sources (GitHub repos, S3 buckets, GCS buckets, etc.) produced identical
content_hashvalues. - FileTools: Fixed to add
exclude_patternstoFileTools. - Agent HITL: Fixed pause-continue flow not handling subsequent tool calls.
Breaking Changes:
- Session Type Filter: The
/sessionsendpoint now returns all session types (agent, team, and workflow) by default, giving you a complete view of your sessions in a single call. To filter for a specific type, pass?type=agent?type=team, or?type=workflowin your request.
v2.5.17
Changelog
Improvements
- Option to disable Claude file citations (#7511)
- Allow
GitHubConfigrepo to be specified per request (#7496)
Bug Fixes
- Preserve custom db table names when loading components (#7508)
- Apply
header_providerheaders during MCP initialization (#7507) - Preserve inner workflow event identity and add
nested_depthto agent/team events (#7491) - Build knowledge dbs live in config API (#7498)
- Stop injecting shared HTTP/2 client into all model providers (#7492)
- Catch
CancelledErrorexplicitly in all router streaming generators (#7379) - Try raw JSON parse before cleaning to preserve code blocks in strings (#7402)
- Exclude framework-injected params from
user_input_schema(#7485) - Include
extra_messagesin memory pipeline gate check (#7470)
What's Changed
- [fix] Include extra_messages in memory pipeline gate check by @ArielTM in #7470
- chore: add weekly scheduled run to main validation workflow by @sannya-singal in #7453
- fix: exclude framework-injected params from user_input_schema by @kausmeows in #7485
- fix: try raw JSON parse before cleaning to preserve code blocks in strings by @ysolanky in #7402
- fix: catch CancelledError explicitly in all router streaming generators by @ysolanky in #7379
- fix: stop injecting shared HTTP/2 client into all model providers by @ysolanky in #7492
- fix: build knowledge dbs live in config API by @sannya-singal in #7498
- fix: preserve inner workflow event identity and add nested_depth to agent/team events by @Ayush0054 in #7491
- fix: apply header_provider headers during MCP initialization by @ysolanky in #7507
- fix: preserve custom db table names when loading components by @ysolanky in #7508
- feat: allow GitHubConfig repo to be specified per request by @ysolanky in #7496
- [feat] Option to disable Claude file citations by @joeportela in #7511
- chore: release 2.5.17 by @ysolanky in #7494
New Contributors
Full Changelog: v2.5.16...v2.5.17
v2.5.16
Changelog
New Features:
- LLMsTxtTools and LLMsTxtReader: Adds support for the llms.txt standard - a standardized way for websites to provide LLM-friendly documentation indexes (e.g.
https://docs.agno.com/llms.txt). - SalesforceTools: Added Salesforce CRM Tools.
- Model: Added new Azure AI Foundry Claude model provider.
- OpenAIResponses: Added background mode support for OpenAI Responses API.
Bug Fixes:
- Knowledge: Fixed to read
knowledge_tablefromcontents_dbinstead ofagent.db. - AGUI:
- Fixed to emit reasoning events in AGUI interface.
- Fixed AGUI input_content to store current user input instead of message history.
- Workflow: Fixed to handle file path images in workflow step conversion.
- OpenAIResponses: Fixed to handles
response.reasoning_summary_text.deltaevents to stream reasoning content as it arrives. - Team: Fixed
TeamSession.from_dict()to not mutate input mapping.
What's Changed
- fix: read knowledge_table from contents_db instead of agent.db by @sannya-singal in #7437
- chore: update cookbook to use 5.4 and openai responses model by @kausmeows in #7442
- fix: emit reasoning events in AGUI interface by @Mustafa-Esoofally in #7429
- [feat] Add Salesforce CRM tools by @raghavenderreddygrudhanti in #7079
- [feat] Add Azure AI Foundry Claude model provider by @alejandro-workpath in #6816
- [fix] Fix AGUI input_content to store current user input instead of message history by @RowanLane in #5469
- fix: handle filepath images in workflow step conversion by @ItsRoy69 in #7457
- feat: add background mode support for OpenAI Responses API by @ysolanky in #7444
- fix: TeamSession.from_dict() no longer mutates input mapping by @YizukiAme in #7462
- fix: stream reasoning summary deltas in OpenAI Responses API by @ysolanky in #7445
- fix: sort order enum default in remotedb routes by @Shiv1909 in #7452
- feat: add LLMsTxtReader and LLMsTxtTools for llms.txt support by @ashpreetbedi in #7458
- chore: Release v2.5.16 by @kausmeows in #7463
New Contributors
- @raghavenderreddygrudhanti made their first contribution in #7079
- @alejandro-workpath made their first contribution in #6816
- @RowanLane made their first contribution in #5469
- @YizukiAme made their first contribution in #7462
Full Changelog: v2.5.15...v2.5.16
v2.5.15
Changelog
New Features:
- Skills: Added skills support to Team. See docs.
- Workflow: Added workflow as a workflow step (nested workflow) support. See docs.
Improvements:
- Workflow HITL:
- Workflow steps now support post-execution human-in-the-loop review - pause after a step runs to review, approve, reject with feedback and retry, or edit the output before it continues (requires_output_review on Step, Router, and Loop). See docs.
- Parameters consolidated into
HumanReviewconfig class - pass human_review=HumanReview(...) on Step, Loop, and Router instead of flat params. Fully backward compatible. See docs
- Traceback Logging: Added
AGNO_LOG_TRACEBACKSenv var (opt-in) to control traceback visibility inlog_errorandlog_warning— off by default (clean logs), full tracebacks when set to true. - SessionSummaryManager: Adds
last_n_runsandconversation_limitparameters to
SessionSummaryManagerso users can control how much conversation history is included when generating session summaries.
Bug Fixes:
- OpenAI: Stop injecting shared HTTP/2 client into OpenAI and Azure OpenAI models. Fixes transient
400errors under concurrent usage by letting the OpenAI SDK manage its own HTTP client. - Metrics: Fixed
audio_total_tokensnot being computed for OpenAI, Perplexity, and LiteLLM. - Workflow:
- Fixed else_steps not being copied for
Conditionstep type. - Fixed StepInput to_dict to properly serialize File objects.
- Fixed else_steps not being copied for
- SurrealDb: Updated correct SurrealDB flexible field syntax.
- AgentOS: Added missing MIME types for .msg, .xlsx and .xls in AgentOS file upload.
- A2A: Fixed to serialize Pydantic
output_schemacontent before str concatenation. - Team: Fixed
TeamSession.get_messages(..)returning duplicate messages. - SlackTools: Fixed to add thread-aware messaging instructions to SlackTools.
- GitHubTool: Fixed IndexError in
get_pull_requestswhen fewer PRs than requested limit - WikipediaTools: Fixed to handle Wikipedia DisambiguationError and add configurable auto_suggest.
What's Changed
- fix: else_steps are not copied for
Conditionstep type by @korntewin in #7198 - [cookbook] fix Slack cookbook configs: history context and MemoryManager model by @Himanshu040604 in #7288
- [fix] correct SurrealDB flexible field syntax by @pandego in #7303
- fix: add missing MIME types for .msg, .xlsx and .xls in AgentOS file upload by @wildchron in #7329
- [fix] a2a stream: serialize Pydantic output_schema content before str concatenation by @NIK-TIGER-BILL in #6936
- feat: add skills support to Team by @uzaxirr in #7017
- [fix] Workflow StepInput to_dict was not serializing File objects by @luisnmartins in #7364
- fix:
TeamSession.get_messagesreturn duplicated messages by @kausmeows in #7372 - fix: add thread-aware messaging instructions to SlackTools by @Mustafa-Esoofally in #7308
- Fix IndexError in get_pull_requests when fewer PRs than requested limit by @kaiisfree in #7353
- chore: improve exception logging across the SDK by @kausmeows in #7358
- fix: remove extra session_type query filter in AsyncMongoDb.get_session by @lethuan127 in #7392
- [fix] Add error handling to get_top_hackernews_stories by @lawrence3699 in #7343
- fix: stop injecting shared HTTP/2 client into OpenAI-based models by @fehmisener in #7328
- [fix] compute audio_total_tokens and correct cookbook metrics examples by @Shiv1909 in #7417
- [fix] handle Wikipedia DisambiguationError and add configurable auto_suggest by @Himanshu040604 in #7222
- feat: add last_n_runs and conversation_limit to SessionSummaryManager by @ysolanky in #7401
- fix: correct stale docstring param name in AgentSession.get_messages by @harshsinha03 in #7423
- feat: add post-execution output review and 6 other HITL features for workflows by @ysolanky in #7409
- feat: workflow within a workflow by @kausmeows in #6116
- refactor: consolidate HITL params into HITL config class by @ysolanky in #7428
- refactor: add HumanReview support to Condition, Steps, and Parallel by @ysolanky in #7433
- chore: Release v2.5.15 by @kausmeows in #7420
New Contributors
- @korntewin made their first contribution in #7198
- @wildchron made their first contribution in #7329
- @luisnmartins made their first contribution in #7364
- @kaiisfree made their first contribution in #7353
- @lethuan127 made their first contribution in #7392
- @lawrence3699 made their first contribution in #7343
- @Shiv1909 made their first contribution in #7417
Full Changelog: v2.5.14...v2.5.15
v2.5.14
Changelog
New Features:
- Fallback Models: Added support for Fallback Models on Agents and Teams. See docs
agent = Agent(
model=OpenAIChat(id="gpt-4o", base_url="http://localhost:1/v1", retries=0),
fallback_models=[Claude(id="claude-sonnet-4-20250514")],
)- Azure Blob Storage: Added SAS token authentication support for
AzureBlobConfig. - SlackTools: Added workspace search tool to
SlackTools.
Bug Fixes:
- LearningMachine: Fixed to filter non-conversational messages from learning extraction.
- OpenAIResponses: Fixed to use correct MIME type for image bytes in OpenAI Responses API.
- Claude: Add automatic trailing user message injection for Claude 4.6+ models that don't support assistant message prefill, with centralized detection across all providers (Anthropic, Bedrock, Vertex AI, LiteLLM).
What's Changed
- feat: add SAS token authentication support for AzureBlobConfig by @ashpreetbedi in #7247
- feat: add fallback model support to Agent and Team by @ysolanky in #7080
- fix: revert IntermediateRunContentEvent changes done in teams by @kausmeows in #7295
- fix: patch review bugs across fallback cookbooks, JWT middleware, and OpenAI error handling by @harshsinha03 in #7299
- feat: add workspace search tool to SlackTools by @Mustafa-Esoofally in #7277
- fix: filter non-conversational messages from learning extraction by @Mustafa-Esoofally in #7280
- fix: use correct MIME type for image bytes in OpenAI Responses API by @Mustafa-Esoofally in #7285
- fix: suppress duplicate member content in Slack team streaming by @Mustafa-Esoofally in #7300
- fix: add text/markdown mime type and fix Anthropic nested schema validation by @ysolanky in #7287
- fix: add
inject_trailing_user_messageand `trailing_user_message_content for models that reject assistant prefill by @harshsinha03 in #7304 - chore: release 2.5.14 by @ysolanky in #7282
Full Changelog: v2.5.13...v2.5.14
v2.5.13
Changelog
Improvements:
- ReliabilityEval: Add subset matching, argument validation, and missing tool call tracking with multi-round tool call collection fixes.
- AgentOS: Enhance /sessions list API to return additional fields (user_id, agent_id, team_id, workflow_id, session_summary, metrics,
total_tokens, metadata). - AgentOS: Add /info API endpoint to return agent, team, and workflow count as lightweight, unauthenticated instance metadata.
- ChromaDB: Implement dynamic batch splitting for large upsert/query operations.
- Reader: Propagate chunk_size to default chunking strategies in reader classes.
- Slack Interface: Add show_member_tool_calls param and automatic card overflow rotation — rotates to a new message when text exceeds a threshold
Bug Fixes:
- VertexAI/Bedrock Claude: Support
messagesparameter in_prepare_request_kwargsfor Claude sub classes - Workflows: Fix continue_run to correctly pause at Condition, Loop, and Router HITL steps — previously only Step instances were checked.
- AgentOS: Exclude interface routes (Slack, Telegram, WhatsApp, A2A) from JWT middleware so webhook deliveries are not rejected with 401.
- Tracing: Fix trace session stats grouping to use session_id only, preventing duplicate rows when a session has runs from different users.
- SurrealDB: Fix trace session stats to use array::first() instead of math::max() for string fields.
- ReliabilityEval: Fix multi-round tool call extraction so all rounds are collected; fix mutation bug modifying original RunOutput.messages;
fix arun() using wrong ID for file save.
What's Changed
- fix: propagate chunk_size to default chunking strategies in reader classes by @sannya-singal in #7212
- cookbook: offline mode support for Qdrant hybrid search by @sannya-singal in #7181
- fix: implement dynamic batch splitting for ChromaDB operations by @sannya-singal in #7148
- fix: continue_run now pauses at Condition, Loop, and Router HITL steps by @ysolanky in #7227
- fix: exclude interface routes from JWT middleware by @ashpreetbedi in #7252
- cookbook: add HITL config save/load workflow examples by @ysolanky in #7225
- feat: add
/infoapi to return agent, team, workflow count by @kausmeows in #7190 - fix: improve /info endpoint auth bypass and response model by @ysolanky in #7256
- fix: group trace session stats by session_id only by @kausmeows in #7243
- fix: use array::first() for SurrealDB trace session stats by @ysolanky in #7257
- fix: enhance /sessions list API to return additional session fields responses by @uzaxirr in #6270
- feat: add show_member_tool_calls param and card overflow rotation for Slack streaming by @Mustafa-Esoofally in #7244
- feat: add subset matching and argument validation to ReliabilityEval by @harshsinha03 in #7230
- fix: add missing messages parameter to VertexAI and Bedrock _prepare_request_kwargs by @harshsinha03 in #7245
- feat: enable channel summarization in Slack interface by @Mustafa-Esoofally in #7255
- chore: release 2.5.13 by @ysolanky in #7258
Full Changelog: v2.5.12...v2.5.13
v2.5.12
What's Changed
- fix: preserve server tool blocks in Claude conversation history by @Mustafa-Esoofally in #6879
- [feat] Docling tool integration with tests and cookbook example by @juliomsilva in #6277
- feat: add SchedulerTools toolkit for agent-driven schedule management by @ysolanky in #7221
- fix: Coda integration fixes (CodingTools, Slack, team streaming, learning) by @ashpreetbedi in #7208
- fix: handle msg_too_long in Slack streaming path by @Mustafa-Esoofally in #7219
- chore: release 2.5.12 by @ysolanky in #7229
New Contributors
- @juliomsilva made their first contribution in #6277
Full Changelog: v2.5.11...v2.5.12
v2.5.10
Changelog
New Features:
- Parallel Search Tool: Add Parallel AI Search support for Vertex AI with native ToolParallelAiSearch integration
- Observability: Extended support with MLflow to have full traces observability of your agents. See docs.
- Docling Reader: Integrated Docling library as a new reader, enabling document processing across a multiple range of file formats.
- WhatsApp Interface V2:
- Added media support (images, video, audio, documents), interactive messages (reply buttons, list menus, locations, reactions), and Team/Workflow support.
- Users can send
/newto start fresh conversations. - Added
enable_encryptionparameter for encrypting phone numbers
- Telegram Interface:
- Added new Telegram interfaces for AgentOS with support for agents, teams, and workflows.
- Multi-modal support and use
/newto start fresh conversations.
- Telegram Tools: Added new tools so agents can send photos, documents, videos, audio, animations, stickers among other things
Improvements:
- Workflow:
- Added
versionquery param toGET /workflows/{id}to fetch specific workflow versions. - Added run level params like-
metadata,dependencies,add_dependencies_to_context,add_session_state_to_contextsimilar to agent/team.
- Added
- Mistral: Added
mistralaiv2 support while maintaining backward compatibility with v1. - Gemini: Added timeout parameter to Gemini model class.
Bug Fixes:
MCPTools: Fixed race condition where parallel MCP tool calls withheader_providerwould each create duplicate sessions, causing the agent to get stuck.- Claude: Fixed structured output detection for supported models
- Streaming Tool Calls: Fixed duplicate tool execution in streaming mode caused by shared dict references in
parse_tool_calls - MongoDb: Fixed the incorrect import of the pymongo async modules.
What's Changed
- fix: prevent deadlock in parallel MCP tool calls with header_provider (fixes #6094) by @giulio-leone in #6821
- fix: remove unnecessary fast-path stale session cleanup in MCPTools by @ysolanky in #6949
- feat: add Parallel web search grounding for Vertex AI Gemini by @ysolanky in #6060
- fix: correct async MongoDB import by @v-vinson in #6399
- fix: mongo validation by @kausmeows in #6957
- feat: add version query param to GET /workflows/{id} endpoint by @harshsinha03 in #6956
- fix: async PostgresDb returns None for missing tables instead of logging ERROR by @kausmeows in #6965
- [fix] replace fragile blocklist with prefix-based structured output detection by @hztBUAA in #6643
- cookbook: add MLflow observability integration via OpenInference by @ysolanky in #6930
- chore: add PR triage automation and improve contribution guidelines by @ysolanky in #6959
- fix: support mistral v2 imports by @harshsinha03 in #6969
- feat: add run-level params to Workflow.run() and arun() by @uzaxirr in #6927
- fix: separate chat and responses metrics by @ysolanky in #6973
- feat: add Telegram interface and extended TelegramTools by @Mustafa-Esoofally in #6377
- chore: consolidate pr-triage workflow into single comment by @ysolanky in #7013
- feat: add timeout parameter to Gemini model class by @fehmisener in #7021
- fix: use list comprehension in parse_tool_calls to prevent shared dict references by @ArivunidhiA in #6579
- feat: add Docling reader integration for advanced document processing by @sannya-singal in #6981
- fix: register Telegram interfaces in system test gateway by @Mustafa-Esoofally in #7026
- feat: WhatsApp interface V2 — media I/O, interactive tools, Team/Workflow support by @Mustafa-Esoofally in #6466
- fix: use valid Telegram bot token format in system tests by @Mustafa-Esoofally in #7027
- chore: Release v2.5.10 by @kausmeows in #7011
New Contributors
- @v-vinson made their first contribution in #6399
- @sannya-singal made their first contribution in #6981
Full Changelog: v2.5.9...v2.5.10
v2.5.9
Changelog
New Features:
- Followups: Added built-in followup suggestions for Agent and Team. See cookbook.
- Datetime Format: Added
datetime_formatparameter to Agent and Team, allowing customstrftimeformatting for datetime context (e.g., ISO-8601, date-only, localized). - Tool Hook Message History: Tool pre/post hooks and agent-level tool_hooks can now access the current run's message history via
run_context.messages - GoogleCalendarTools: Extended
GoogleCalendarToolswith new tools, service account auth, and cookbooks.
Bug Fixes:
- HITL: Fixed human in the loop to support
add_history_to_contextduring multi-round conversations while running - Tools: Removed (None) prefix from tool parameter descriptions
- Siliconflow Model Provider: Updated to use correct default
base_urlfrom.comto.cn - Learning PROPOSE Mode: Auto-enable chat history for
LearningMode.PROPOSEfor multi-turn confirmation. - AgentOS API Docs: Added descriptions to all
Form/Fileparameters across agent, team, and workflow API endpoints forOpenAPI/Swaggervisibility
What's Changed
- fix: resolved continue_run, missing history messages issue by @abhi10691 in #6888
- fix: remove (None) prefix from tool parameter descriptions by @fehmisener in #6906
- feat: add datetime_format to Agent and Team for custom datetime context by @hztBUAA in #6649
- feat: expose run message history to tool hooks with mutation safety by @hztBUAA in #6652
- feat: built-in followup suggestions for Agent and Team by @ysolanky in #6672
- [fix] siliconflow: correct default base_url from .com to .cn by @NIK-TIGER-BILL in #6933
- feat: extend GoogleCalendarTools with new tools, service account auth, and cookbooks by @Mustafa-Esoofally in #6926
- fix: auto-enable chat history for LearningMode.PROPOSE by @Mustafa-Esoofally in #6928
- chore: add form parameter descriptions to AgentOS API endpoints by @uzaxirr in #6941
- chore: Release v2.5.9 by @kausmeows in #6940
New Contributors
- @abhi10691 made their first contribution in #6888
- @NIK-TIGER-BILL made their first contribution in #6933
Full Changelog: v2.5.8...v2.5.9
v2.5.8
Changelog
New Features
- Human-Readable IDs: Agents and teams now use human-readable identifiers (e.g.,
brave-falcon-7x3k) instead ofUUIDs, making debugging and monitoring more intuitive. - AgentOS:
serve()now supportsAGENT_OS_HOSTandAGENT_OS_PORTenvironment variables as fallbacks, simplifying container deployments. - GitlabTools: Added
GitlabToolswith read-focused GitLab integrations, async support, and cleaner tool configuration. - GmailTools: Extended
GmailToolswith new tools and service account auth.
Bug Fixes
- Media in Run Output: Generated media (images, audio) is now always included in run output, regardless of the
store_mediasetting and is rather scrubbed before storing in DB - OpenAIResponses: Fixed handling of mixed
external_executionand regular tools when using OpenAI Responses API. - MySQL: Added
json_serializerto MySQL engine creation for proper JSON handling. - PostgreSQL: Removed
session_typefilter fromget_sessionto prevent session data loss when session types change. - Workflow: Fixed a bug where
Loopiterations always received the original input instead of the previous iteration's output. Added a flagforward_iteration_outputto opt-in to this behaviour.
What's Changed
- feat: Docker-style human-readable IDs for agents and teams by @ysolanky in #6869
- feat: add AGENT_OS_HOST/AGENT_OS_PORT env var fallbacks to serve() by @Mustafa-Esoofally in #6857
- fix: remove session_type filter from PostgreSQL get_session to prevent session data loss by @kausmeows in #6873
- fix: add json_serializer to MySQL engine creation by @willemcdejongh in #6848
- [fix] handle mixed external_execution and regular tools for OpenAI by @hztBUAA in #6630
- fix: include generated media in run output regardless of store_media setting by @Br1an67 in #6793
- cookbook: add x402scan MCP tools example by @SamOpenClaw in #6555
- feat: add GitlabTools with tests and cookbook example by @SalimELMARDI in #6721
- feat: extend GmailTools with new tools, service account auth, and agentic cookbooks by @Mustafa-Esoofally in #6765
- fix: loop iterations to forward output from previous iteration by @kausmeows in #6868
- fix: resolve duplicate operationId warnings in disabled feature router by @kausmeows in #6887
- chore: Release v2.5.8 by @kausmeows in #6886
New Contributors
- @SamOpenClaw made their first contribution in #6555
- @SalimELMARDI made their first contribution in #6721
Full Changelog: v2.5.7...v2.5.8