Skip to content

Releases: agno-agi/agno

v2.6.16

15 Jun 20:55
370e321

Choose a tag to compare

Changelog

Improvements

  • Support parallel-web >= 1.0 GA API in ParallelBackend: migrate web_search/web_extract to the top-level client and pin the floor to >=1.0

What's Changed

Full Changelog: v2.6.15...v2.6.16

v2.6.15

15 Jun 17:56
eb48321

Choose a tag to compare

Changelog

New Features:

  • Custom, Scoped, Identity-Aware MCP Tools: The AgentOS MCP server (served at /mcp) is now a real extension point, configured through a single MCPServerConfig object. You can register custom tools (plain callables or Agno @tool/Functions), scope the built-ins (enable_builtin_tools=False, or filter with include_tags/exclude_tags), inject the authenticated caller identity into a tool (declare user_id and AgentOS supplies the JWT subject while hiding it from the client schema), gate calls with a one-line authorize function, and opt into built-in DNS-rebinding protection via allowed_hosts/allowed_origins. All with data, no custom middleware classes. Fully backward compatible: without mcp_config, all built-in tools register exactly as before.

Bug Fixes:

  • Call-Site Dependencies Merge: Call-site dependencies passed to agent.run()/team.run() replaced the configured Agent.dependencies/Team.dependencies wholesale, which dropped prompt-template vars over interfaces that always pass call-site dependencies (e.g. Slack/WhatsApp). They now merge({**configured, **call_site}, call-site wins on conflict), matching how metadata/knowledge_filters already merge.

What's Changed

Full Changelog: v2.6.14...v2.6.15

v2.6.14

12 Jun 16:38
0c64694

Choose a tag to compare

Changelog

New Features:

  • Learnings CRUD on AgentOS: Added create, read, update, and delete endpoints for learnings on AgentOS.

Bug Fixes:

  • Gemini Thread Safety: Removed per-response Gemini cleanup that caused a thread-safety race under concurrent usage.
  • JSON Object Providers: JSON instructions are now included in the followup prompt for json_object providers.

What's Changed

New Contributors

Full Changelog: v2.6.13...v2.6.14

v2.6.13

10 Jun 21:02
5b505cf

Choose a tag to compare

Changelog

New Features:

  • Sub-Agent Event Streaming: Sub-agent events from the context provider update tool now stream through to the parent run.
  • AgentOS Registry Auto-Population: The AgentOS registry now auto-populates from agents, teams, and workflows.
  • Workflows HITL over Sockets: Added socket support for human-in-the-loop workflows.
  • Slack App Manifest: Added a Slack app manifest for the AgentOS interface.

Bug Fixes:

  • JSON Schema: json_schema now handles Optional dataclass fields that have no declared type.
  • MCPTools Sessions: Refreshed MCPTools sessions are now closed in the call task.
  • Tool Arguments: Preserve whitespace in tool arguments.
  • Content Hashing: Metadata is now included in the content hash so upsert=False inserts of the same document no longer collapse.
  • MultiMCP: Clean up MultiMCP connection failures.
  • DaytonaTools: Quote shell paths in DaytonaTools.

What's Changed

New Contributors

Full Changelog: v2.6.12...v2.6.13

v2.6.12

05 Jun 19:03
1eeb0c6

Choose a tag to compare

Changelog

New Features:

  • HTML File Generation: Added HTML file generation support with example app.
  • AG-UI State Events: Added AG-UI state events support.
  • Tuning Engines Provider: Added Tuning Engines as a new model provider.
  • WorkOS RBAC Example: Added WorkOS example for role-based access control.
  • Latitude Observability: Added Latitude via OpenInference observability example.

Improvements:

  • MiniMax: Upgraded default model to M3.
  • WhatsApp README: Updated setup and webhook guide for new Meta developer dashboard.
  • README: Enhanced with additional resource links.

