Skip to content

Framework Update: Agno v3.1.11

Oct 29, 20261 min
TL;DRThree things in Agno v3.1.11: (1) Harness Agents arrive — `ClaudeAgent`/`CodexAgent` can now join a `Team` directly as members or serve as a step inside `Parallel`/`Loop`/`Condition`/`Router` in a `Workflow`, each running its own model, tools, and workspace while keeping its own conversation history within a session; (2) advanced Session Search — `POST /sessions/search` supports nested AND/OR/NOT filters over sessions; (3) Company Tasks and Routines get full lifecycle management APIs (Tasks can be created or edited at any stage, Routines can be cancelled, archived, or restored).

Look up & save

Loading dictionary…

🌏 中文版

Release Info

ItemValue
FrameworkAgno
Versionv3.1.11
Previousv3.1.10
Released2026-10-27
Release Notesv3.1.11
GitHubagno-agi/agno
Stars43k

Why this version matters

Multi-agent teams have had a persistent gap: every member of a Team had to be defined with Agno's own primitives, so dropping in an external coding agent like Claude Code or Codex — something with its own full toolchain, sandbox, and conversation state — meant hand-rolling an adapter layer. This release makes ClaudeAgent/CodexAgent first-class Harness Agents that can become formal Team members or a step in a Workflow, including inside control flows like Parallel, Loop, Condition, and Router. The team leader delegates to them with the same delegate_task_to_member it uses for any other member; the difference is that this particular member is running an entire independent coding agent with its own workspace and sandbox, and it keeps its own conversation history across turns of the same session. In effect, an external coding agent goes from being a black box you had to wire in by hand to a first-class citizen you can delegate to and compose with in multi-agent orchestration.

Agno v3.1.11: Harness Agents join a Team
Agno v3.1.11: Harness Agents join a TeamThe team leader still delegates with delegate_task_to_member — the difference is that two of the members are Harness Agents running in a sandbox SANDBOX Team Leader orchestrates Member Agno Agent ClaudeAgent sandboxed CodexAgent sandboxed delegates

Simplified: only the delegation relationship is shown; Workflow's Parallel/Loop/Condition/Router control flows are omitted.

Key changes

  • Harness Agents as Team members or Workflow steps: ClaudeAgent/CodexAgent can be a Team member or a step inside Parallel/Loop/Condition/Router in a Workflow; a harness agent with sandbox= runs each turn in its own container as a member or step, and AgentOS lists harness members on the team page → no more hand-rolling an adapter to wire an external coding agent into multi-agent orchestration; the team leader delegates with the existing delegate_task_to_member
  • Advanced Session Search: new GET /sessions/filter-schema and POST /sessions/search support nested AND/OR/NOT filters on session name, session/user/component IDs, session type, and created/updated timestamps, matching the existing Traces API's filtering logic; PostgreSQL and SQLite apply predicates before counting and pagination, with a batched fallback for other adapters, and both sync and async client methods are included → deployments with large numbers of sessions can query with structured filters instead of fetching everything and filtering in the application layer
  • Company Task lifecycle management across every stage: POST /company/tasks now accepts status, so a Task can be created in Backlog, Ready, or Cancelled; Tasks can move between any stages, Done or Cancelled Tasks can be reopened, and title and brief can be edited at any stage — though In Progress still only starts from a run, and moving a Task out of In Progress while that run is executing or paused is refused → more complete Task lifecycle management while keeping the "can't be bypassed while running" safety boundary
  • Company Routine operations API: new POST /company/routines/{id}/cancel, /archive, /restore, and an admin-only DELETE /company/routines/{id}; GET /company/routines supports sort_by/sort_order; pausing or resuming an already-paused on-demand Routine now returns 409, and scheduled runs no longer bump updated_at → Routine lifecycle management finally catches up to Tasks

Breaking Changes

No breaking changes in this release. A few fixes do tighten edge-case behavior:

  • ReaderFactory.create_reader() now returns a fresh reader configured per call instead of a cached singleton, so overrides like chunk_size reliably take effect and mutations no longer leak across Knowledge instances
  • StepOutput.to_dict() now preserves int/float/bool/str values as their own types instead of stringifying them, so a step that returned 0 or False no longer comes back as "0"/"False" after an HITL resume or a session reload

Migration guide

No code changes needed — just upgrade:

pip install --upgrade agno==3.1.11
# Wire Claude Code or Codex into a Team and delegate to them like any other member
from agno.agent import ClaudeAgent, CodexAgent
from agno.team import Team

team = Team(members=[
    ClaudeAgent(sandbox=my_sandbox),
    CodexAgent(sandbox=my_sandbox),
    # other regular Agno Agent members
])

Comparison with other frameworks

On the same day (2026-10-27), Pydantic AI's v2.63.0 added IPythonCodeMode, evolving its own execution layer with another code-execution environment. Agno took the opposite route, absorbing mature external coding agents like Claude Code and Codex directly into the Team/Workflow orchestration layer as formal members that can be delegated to. Both frameworks are grappling with the same question at the same time — where to draw the line between an agent framework and an external coding agent — just from opposite directions: one builds its own execution environment, the other orchestrates existing toolchains directly.

Takeaway

I used to think wiring Claude Code into a multi-agent Team meant having some Agent's tool shell out to the Claude Code CLI. Seeing Agno make it a Harness Agent that's a first-class Team member — one the leader can delegate to and compose with Parallel/Loop control flow — made it clear that the difference between an external coding agent and a framework-native Agent can just be "this member runs on a different, complete agent runtime," and the orchestration layer's delegation logic doesn't need to know or care where that difference lives.

References