Provider Capability Matrix
Each column is a registered provider id (the value you set as provider: in a
workflow or .archon/config.yaml). A β
means Archon translates the corresponding
capability for that provider; a β means the capability is unsupported. Unsupported
behavior is feature-specific: some optional fields are ignored with a warning, while
strict contracts fail closed. In particular, context.resume rejects an explicitly
unsupported provider at load time and an implicitly resolved one at runtime.
Reporting flags describe SDK fields that Archon translates into execution results. Supported does not guarantee that every result reports a value or that usage includes all nested agents. Unsupported fields remain absent; Archon does not estimate cost, count events as turns, or substitute the requested model for an unreported model. Cost reporting is independent of spend-limit support. Older providers may omit reporting declarations; absence means unknown, not unsupported.
Providers
Section titled βProvidersβclaudeβ Claude (Anthropic)codexβ Codex (OpenAI)opencodeβ OpenCode (community) (community provider)piβ Pi (community) (community provider)copilotβ Copilot (GitHub) (community provider)
Capabilities
Section titled βCapabilitiesβ| Capability | claude | codex | opencode | pi | copilot |
|---|---|---|---|---|---|
| Session resume | β | β | β | β | β |
Immutable session fork (context.resume) | β | β | β | β | β |
MCP servers (mcp:) | β | β | β | β | β |
Hooks (hooks:) | β | β | β | β | β |
Skills (skills:) | β | β | β | β | β |
Inline sub-agents (agents:) | β | β | β ΒΉ | β | β |
Tool restrictions (allowed_tools/denied_tools) | β | β | β | β | β |
Structured output (output_format) | enforced | enforced | enforced | best-effort | best-effort |
Env injection (env:) | β | β | β | β | β |
Spend limit (maxBudgetUsd) | β | β | β | β | β |
Cost reporting (costUsd) | β | β | β | β | β |
| Token reporting | β | β | β | β | β |
| Stop reason reporting | β | β | β | β | β |
| Turn count reporting | β | β | β | β | β |
| Resolved model reporting | β | β | β | β | β |
Effort control (effort) | β | β | β | β | β |
Fallback model (fallbackModel) | β | β | β | β | β |
Sandbox (sandbox) | β | β | β | β | β |
Setting sources (settingSources) | β | β | β | β | β |
| In-process native tools | β | β | β | β | β |
| Container exec (folder-project container backend) | β | β | β | β | β |
Strict-mode required coverage (every key in properties MUST appear in required) | β | β | β | β | β |
Caveats
Section titled βCaveatsβ- ΒΉ
opencodeβ Inline sub-agents (agents:) β Config-file-based agent selection (named agents fromopencode.json) with per-call model/tools overrides β not inline sub-agent definitions.
- β / β β the capability is supported or unsupported for this provider.
- Unknown β the provider has not declared whether this reporting channel is supported.
- β ΒΉ (superscript) β supported, but with semantics that differ from the headline meaning of the axis β see Caveats.
- Structured output β
enforced(the SDK/backend grammar-constrains decoding),best-effort(schema appended to the prompt, then validated + re-asked up to 3Γ), or β (unsupported). See AI Assistants β Structured output guarantees. - In-process native tools β the provider can register Archon
NativeTools for a turn (gates auto-injection of Archonβsmanage_runtool into project-scoped chat).
For per-provider field-level notes (YAML syntax, caveats), see the AI Assistants guide.