Bug Fixes:

  • Milvus: Updated hybrid search param to use drop_ratio_search and remove drop_ratio_build
  • ArxivReader: Updated arxiv Client.results() usage.
  • Runs: Update to guard against IndexError when runs list is empty in from_dict.
  • Code Chunking: Updated to skip tokenizer tests on HuggingFace download error.
  • Agentic State Tool: Updated enable_agentic_state tool receives correct schema for dict params.
  • AG-UI Multimodal: Fixed to preserve AG-UI multimodal inputs.
  • AG-UI Protocol: Updated to pin ag-ui-protocol>=0.1.14 to prevent reasoning role validation error.

What's Changed

New Contributors

Full Changelog: v2.6.11...v2.6.12

v2.6.11

02 Jun 15:24
ee60400

Choose a tag to compare

Changelog

New Features

  • Parallel Web Task API & Monitor API Tools: Added tools for Task API and Monitor API integration for parallel web.
  • Manifest: Added Manifest for per-entity AgentOS UI metadata configuration.

Bug Fixes

  • WhatsApp: Upgraded WhatsApp Graph API version to v25.0.

What's Changed

Full Changelog: v2.6.10...v2.6.11

v2.6.10

02 Jun 06:11
d1283bd

Choose a tag to compare

Changelog

New Features

  • Model Providers: Added four new model providers:
    • Inception Labs model integration
    • Xiaomi MiMo model provider
    • MiniMax model provider (M2.7)
    • Cloudflare AI Gateway model provider
  • YouTools: Added YouTools for You.com Search API integration.
  • DOCX Generation: Added DOCX file generation support.
  • Context Provider Streaming: Stream sub-agent events from context providers.
  • Registry: Added knowledge and managers support in registry.
  • Run Persistence: Updated agent, team, and workflow to properly persist cancelled runs.
  • RunCompleted Event: Added files field on RunCompleted event.
  • Model String Parser: Added google-interactions provider to model string parser.

Improvements

  • DeepSeek: Refreshed DeepSeek V4 thinking mode and defaults.
  • Cookbook: Updated Parallel MCP to use free endpoint; polished image_search README; switched data_labeling examples to model string shorthand.

Bug Fixes

  • MCP:
    • Prevent MCP connection failures from crashing agents.
    • Avoid kwarg collision when MCP tools have team/agent/run_context params.
  • JSON DB: Use UTF-8 encoding for JSON DB files.
  • CSV Toolkit: Read CSV toolkit files as UTF-8.
  • Async Fixes:
    • Use async Attachment.read() instead of blocking requests.get in Discord client.
    • Replace blocking time.sleep with await asyncio.sleep in _async_create_collection_and_scope.
    • Replace deprecated asyncio.get_event_loop() with get_running_loop() in embedders.
    • Use running loop in YouTube reader.
    • Tools use async entrypoint in async execution chain when no hooks configured.
    • CSVReader.async_read uses newline join to match sync read behavior.
  • OpenAI Tools: Close audio file handle in OpenAITools.transcribe_audio.
  • Team:
    • Fixed team continue run dependencies;
    • Added _acontinue_run_background_stream to prevent AttributeError on continue-run SSE.
  • Parser Model: Skip strict tool mode when a parser_model is set (Agent and Team); added parser_model guard to continue_run_dispatch and acontinue_run_dispatch.
  • RemoteTeam: Added knowledge filter attributes.
  • Embeddings: Fixed NULL embeddings bug.
  • Vector DBs: Milvus vector DB compatibility with contents_db; removed deprecated Tantivy FTS, fixed Redis hset mypy error.
  • SeltzTools: Updated for current SDK.
  • Fal: Fixed array handling in fal.py.
  • Zendesk: URL-encode search query in Zendesk tool.
  • Memory: Fixed memory_topics signature mismatch across DB backends.
  • Sessions: Raise ValueError in delete_session when called with async db.
  • File Upload: Fixed file upload media handling.
  • Slack HITL: Truncate HITL card body to prevent silent Slack rejection.

