Skip to content
Changelog

AgentOS registers Claude and Codex agents and flags the sandboxed ones

ContributorAshpreet BediFounder & CEO

October 19, 20261 min read

Agno's AgentOS now adds every ClaudeAgent and CodexAgent it serves to its Registry, and Registry(agents=[...]) is typed to take them. GET /registry lists them with the rest, and registry.get_agent("coder") hands back the Claude agent itself.

Each agent in GET /agents, GET /agents/{agent_id} and GET /registry also carries sandboxed. It reads true for an external agent with a sandbox attached, so a client can tell which agents run in an isolated computer without inspecting their config. Team and workflow responses gained the same field and report false.

We served a sandboxed ClaudeAgent with id coder and a plain CodexAgent with id reviewer, the reviewer also passed in through Registry(agents=[reviewer]), and called the routes with FastAPI's TestClient. The sandbox was a stand-in with no compute, since listing routes never start one:

# earlier releases
registry.agents: ['reviewer']
registry.get_agent('coder'): NoneType
GET /registry?resource_type=agent 200 [{"id": "reviewer", "sandboxed": null}]
GET /agents 200 [{"id": "coder", "sandboxed": null}, {"id": "reviewer", "sandboxed": null}]
 
# this release
registry.agents: ['reviewer', 'coder']
registry.get_agent('coder'): ClaudeAgent
GET /registry?resource_type=agent 200 [{"id": "coder", "sandboxed": true}, {"id": "reviewer", "sandboxed": false}]
GET /agents 200 [{"id": "coder", "sandboxed": true}, {"id": "reviewer", "sandboxed": false}]

Earlier releases left the served Claude agent out of the registry, and no response had a sandboxed field to read.

See the cookbook, and learn more about the Registry in the documentation.

Frequently asked questions

Yes. Registry(agents=[...]) accepts both, and an AgentOS adds every Claude or Codex agent it serves to its registry, where registry.get_agent(id) returns it.

It is true when the agent is an external agent such as ClaudeAgent or CodexAgent with a sandbox attached, and false otherwise. Team and workflow responses include it as well and report false.

GET /agents, GET /agents/{agent_id} and GET /registry include it for agents. AgentResponse, TeamResponse, WorkflowResponse, their summary models and RegistryContentResponse all declare it.

Shipped around the same time