paperclipai/paperclip · error · PaperclipRunnerProviderProfileError

paperclip_runner_provider_changed

paperclip_runner_provider_changed

Error message

Paperclip Runner provider changed after this run selected its native backend.

What it means

Guard in resolvePaperclipRunnerNativeProviderInput: the backend resolved from the persisted adapterConfig must equal the backend this run already selected for its native runtime; if the provider changed after run selection, a 'paperclip_runner_provider_changed...' error is thrown. This prevents mid-run provider swaps (e.g. codex -> claude_managed) that would invalidate the already-initialized execution context.

Source

Thrown at server/src/services/native-runtime/provider-profile.ts:456

    id: string;
    profileKey: string;
    anthropicAgentId: string;
    agentVersion: string;
    environmentId: string;
    betaVersion: string;
    defaultModel: string;
    defaultMaxListCostCents: number;
  } | null;
  agentCoreProfile?: {
    id: string;
    profileKey: string;
    configuration: Record<string, unknown>;
  } | null;
}): PaperclipRunnerNativeProviderInput {
  const config = asRecord(input.adapterConfig);
  const profile = resolvePaperclipRunnerProviderProfile(config);
  if (profile.backend !== input.backend) {
    throw new PaperclipRunnerProviderProfileError(
      "paperclip_runner_provider_changed",
      "Paperclip Runner provider changed after this run selected its native backend.",
    );
  }
  if (profile.provider === "opencode") {
    return {
      provider: "opencode",
      model: profile.model,
      opencodePermissionMode: resolvePaperclipRunnerPermissionMode(
        "opencode",
        config.opencodePermissionMode,
      ) as "allow" | "ask" | "deny",
    };
  }
  if (profile.provider === "acpx") {
    return {
      provider: "acpx",
      model: profile.model,

View on GitHub (pinned to 01ad858492)

Solutions

  1. Revert the adapterConfig provider change until the run completes, or cancel and start a new run with the new provider.
  2. Re-create the run so backend selection and adapterConfig agree.
  3. Investigate what mutated adapterConfig mid-run (UI save, migration, import) and gate such edits during active runs.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at server/src/services/native-runtime/provider-profile.ts:450 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of paperclipai/paperclip@01ad858492 (2026-09-02). Data as JSON: /api/errors/6b28d7ff670c0d43. Report an issue: GitHub.