coleam00/Archon · error
Invalid run config at 'assistants.${provider}${suffix}': ${e
Error message
Invalid run config at 'assistants.${provider}${suffix}': ${error.message}. What it means
A provider's parseRunConfig() rejected assistant defaults, so the config layer rethrows with the provider and optional field path prefixed for clarity. InvalidProviderRunConfigError carries a fieldPath used to build the 'assistants.<provider>.<field>' location in the message.
Source
Thrown at packages/core/src/config/run-config.ts:142
assertRegisteredProvider(provider, `assistants.${provider}`);
if (provider === 'pi' && Object.hasOwn(defaults, 'env')) {
throw new Error(
"Run config key 'assistants.pi.env' cannot apply: Pi extension environment mutates " +
'process.env and is process-scoped.'
);
}
if (provider === 'pi' && Object.hasOwn(defaults, 'maxConcurrent')) {
throw new Error(
"Run config key 'assistants.pi.maxConcurrent' cannot apply: Pi concurrency is " +
'initialized once for the process lifetime.'
);
}
try {
assistants[provider] = getRegistration(provider).parseRunConfig(defaults);
} catch (error) {
if (error instanceof InvalidProviderRunConfigError) {
const suffix = error.fieldPath ? `.${error.fieldPath}` : '';
throw new Error(
`Invalid run config at 'assistants.${provider}${suffix}': ${error.message}.`
);
}
throw error;
}
}
const tiers = Object.fromEntries(
Object.entries(layer.tiers ?? {}).map(([tier, preset]) => [
tier,
normalizePreset(`tiers.${tier}`, preset),
])
);
const aliases = Object.fromEntries(
Object.entries(layer.aliases ?? {}).map(([alias, preset]) => [
alias,
normalizePreset(`aliases.${alias}`, preset),
])
);View on GitHub (pinned to 0773b97458)
Solutions
- Read the inner error.message for the specific field and reason
- Fix or remove the offending key under assistants.<provider> in the config
- Check the provider's documented run-config options to confirm the key and value shape
Example fix
// before
assistants:
claude:
model: 123
// after
assistants:
claude:
model: claude-sonnet-4-5 Defensive patterns
Strategy: validation
Validate before calling
function validateAssistantDefaults(provider, defaults, parseRunConfig) { try { parseRunConfig(defaults); } catch (e) { throw new Error(`Invalid assistants.${provider} defaults: ${e.message}`); } } Type guard
function isRecord(v) { return typeof v === 'object' && v !== null && !Array.isArray(v); } Try / catch
try { cfg = runConfig(layers); } catch (e) { const m = String(e.message).match(/Invalid run config at 'assistants\.([^.]+)(\.(\S+))?'/); if (m) console.error(`Fix assistants.${m[1]}${m[3] ? '.' + m[3] : ''}`); throw e; } Prevention
- Validate provider defaults against the provider's documented schema before loading
- Keep provider option names and types in one source of truth
- Test run config files with the real loader in CI
When it happens
Trigger: Calling runConfig()/parseWorkflowRunConfig()/unsealWorkflowRunConfig() with a value under assistants.<provider> that fails that provider's parseRunConfig validation (wrong type, unknown field, bad value).
Common situations: Typo'd or malformed options under an assistant provider section; passing a string where an object is expected; using options not supported by the registered provider version.
Understand the failure class
Background: Schema validation failed / invalid input schema: payload rejected because its shape doesn't match the expected schema — this error's family across 28 libraries.
Related errors
- --resume and --config are mutually exclusive. A resumed run
- Run config key 'assistants.pi.env' cannot apply: Pi extensio
- Run config key 'assistants.pi.maxConcurrent' cannot apply: P
- Invalid run config at 'document': expected an object
- Unknown run config key '${key}'.
AI-assisted analysis of coleam00/Archon@0773b97458 (2026-09-01).
Data as JSON: /api/errors/2678a2f01dfee7ca.
Report an issue: GitHub.