v3.1.5

agno-agi/agnov3.1.5Oct 19, 2026by kausmeows

Upgrading?

AI Summary

This release introduces support for repository workspaces and S3-based checkpoint storage for sandboxed agents, along with a new KeenableTools toolkit. It also includes improvements to on-demand scheduling and fixes several bugs regarding workflow file propagation and FastAPI compatibility.

Key Highlights

  • Sandboxed agents now support `Repository` objects to pin specific commits and work within defined repositories.
  • New `S3CheckpointStore` enables storing sandbox checkpoints in S3-compatible buckets for multi-replica setups.
  • On-demand schedules can now run without a cron expression, triggered only via HTTP routes.
  • New KeenableTools toolkit provides keyless web search and page extraction capabilities.
  • Bug fixes include workflow file propagation, YouTube URL parsing, and AgentOS form defaults under FastAPI 0.147.

New Features

  • Repositories for Sandboxed Agents: Sandboxed `ClaudeAgent` or `CodexAgent` can take `repository=Repository(url, branch="main")` to start sessions in a specific repo.
  • S3 Checkpoint Store: `S3CheckpointStore(bucket, prefix=..., endpoint_url=...)` for storing sandbox checkpoints in S3-compatible buckets.
  • Open a Run's Sandbox Checkpoint: `open_run_checkpoint(run_id)` / `aopen_run_checkpoint` on sandboxed agents yield verified archives from completed runs.
  • On-Demand Schedules: Schedules with empty or omitted `cron_expr` never arm themselves and run only through their trigger route.
  • KeenableTools: New toolkit for Keenable web search and page extraction (`web_search`, `fetch_url_content`) with async variants.

Full Release Notes

# Changelog

## New Features:

