coleam00/Archon · error · RunModelPresetValidationError

unknown-provider: provider '${preset.provider}' is not a reg

Error message

unknown-provider: provider '${preset.provider}' is not a registered provider (RunModelPresetValidationError, field 'provider')

What it means

`normalizeStrictRunModelPreset` is the strict gate every execution-input model preset must pass (fresh config, explicit run overrides, and persisted overrides). It throws a typed `RunModelPresetValidationError` with issue kind `unknown-provider` when the preset's provider is not in the registered provider registry, field `provider`. Unlike layered config (tolerant), execution inputs fail hard.

Source

Thrown at packages/workflows/src/model-validation.ts:160

  }
}

/** A strict execution-input preset failed a provider-owned semantic invariant. */
export class RunModelPresetValidationError extends Error {
  constructor(readonly issue: RunModelPresetValidationIssue) {
    super(runModelPresetValidationMessage(issue));
    this.name = 'RunModelPresetValidationError';
  }
}

/**
 * Validate and canonicalize a model preset that will directly affect one run.
 * Ordinary layered config remains tolerant; every strict execution-input path
 * (fresh config, explicit overrides, and persisted overrides) shares this gate.
 */
export function normalizeStrictRunModelPreset(preset: ModelAliasPreset): ModelAliasPreset {
  if (!isRegisteredProvider(preset.provider)) {
    throw new RunModelPresetValidationError({
      kind: 'unknown-provider',
      provider: preset.provider,
      field: 'provider',
    });
  }

  let model: string;
  try {
    model = parseProviderRunModel(preset.provider, preset.model);
  } catch (error) {
    throw new RunModelPresetValidationError({
      kind: 'invalid-model',
      provider: preset.provider,
      model: preset.model,
      reason: error instanceof Error ? error.message : String(error),
      field: 'model',
    });
  }

View on GitHub (pinned to 0773b97458)

Solutions

  1. Correct the provider name to a registered one (check the provider registry list)
  2. Load/register the provider plugin that defines the missing provider, if one exists
  3. Remove or regenerate the persisted override preset on this install
  4. Catch `RunModelPresetValidationError` and inspect `error.issue.kind === 'unknown-provider'` to surface the bad provider to the user

Example fix

// before
normalizeStrictRunModelPreset({ provider: 'anthropicc', model: 'claude-sonnet-4' })
// after
normalizeStrictRunModelPreset({ provider: 'anthropic', model: 'claude-sonnet-4' })
Defensive patterns

Strategy: type-guard

Validate before calling

import { isRegisteredProvider } from '@archon/providers';
// Check before calling any strict normalization path.
if (!isRegisteredProvider(preset.provider)) {
  throw new Error(`Provider '${preset.provider}' is not registered; pick a registered provider`);
}

Type guard

import { isRegisteredProvider } from '@archon/providers';
function hasKnownProvider(p: { provider: string; model: string }): boolean {
  return isRegisteredProvider(p.provider);
}

Try / catch

import { RunModelPresetValidationError } from '@archon/workflows/model-validation';
try {
  const canonical = normalizeStrictRunModelPreset(preset);
} catch (err) {
  if (err instanceof RunModelPresetValidationError && err.issue.kind === 'unknown-provider') {
    throw new Error(`Run rejected: '${err.issue.provider}' is not a registered provider`, { cause: err });
  }
  throw err;
}

Prevention

When it happens

Trigger: Starting or overriding a run with a model preset whose provider string is not registered — typo in provider name, provider added by a plugin that is not loaded, or a preset persisted by an install that had a provider this install lacks.

Common situations: Typos like `anthropicc`, using a community/provider-alias name not registered in this install, copying a preset from another machine with different provider plugins.

Related errors


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