coleam00/Archon · error · Error
Provider${incompatible.size === 1 ? '' : 's'} '${list}' cann
Error message
Provider${incompatible.size === 1 ? '' : 's'} '${list}' cannot run inside a container yet (containerExec capability). Use provider claude, or run without --container. What it means
Container mode (--container) requires every provider used by the workflow to declare a containerExec capability. Before executing, the executor collects providers that lack it; if any remain, it refuses to run and lists them, advising claude or running without the container flag.
Source
Thrown at packages/workflows/src/dag-executor.ts:11463
priorUsage,
priorNodeSessions,
workflowSourceRoots,
} = options;
const dagStartTime = Date.now();
// Container capability fail-fast: before ANY node runs (and before any
// container work), reject a container run whose AI nodes resolve to a provider
// that can't spawn in-container. No silent downgrade to the host — the user
// asked for isolation and must get it or a clear error.
if (execContext.kind === 'container') {
const incompatible = collectContainerIncompatibleProviders(
workflow.nodes,
workflowProvider,
aiProfile
);
if (incompatible.size > 0) {
const list = [...incompatible].sort().join(', ');
throw new Error(
`Provider${incompatible.size === 1 ? '' : 's'} '${list}' cannot run inside a ` +
'container yet (containerExec capability). Use provider claude, or run without ' +
'--container.'
);
}
// Container is live for this run — surface it in all three logging layers. A
// resume (the container was rediscovered + restarted by the caller) emits
// `container_resumed` rather than `container_created` so the timeline is honest.
const isResume = priorCompletedNodes !== undefined && priorCompletedNodes.size > 0;
emitContainerLifecycleEvent(
deps,
workflowRun.id,
isResume ? 'resumed' : 'created',
isResume ? 'container_resumed' : 'container_created',
execContext.containerId,
{ containerId: execContext.containerId }
);View on GitHub (pinned to 0773b97458)
Solutions
- Drop --container for this run so providers execute outside the container
- Switch the workflow/nodes/profile to provider claude, which supports containerExec
- Change the default provider in .archon/config.yaml to claude when container mode is the norm
- If you own the provider adapter, implement containerExec support and declare it in getCapabilities()
Example fix
// before archon run workflow.yaml --container // after: either drop the flag or pin a container-capable provider archon run workflow.yaml # or in workflow.yaml provider: claude
Defensive patterns
Strategy: validation
Validate before calling
const providers = collectWorkflowProviders(workflow, workflowProvider, aiProfile);
const incompatible = [...new Set(providers.filter(p => !deps.getAgentProvider(p).getCapabilities().containerExec))];
if (useContainer && incompatible.length > 0) throw new Error(`container mode unsupported for: ${incompatible.join(', ')}`); Type guard
function supportsContainerExec(caps: ProviderCapabilities): boolean {
return caps.containerExec === true;
} Try / catch
try {
await engine.run(workflow, { container: true });
} catch (err) {
if (err instanceof Error && err.message.includes('cannot run inside a container')) {
// rerun without --container or switch to claude
} else throw err;
} Prevention
- When using --container, set provider claude at node, workflow, and config-default levels
- Audit aiProfiles for providers lacking containerExec before enabling container mode
- Implement containerExec in custom adapters before adopting container runs
When it happens
Trigger: Running `archon run --container ...` (or the equivalent API option) while the workflow's nodes, the workflow-level provider, or the AI profile resolve to providers without containerExec: true in getCapabilities().
Common situations: Default provider in .archon/config.yaml set to a non-container provider (e.g. codex or a local proxy); an aiProfile pinning an incompatible provider; a new provider added before containerExec support was implemented.
Related errors
- Cannot confirm the isolation container owned by run ${resolv
- Cannot confirm the isolation container owned by run ${resolv
- Detached owner process stopped, but the isolation container
- --resume and --config are mutually exclusive. A resumed run
- Failed to download web UI: ${tarballRes.status} ${tarballRes
AI-assisted analysis of coleam00/Archon@0773b97458 (2026-09-01).
Data as JSON: /api/errors/558c8ce5e66bd724.
Report an issue: GitHub.