---
title: "Agent Compatibility"
description: "Feature support across coding agents."
icon: "table"
---

The universal API normalizes different coding agents into a consistent interface. Each agent has different native capabilities; the daemon fills gaps with synthetic events where possible.

## Feature Matrix

| Feature | [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) |
|---------|:-----------:|:-----:|:--------:|:---:|
| 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 | ✓ | ✓ | ✓ | |

## 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.
