v2.6.8
agno-agi/agnov2.6.8May 19, 2026by ysolanky
AI Summary
Adds first-party support for Google's Antigravity API and Gemini Interactions (Deep Research), introduces a data labeling cookbook, and hardens filesystem security against path traversal attacks.
Key Highlights
- Antigravity API support (Agent and Tools)
- Gemini Interactions: Deep Research and Antigravity agents
- Data Labeling cookbook with 18 workflows
- Centralized path safety module to prevent attacks
New Features
- AntigravityAgent and AntigravityTools
- GeminiInteractions for Deep Research
- Data Labeling Cookbook
- Deterministic Slack HITL incident commander demo
- Path Security module with `safe_join` and `PathSecurityError`
Full Release Notes
# 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_steps` → `stream_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 * [chore] identify agno traffic to Parallel MCP via User-Agent by @NormallyGaussian in https://github.com/agno-agi/agno/pull/7857 * [fix] Resolve N1N model strings by @pragnyanramtha in https://github.com/agno-agi/agno/pull/7948 * chore: update chonkie deps by @chonk-lain in https://github.com/agno-agi/agno/pull/7904 * fix: preserve Anthropic server tool content blocks in message history by @aayushbaluni in https://github.com/agno-agi/agno/pull/7766 * fix(gemini): preserve generic error context by @MukundaKatta in https://github.com/agno-agi/agno/pull/7607 * fix: harden Anthropic server tool content block handling by @ysolanky in https://github.com/agno-agi/agno/pull/7977 * fix: GeminiInteractions generation_config passthrough and stateful input slicing by @ysolanky in https://github.com/agno-agi/agno/pull/7973 * fix: centralize path safety and harden filesystem-touching tools by @Himanshu040604 in https://github.com/agno-agi/agno/pull/7707 * cookbook: add deterministic Slack HITL incident commander demo by @Himanshu040604 in https://github.com/agno-agi/agno/pull/7831 * [fix] Surface incomplete Google Drive searches by @basnijholt in https://github.com/agno-agi/agno/pull/7824 * fix: add aiohttp to slack extra dependencies by @Mustafa-Esoofally in https://github.com/agno-agi/agno/pull/7939 * fix: use stream_events instead of stream_steps for AG-UI teams by @Mustafa-Esoofally in https://github.com/agno-agi/agno/pull/7938 * chore: drop unused available_models field from EvalsDomainConfig by @harshsinha03 in https://github.com/agno-agi/agno/pull/7993 * cookbook: rename gemini-3-flash-preview to gemini-3.5-flash by @ysolanky in https://github.com/agno-agi/agno/pull/8005 * cookbook: data labeling primitives (18 workflows) by @ashpreetbedi in https://github.com/agno-agi/agno/pull/7976 * feat: add Gemini managed agents (Deep Research + Antigravity) to GeminiInteractions by @kausmeows in https://github.com/agno-agi/agno/pull/7975 * feat: add antigravity tools and external agent by @ysolanky in https://github.com/agno-agi/agno/pull/8006 * chore: release 2.6.8 by @ysolanky in https://github.com/agno-agi/agno/pull/8008 ## New Contributors * @NormallyGaussian made their first contribution in https://github.com/agno-agi/agno/pull/7857 * @pragnyanramtha made their first contribution in https://github.com/agno-agi/agno/pull/7948 * @chonk-lain made their first contribution in https://github.com/agno-agi/agno/pull/7904 * @aayushbaluni made their first contribution in https://github.com/agno-agi/agno/pull/7766 * @MukundaKatta made their first contribution in https://github.com/agno-agi/agno/pull/7607 **Full Changelog**: https://github.com/agno-agi/agno/compare/v2.6.7...v2.6.8