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, a node naming mcp:, skills: or
plugins: on a provider without that capability fails the run before any node
starts, and context.resume rejects an explicitly unsupported provider at load
time and an implicitly resolved one at runtime. An mcp: declared optional: true
instead runs the node without its servers and records why.
The columns are the providers built from this repository. Release binaries install Claude, Codex and Pi as provider plugins, with the same capabilities. A third-party provider plugin declares its capabilities in its install-time descriptor and is not a column in this generated table. The same pre-spend capability checks apply.
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.
Background work: reported waits for runtime-reported task endings; none means verified absent;
unobserved means background work may exist without an observable lifecycle. A process
backgrounded inside a foreground shell command (cmd &) is invisible to every provider.
Codex observes subagents through subAgentActivity notifications and unified-exec processes
through commandExecution items with source unifiedExecStartup. Idle thread status is
not evidence that this work has ended. See Streaming event mapping
for the background-start admission and observation cutoff rules.
Providers
Section titled βProvidersβclaudeβ Claude (Anthropic)codexβ Codex (OpenAI)opencodeβ OpenCode (community) (community provider, deprecated)piβ Picopilotβ Copilot (GitHub) (community provider, deprecated)
Capabilities
Section titled βCapabilitiesβ| Capability | claude | codex | opencode | pi | copilot |
|---|---|---|---|---|---|
| Background work observation | reported | reported | unobserved | none | unobserved |
| Session resume | β | β | β | β | β |
Immutable session fork (context.resume, cross-run persist_session) | β | β | β | β | β |
MCP servers (mcp:) | β | β | β | β | β |
Hooks (hooks:) | β | β | β | β | β |
Skills (skills:) | β | β | β | β | β |
Plugins (plugins:) | β | β | β | β | β |
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(the model is asked for the schema, 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. It gates auto-injection of Archonβsinvoke_workflowandregister_projecttools into every chat, and ofmanage_runinto project-scoped chat. Providers without it use the existing CLI for run launch and management after project selection. These launches are detached and headless, with CLI identity and no originating-chat delivery. Registration requires an explicit user command; assistant prose has no effects.
For per-provider field-level notes (YAML syntax, caveats), see the AI Assistants guide.
