# The AG-UI interface supports ag-ui-protocol 1.0

> Agno's AG-UI interface in AgentOS now works with ag-ui-protocol 1.0, including tool results sent as a list of content parts when a paused run resumes.

- Published: 2026-09-23
- Author: Himanshu Singh
- Categories: Changelog
- Canonical: https://www.agno.com/articles/the-ag-ui-interface-supports-ag-ui-protocol-1-0
- Markdown: https://www.agno.com/articles/the-ag-ui-interface-supports-ag-ui-protocol-1-0.md

Agno accepts any `ag-ui-protocol` from 0.1.15 up, so new installs of the AgentOS AG-UI interface picked up 1.0 as soon as it shipped. The 1.0 release lets a tool result message (`ToolMessage.content`) carry a list of content parts, and the AG-UI resume code still expected a string. When a frontend answered a paused run with a list, a confirmation ended in `RUN_ERROR` and the tool never ran. A frontend tool result reached the model as raw objects, AgentOS could not save the run, and the run stayed `PAUSED`.

The AG-UI interface now turns each tool result into text before it resolves the pause. It keeps a string as it is. For a list, it joins the text parts with newlines and drops every other part with a warning. The real output below comes from resolving two pauses with list content, before the fix and now:

```text
Before:
confirmation:    TypeError the JSON object must be str, bytes or bytearray, not list
external result: [TextPart(type='text', ..., text='first line'), TextPart(type='text', ..., text='second line'), ImagePart(type='image', ...)]

Now:
confirmation:    confirmed = True | resolved = True
WARNING Tool result tc3: ignoring image parts, using its text
external result: 'first line\nsecond line'
```

The AG-UI interface behaves the same on `ag-ui-protocol` 0.1.15 through 0.1.22, and the supported range in Agno stays the same. Install or upgrade with the `agui` extra to get the latest protocol package:

```bash
uv pip install -U 'agno[os,agui]'
```

`ag-ui-protocol` 1.0 removed the legacy `binary` content part, so AgentOS answers a request that still sends one with `422`.

See the [cookbook](https://github.com/agno-agi/agno/blob/main/cookbook/05_agent_os/16_agui/human_in_the_loop.py), and learn more about the [AG-UI interface](https://docs.agno.com/agent-os/interfaces/ag-ui/introduction) in the documentation.
