🌏 中文版
Release Info
| Item | Value |
|---|---|
| Framework | Agno |
| Version | v3.1.0 |
| Previous | v3.0.10 |
| Released | 2026-10-01 |
| Release Notes | GitHub Release |
| GitHub | agno-agi/agno |
| Stars | 42.5k |
Why this release matters
Agno's pitch has always been "batteries included": code execution, public MCP endpoints, and now user management and a filesystem, all shipped as built-in AgentOS components. 3.1 addresses the thing multi-tenant deployments actually get stuck on — who can call which agent, and who can read or write which files. The new agno.os.authz package pulls role storage, scope policy, and audit logging directly into the framework, so you don't need to bolt on your own authorization middleware; agno.fs gives agents a native file-management interface instead of wiring up S3 or a self-hosted file service. But this release also continues the same tightening-of-defaults direction as 3.0.10: MCP's bundled tools no longer ship automatically just because you configured the endpoint — you now have to list which ones you want. Existing filesystem tables are rejected outright by the new version, forcing a manual migration instead of silently continuing on the wrong schema.
What changed
- User management / RBAC (
agno.os.authz): a new package adding a role store, scope policy, audit log, user directory, and an admin router, with pluggable native and fine-grainedfgaauthorization engines → multi-tenant AgentOS deployments finally get a framework-native authorization layer, instead of bolting on Auth0 or hand-rolling RBAC middleware - AgentOS Filesystem (
agno.fs/DbFileSystem): addsDbFileSystemwith dedicated/filesystemroutes for listing, reading, and managing files, backed by anagno_fstable → agents that need file I/O no longer have to integrate S3 or run their own file service; they use AgentOS's built-in database-backed filesystem directly - MCP config/auth updates: refreshed MCP server configuration and built-in MCP authorization handling
AIMLAPITools: a new toolkit for image, video, speech, and transcription via the AI/ML API → another provider-agnostic path for multimodal tooling
Breaking Changes
- Filesystem table re-key (
agno_fs):- v3.1 re-keys the table from its old structure to
(namespace, user_id, path), whereuser_idis empty ("") for the shared/no-user partition - A table built by an earlier release is now refused outright with
SchemaOutdatedError— the re-key never runs automatically - Affected: only deployments actually using
DbFileSystem; you must stop the application and run the matching migration script for your database before upgrading (this table is managed byDbFileSystem's own schema and is deliberately excluded fromMigrationManager)
- v3.1 re-keys the table from its old structure to
MCPConfig's bundled default and lifecycle tools switch to opt-in:- Before: setting
tools=[...]also automatically served the built-indefault_toolsand lifecycle tools (continue_run/cancel_run) - After:
default_toolsandlifecycle_toolsboth default toFalse;tools=[...]now publishes exactly the tools you list - Affected: MCP deployments relying on the old "configuring tools also gets you the built-in ones" behavior — those tools will simply disappear after upgrading
- Before: setting
Migration Guide
Upgrading from 3.0.x to 3.1.0
pip install --upgrade agno==3.1.0
# Only needed for deployments using DbFileSystem: stop the app, then run
# the script matching your database
python libs/agno/migrations/migrate_filesystem_postgres.py # PostgreSQL
python libs/agno/migrations/migrate_filesystem_sqlite.py # SQLite
# Before (3.0.x) — configuring tools also bundled in the built-in defaults and lifecycle tools
mcp_config = MCPConfig(tools=["my_custom_tool"])
# After (3.1.0) — opt back into the old behavior explicitly
mcp_config = MCPConfig(
tools=["my_custom_tool"],
default_tools=True,
lifecycle_tools=True,
)
Everything else in this release (HITL resume duplicating history, OpenAIResponses losing its chained response, zero-value handling in CSV/shell tools, and similar fixes) is a bug fix that needs no code changes on upgrade.
How this compares to other frameworks
Turning RBAC and a filesystem into native framework components widens Agno's gap with LangGraph and CrewAI, where authorization and storage are still mostly left to the integrator to wire up externally. But that "batteries included" approach has a recurring cost: once again, this release leads with tightening security and permission boundaries (MCP tools opt-in, mandatory filesystem migration) rather than stacking new features — the same pattern as 3.0.10 tightening run_shell's default. Haystack 3.3, released the same day, took the opposite route: no new authorization layer, just security and correctness fixes (an anyio CVE) on existing pipeline components. That split reflects two different takes on "production-ready": Agno is building out platform-level governance, Haystack is hardening the correctness and performance of what it already has.
Today's takeaway
I used to assume a failed schema migration usually meant "quietly keeps running on the wrong structure." Seeing Agno's new version flatly refuse to read or write an old filesystem table with SchemaOutdatedError made it clear that refusing to start is actually the safer design — rather than letting a mismatched key structure silently corrupt data, it's better to force a hard error and make the operator run the migration script, instead of leaving behind a system that looks like it's working while the data underneath has already drifted out of alignment.
References
Loading...