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

  1. Read the inner error.message for the specific field and reason
  2. Fix or remove the offending key under assistants.<provider> in the config
  3. 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

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


AI-assisted analysis of coleam00/Archon@0773b97458 (2026-09-01). Data as JSON: /api/errors/2678a2f01dfee7ca. Report an issue: GitHub.