- **Repositories for Sandboxed Agents**: A sandboxed `ClaudeAgent` or `CodexAgent` takes `repository=Repository(url, branch="main")` and starts every session in that repository at `/workspace/repository`. The first turn pins the exact commit, later turns keep the pin and the engineer's edits across warm reuse and checkpoint restore, and private repositories authenticate with `GITHUB_READ_TOKEN` from the sandbox environment. See [cookbook](https://github.com/agno-agi/agno/blob/main/cookbook/frameworks/sandbox/repository_workspace.py). (#11121)
- **S3 Checkpoint Store**: `S3CheckpointStore(bucket, prefix=..., endpoint_url=...)` keeps sandbox checkpoints in an S3-compatible bucket, so sandboxed agents run on several replicas without a shared filesystem. Objects are content-addressed, uploads are verified before `put` returns, and credentials come from the AWS environment. See [cookbook](https://github.com/agno-agi/agno/blob/main/cookbook/frameworks/sandbox/docker/sandbox_s3_checkpoints.py). (#11133)
- **Open a Run's Sandbox Checkpoint**: `open_run_checkpoint(run_id)` / `aopen_run_checkpoint` on a sandboxed agent yield the verified archive a completed run committed, so a host process can read what a turn left behind after the container is gone. `checkpoint_store` exposes the store the agent's turns write to. See [cookbook](https://github.com/agno-agi/agno/blob/main/cookbook/frameworks/sandbox/docker/open_checkpoint.py). (#11131)
- **On-Demand Schedules**: A schedule with an empty or omitted `cron_expr` never arms itself and runs only through its trigger route, over HTTP and through `ScheduleManager`. `ScheduleResponse.cron_expr` is now optional and reports it as `null`. (#11118)
- **KeenableTools**: New toolkit for Keenable web search and page extraction (`web_search`, `fetch_url_content`, with async variants). It works with no API key and no new dependency, and refuses fetches that resolve to private or loopback addresses. See [cookbook](https://github.com/agno-agi/agno/blob/main/cookbook/91_tools/keenable_tools.py). (#9558)

## Improvements:

- **External Agents in the Registry**: `Registry(agents=[...])` accepts `ClaudeAgent` and `CodexAgent`, and AgentOS agent, team and workflow responses carry a `sandboxed` flag. (#11127)
- **Schedule Endpoint Edits**: Changing a schedule's `endpoint` over `PATCH /schedules/{schedule_id}` or through `ScheduleManager` now updates its target columns instead of leaving them stale. (#11118)

## Bug Fixes:

- **AgentOS Form Defaults on FastAPI 0.147**: FastAPI 0.147.0 reads omitted `bool` form fields as `False`, so run and continue routes returned JSON instead of SSE when `stream` was omitted and continues without `regenerate=true` failed with 400. The routes now restore the declared defaults for `stream`, `monitor` and `replace_original`. (#11160)
- **Sandbox Runs Without Redis**: Sandboxed agent runs over `POST /agents/{agent_id}/runs` no longer answer 400 on a Postgres durable queue without Redis. Cross-replica streaming and cancellation still need Redis. (#11161)
- **Workflow Files**: `File` outputs produced inside `Parallel`, `Steps`, `Loop`, `Condition` and `Router` steps now reach the next step and `workflow_run_response.files`. (#10950)
- **YouTubeTools**: Video ids are read from Shorts, live, mobile, music and privacy-enhanced URLs, and empty ids return `No video ID found` before any request. (#10707)
- **PerplexitySearch and PubmedTools**: An explicit `max_results=0` is honoured instead of being replaced by the default. (#10595)
- **InMemoryDb**: `upsert_user_memory` stores a copy, so mutating the `UserMemory` after the upsert no longer changes the stored memory. (#11016)

## What's Changed
* feat: add Company heartbeat routines and sources by @ashpreetbedi in https://github.com/agno-agi/agno/pull/11102
* feat: automate Ready Tasks and bounded Routine acceptance by @ashpreetbedi in https://github.com/agno-agi/agno/pull/11104
* feat: configure repositories for sandboxed harness agents by @ashpreetbedi in https://github.com/agno-agi/agno/pull/11121
* fix: complete Company automation and configuration follow-up by @ashpreetbedi in https://github.com/agno-agi/agno/pull/11118
* fix: stabilize Company Task session ownership and recovery by @ashpreetbedi in https://github.com/agno-agi/agno/pull/11126
* feat: execute Company Tasks with sandboxed harness agents by @ashpreetbedi in https://github.com/agno-agi/agno/pull/11127
* [fix] propagate files through workflow container steps by @Timotty in https://github.com/agno-agi/agno/pull/10950
* [feat] Add KeenableTools for keyless web search and page extraction by @ilya-bogin-keenable in https://github.com/agno-agi/agno/pull/9558
* fix: read the video ID from Shorts, live and mobile YouTube URLs by @devYRPauli in https://github.com/agno-agi/agno/pull/10707
* [fix] Honor explicit max_results=0 in PerplexitySearch and PubmedTools by @ryanakml in https://github.com/agno-agi/agno/pull/10595
* fix: detach the stored user memory from the caller's object by @insuffer in https://github.com/agno-agi/agno/pull/11016
* feat: open a run's committed sandbox checkpoint through the agent by @ysolanky in https://github.com/agno-agi/agno/pull/11131
* feat: add S3CheckpointStore for sandbox checkpoints in object storage by @kausmeows in https://github.com/agno-agi/agno/pull/11133
* fix: allow sandbox API runs on a durable queue without Redis by @ashpreetbedi in https://github.com/agno-agi/agno/pull/11161
* fix: restore AgentOS boolean form defaults under FastAPI 0.147 by @harshsinha03 in https://github.com/agno-agi/agno/pull/11160
* feat: create Company Products and Routines from the OS Manager chat by @ashpreetbedi in https://github.com/agno-agi/agno/pull/11159
* chore: Release v3.1.5 by @kausmeows in https://github.com/agno-agi/agno/pull/11155

## New Contributors
* @Timotty made their first contribution in https://github.com/agno-agi/agno/pull/10950
* @ilya-bogin-keenable made their first contribution in https://github.com/agno-agi/agno/pull/9558
* @ryanakml made their first contribution in https://github.com/agno-agi/agno/pull/10595
* @insuffer made their first contribution in https://github.com/agno-agi/agno/pull/11016

**Full Changelog**: https://github.com/agno-agi/agno/compare/v3.1.4...v3.1.5

Related Repositories