{"record":{"id":"558c8ce5e66bd724","repo":"coleam00/Archon","slug":"provider-incompatible-size-1-s-l","errorCode":null,"errorMessage":"Provider${incompatible.size === 1 ? '' : 's'} '${list}' cannot run inside a container yet (containerExec capability). Use provider claude, or run without --container.","messagePattern":"Provider(.+?) '(.+?)' cannot run inside a container yet \\(containerExec capability\\)\\. Use provider claude, or run without --container\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/workflows/src/dag-executor.ts","lineNumber":11463,"sourceCode":"    priorUsage,\n    priorNodeSessions,\n    workflowSourceRoots,\n  } = options;\n  const dagStartTime = Date.now();\n\n  // Container capability fail-fast: before ANY node runs (and before any\n  // container work), reject a container run whose AI nodes resolve to a provider\n  // that can't spawn in-container. No silent downgrade to the host — the user\n  // asked for isolation and must get it or a clear error.\n  if (execContext.kind === 'container') {\n    const incompatible = collectContainerIncompatibleProviders(\n      workflow.nodes,\n      workflowProvider,\n      aiProfile\n    );\n    if (incompatible.size > 0) {\n      const list = [...incompatible].sort().join(', ');\n      throw new Error(\n        `Provider${incompatible.size === 1 ? '' : 's'} '${list}' cannot run inside a ` +\n          'container yet (containerExec capability). Use provider claude, or run without ' +\n          '--container.'\n      );\n    }\n\n    // Container is live for this run — surface it in all three logging layers. A\n    // resume (the container was rediscovered + restarted by the caller) emits\n    // `container_resumed` rather than `container_created` so the timeline is honest.\n    const isResume = priorCompletedNodes !== undefined && priorCompletedNodes.size > 0;\n    emitContainerLifecycleEvent(\n      deps,\n      workflowRun.id,\n      isResume ? 'resumed' : 'created',\n      isResume ? 'container_resumed' : 'container_created',\n      execContext.containerId,\n      { containerId: execContext.containerId }\n    );","sourceCodeStart":11445,"sourceCodeEnd":11481,"githubUrl":"https://github.com/coleam00/Archon/blob/0773b9745896ef0612e709c80845a0f7db315b19/packages/workflows/src/dag-executor.ts#L11445-L11481","documentation":"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.","triggerScenarios":"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().","commonSituations":"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.","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()"],"exampleFix":"// before\narchon run workflow.yaml --container\n// after: either drop the flag or pin a container-capable provider\narchon run workflow.yaml\n# or in workflow.yaml\nprovider: claude","handlingStrategy":"validation","validationCode":"const providers = collectWorkflowProviders(workflow, workflowProvider, aiProfile);\nconst incompatible = [...new Set(providers.filter(p => !deps.getAgentProvider(p).getCapabilities().containerExec))];\nif (useContainer && incompatible.length > 0) throw new Error(`container mode unsupported for: ${incompatible.join(', ')}`);","typeGuard":"function supportsContainerExec(caps: ProviderCapabilities): boolean {\n  return caps.containerExec === true;\n}","tryCatchPattern":"try {\n  await engine.run(workflow, { container: true });\n} catch (err) {\n  if (err instanceof Error && err.message.includes('cannot run inside a container')) {\n    // rerun without --container or switch to claude\n  } else throw err;\n}","preventionTips":["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"],"tags":["container","provider-capabilities","cli"],"backgroundTag":"unsupported-provider-capability","analyzedSha":"0773b9745896ef0612e709c80845a0f7db315b19","analyzedAt":"2026-09-01T02:28:07.064Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T05:18:18.240Z"}