Skip to content

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.

  • claude β€” Claude (Anthropic)
  • codex β€” Codex (OpenAI)
  • opencode β€” OpenCode (community) (community provider, deprecated)
  • pi β€” Pi
  • copilot β€” Copilot (GitHub) (community provider, deprecated)
Capabilityclaudecodexopencodepicopilot
Background work observationreportedreportedunobservednoneunobserved
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)enforcedenforcedenforcedbest-effortbest-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)βŒβœ…βŒβŒβŒ
  • ΒΉ opencode β€” Inline sub-agents (agents:) β€” Config-file-based agent selection (named agents from opencode.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’s invoke_workflow and register_project tools into every chat, and of manage_run into 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.