--- title: "Universal Schema Support" description: "Which agent features are exposed through the universal API." icon: "table" --- The universal API normalizes different coding agents into a consistent interface. All agents have full native capabilities; this page shows what's exposed via the sandbox-agent API. ## Feature Matrix | Feature | Claude | Codex | OpenCode | Amp | |--------------------|:------:|:-----:|:------------:|:------------:| | Stability | Stable | Stable| Experimental | Experimental | | Text Messages | ✓ | ✓ | ✓ | ✓ | | Tool Calls | ✓ | ✓ | ✓ | ✓ | | Tool Results | ✓ | ✓ | ✓ | ✓ | | Questions (HITL) | ✓ | | ✓ | | | Permissions (HITL) | ✓ | ✓ | ✓ | - | | Images | - | ✓ | ✓ | - | | File Attachments | - | ✓ | ✓ | - | | Session Lifecycle | - | ✓ | ✓ | - | | Error Events | - | ✓ | ✓ | ✓ | | Reasoning/Thinking | - | ✓ | | | | Command Execution | - | ✓ | | | | File Changes | - | ✓ | | | | MCP Tools | - | ✓ | | | | Streaming Deltas | ✓ | ✓ | ✓ | - | Agents: [Claude Code](https://docs.anthropic.com/en/docs/agents-and-tools/claude-code/overview) · [Codex](https://github.com/openai/codex) · [OpenCode](https://github.com/opencode-ai/opencode) · [Amp](https://ampcode.com) - ✓ = Supported in universal schema - \- = Schema support in progress ## Feature Descriptions ### Text Messages Basic message exchange between user and assistant. ### Tool Calls & Results Visibility into tool invocations (file reads, command execution, etc.) and their results. When not natively supported, tool activity is embedded in message content. ### Questions (HITL) Interactive questions the agent asks the user. Emits `question.requested` and `question.resolved` events. ### Permissions (HITL) Permission requests for sensitive operations. Emits `permission.requested` and `permission.resolved` events. ### Images Support for image attachments in messages. ### File Attachments Support for file attachments in messages. ### Session Lifecycle Native `session.started` and `session.ended` events. When not supported, the daemon emits synthetic lifecycle events. ### Error Events Structured error events for runtime failures. ### Reasoning/Thinking Extended thinking or reasoning content with visibility controls. ### Command Execution Detailed command execution events with stdout/stderr. ### File Changes Structured file modification events with diffs. ### MCP Tools Model Context Protocol tool support. ### Streaming Deltas Native streaming of content deltas. When not supported, the daemon emits a single synthetic delta before `item.completed`. ## Synthetic Events For features not natively supported, the daemon generates synthetic events to maintain a consistent event stream. Synthetic events have: - `source: "daemon"` - `synthetic: true` This lets you build UIs that work with any agent without special-casing each provider. ## Request Support Want support for another agent? [Open an issue](https://github.com/rivet-dev/sandbox-agent/issues/new) to request it.