# ACP RFDs vs Extensions

Status date: 2026-02-10

| Feature Area                                                                                                             | Approach  | Short-Term Extension Path                                                                                                                     | Notes                                                                  |
| ------------------------------------------------------------------------------------------------------------------------ | --------- | --------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- |
| Generic non-permission HITL question/input flow (agent request + client response)                                       | RFD       | `_sandboxagent/session/request_question` request + structured JSON-RPC response (`answered/rejected/cancelled`).                            | Needs standard ACP request/response shape beyond permission prompts.   |
| Standard model listing support (including pre-session discovery and/or stable session model state)                      | RFD       | `_sandboxagent/session/list_models` response with `availableModels`, `currentModelId`, plus variant fields (`defaultVariant`, `variants[]`) in payload or `_meta`. | Includes model variant semantics (`defaultVariant`, `variants[]`).     |
| Stabilize `session/list`                                                                                                 | RFD       | Use ACP unstable `session/list` directly (no custom extension alias).                                                                      | Currently unstable ACP method.                                          |
| Stabilize `session/fork`                                                                                                 | RFD       | Use ACP unstable `session/fork` directly (no custom extension alias).                                                                      | Currently unstable ACP method.                                          |
| Stabilize `session/resume`                                                                                               | RFD       | Use ACP unstable `session/resume` directly (no custom extension alias).                                                                    | Currently unstable ACP method.                                          |
| Stabilize `session/set_model`                                                                                            | RFD       | Use ACP unstable `session/set_model` directly; fallback to `session/set_config_option` where available.                                    | Currently unstable ACP method.                                          |
| Standard session metadata-at-creation semantics (portable title/tags-style hints)                                       | RFD       | Use `session/new.params._meta["sandboxagent.dev"]` for create-time metadata; optional `_sandboxagent/session/set_metadata` for post-create updates. | Reduces custom `_meta` usage for common metadata.                      |
| Sandbox Agent robust HTTP filesystem API                                                                                 | Extension | Already extension (`/v1/fs/*` custom HTTP surface).                                                                                           | Separate custom HTTP API; not ACP core agent-session protocol.         |
| `skills` payload and behavior                                                                                            | Extension | Already extension via `_meta["sandboxagent.dev"].skills` and optional `_sandboxagent/session/set_metadata`.                                | Product-specific behavior.                                              |
| Client-requested session alias (`requestedSessionId`) behavior                                                           | Extension | Already extension via `_meta["sandboxagent.dev"].requestedSessionId`.                                                                        | Product-specific metadata/ID behavior.                                  |
| Agent version pin/hint behavior during bootstrap/session creation                                                        | Extension | Already extension via `_meta["sandboxagent.dev"].agentVersionRequested`.                                                                     | Product-specific runtime selection behavior.                            |
| Agent control-plane inventory/install state (`list/install/credentialsAvailable/installed/path`)                        | Extension | Already extension as custom control-plane HTTP (`/v1/agents`, `/v1/agents/{agent}/install`).                                                 | Control-plane functionality outside ACP core.                           |
| Runtime daemon/process status and related capabilities (`serverStatus`, `sharedProcess`, `commandExecution`, `errorEvents`) | Extension | Already extension as control-plane fields (`/v1/agents`, `/v1/health`) and capability `_meta` hints.                                         | Runtime/orchestrator-specific state.                                    |
| Sandbox Agent control-plane APIs (`/v1/health`, `/v1/agents`, `/v1/agents/{agent}/install`)                            | Extension | Already extension (custom non-ACP API surface).                                                                                               | Custom non-ACP HTTP surface.                                            |
| OpenCode compatibility bridging behavior (`/opencode/*`)                                                                 | Extension | Already extension as product compatibility bridge layer.                                                                                       | Product compatibility layer, not ACP core protocol.                    |