What's Changed

New Contributors

Read more

v2.6.9

21 May 21:33
dfb9298

Choose a tag to compare

Changelog

New Features:

  • Approvals - Resolved Approval in Post-Hooks: Post-hooks and observability integrations can now read the full resolved approval record (resolved_by, resolved_at, etc.) via run_response.metadata["approval"]. Previously only status and resolution_data were exposed. Lives in metadata so it works uniformly across RunOutput / TeamRunOutput / future WorkflowRunOutput. (#7366, #8032)

Improvements:

  • PgVector - prefix_match=True actually works: PgVector(prefix_match=True) was a silent no-op - it appended * then routed through websearch_to_tsquery, which ignores wildcards. Now routes through to_tsquery('tok:*') with proper tokenization, so partial queries like "ani" FTS-match "animal" as documented. New cookbook cookbook/07_knowledge/04_advanced/06_prefix_search.py shows the help-center typeahead use case. (#8048, #8051, #8052)
  • PgVector - empty-tsquery fallback robustness: Replaced the to_tsquery(language, '') fallback with a literal ''::tsquery cast so behavior no longer depends on the parser tolerating empty input. (#8053)
  • Claude variants - temperature/top_p/top_k = 0 honored: Anthropic, AWS, and VertexAI Claude variants were silently dropping 0.0 values due to bare truthiness checks. Switched to is not None so deterministic output works as intended. (#8009, fixes #8004)
  • Calendar & Gmail context providers - clean instruction layering: Trimmed DEFAULT_READ_INSTRUCTIONS / DEFAULT_WRITE_INSTRUCTIONS from 157 lines to 27 by removing content already supplied by the toolkit-side instructions. Provider now owns role + safety; toolkit owns the technical reference. (#7982)
  • decision_log - drop deprecated datetime.utcnow(): Replaced with datetime.now(timezone.utc) to clear the Python 3.12 deprecation warning. (Closes #8030)
  • Chonkie: Bumped to >=1.6.7 to pick up the upstream language auto-detection fix; removed the temporary test workarounds from #7904. (#8012)

Bug Fixes:

  • GeminiInteractions - server-side tool calls leaking onto the agent path: On the agent path (Antigravity, Deep Research), FunctionCallSteps describe tools the autonomous loop runs inside the server-managed sandbox. Previously we surfaced them as local tool_calls, leading to Function <name> not found and follow-up 400 invalid_request errors. Gated the FunctionCallStep branch on self.agent is None for both streaming and non-streaming. Model path with user-declared tools is unchanged. (#8045)
  • Claude (Anthropic / AWS / VertexAI) - temperature=0 silently dropped: See Improvements. Every prior release silently fell back to API defaults (~1.0) when callers explicitly set 0. (#8009, fixes #8004)

What's Changed

New Contributors

Full Changelog: v2.6.8...v2.6.9

v2.6.8

19 May 22:08
a15220c

Choose a tag to compare

Changelog

New Features:

  • Antigravity: Added first-party support for Google's Antigravity API in two shapes — AntigravityAgent (a BaseExternalAgent served through AgentOS with native sessions/streaming/UI) and AntigravityTools (a Toolkit that lets any Agno agent delegate a sub-task to a managed Antigravity sandbox).
  • Gemini Managed Agents: Added GeminiInteractions support for Google's managed agents — Deep Research (autonomous research with citations, background streaming with reconnect/last_event_id resume) and Antigravity (general-purpose agent in a managed Linux sandbox). New agent / agent_config / environment fields, per-agent forcing of background and store, and support for mcp_servers + file_search_store_names on the agent path.
  • Cookbook - Data Labeling: Added cookbook/data_labeling/ with 18 self-contained workflows covering text, image, audio, video, document, and composed (LLM-as-judge, quality review) labeling primitives.
  • Cookbook - Slack HITL: Added a deterministic Slack HITL incident-commander demo showing structured pauses via tool_choice="required", user_input echo, and clean termination via stop_after_tool_call=True.

Improvements:

  • Path Safety (Security): Centralized path-safety into a new agno.utils.path_safety module with safe_join and safe_join_subpath. Hardened FileGenerationTools, SlackTools, Toolkit._check_path, agno.skills.utils.is_safe_path, and FileTools.check_escape against path traversal, symlink escape, control-char injection, Windows MagicDot, and Unicode normalization attacks. Introduced PathSecurityError (FileGenerationSecurityError kept as deprecation alias). Bumped requires-python to >=3.9,<4.
  • Parallel MCP: ParallelMCPBackend now sends User-Agent: agno/<version> on every request so Parallel can attribute traffic to agno.
  • Evals Config: Dropped the unused available_models field from EvalsDomainConfig; the top-level AgentOSConfig.available_models is now the only supported source for the Evals UI dropdown.
  • Chonkie: Updated chonkie dependency pin (follow-up to #7869).
  • Cookbook: Renamed gemini-3-flash-preview to gemini-3.5-flash across the Gemini Interactions cookbooks.

Bug Fixes:

  • AG-UI Teams: Fixed a typo (stream_stepsstream_events) that caused teams running via AG-UI to silently drop all intermediate streaming events (lifecycle, reasoning, tool calls, member delegations) for ~7 months.
  • Slack Extra: Added aiohttp>=3.7.3,<4 to the slack optional extra — AsyncWebClient imports aiohttp at module load, so pip install agno[slack] was broken for all Slack operations.
  • Google Drive: Surfaced the Drive API incompleteSearch flag from GoogleDriveTools.search_files() so corpora="allDrives" callers can detect when Drive did not search every drive.
  • GeminiInteractions: Added a generation_config passthrough field for advanced controls (top_k, presence_penalty, etc.) and fixed history handling — when previous_interaction_id is set, only the new turn is sent rather than replaying the full history. Now actually leverages server-side statefulness.
  • Anthropic Server Tools: Preserved server_tool_use and code-execution content blocks in message history so multi-turn server-tool flows no longer break across turns.
  • Anthropic Hardening: Follow-up to the above — switched to the canonical redacted_thinking type literal (the SDK rejects redacted_reasoning_content), accepted both spellings on the streaming start event, added a dedup guard on round-tripped server tool blocks, made coercion failures visible via log_warning, and coerced non-block tool-result items to text.
  • Gemini Errors: Generic Gemini errors now include the exception type when str(error) is empty or weak, preserving error context across invoke / invoke_stream / ainvoke / ainvoke_stream.
  • N1N: Added the missing n1n provider mapping in get_model() so Agent(model="n1n:...") model-string paths now resolve correctly.

What's Changed

New Contributors

Full Changelog: v2.6.7...v2.6.8

v2.6.7

15 May 17:57
9bdccd4

Choose a tag to compare

Changelog

New Features:

  • Gemini Interactions: Added a new GeminiInteractions model class that makes use of Googles new stateful interactions API
  • AgentOS: Added an opt-in per-user data isolation layer for AgentOS authenticated endpoints.

Improvements:

  • Knowledge Readers: Added allowed_hosts parameter to URL-fetching readers to restrict outbound fetches.

Bug Fixes:

  • Qdrant: Fixed to remove duplicate sparse encoder call in Qdrant async_insert.
  • Traces: Fixed the parent trace's session_id / agent_id / team_id from being overwritten by a child agent's spans when both share a trace_id. Most visible when a Team uses a post-hook (e.g. @hook(run_in_background=True).
  • Workflow: Fixed workflow’s HITL continue path to use corresponding async function acleanup_run if running in an async context.

What's Changed

New Contributors

Full Changelog: v2.6.6...v2.6.7