paperclipai/paperclip · error · PaperclipRunnerProviderProfileError

paperclip_runner_opencode_model_invalid

paperclip_runner_opencode_model_invalid

Error message

Paperclip Runner OpenCode requires model in provider/model form.

What it means

Guard in resolvePaperclipRunnerProviderProfile for the opencode branch: the model must be a non-empty 'provider/model' string (contains '/' and does not end with '/'), otherwise 'paperclip_runner_opencode_model_invalid' is thrown. OpenCode's server API requires qualified model identifiers; a bare model name or dangling slash cannot be resolved.

Source

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

    throw new PaperclipRunnerProviderProfileError(
      "paperclip_runner_provider_unsupported",
      "Paperclip Runner provider must be Codex, OpenCode, Claude Managed, AWS AgentCore, or ACPX.",
    );
  }

  assertPermissionMode(candidate, config);
  const model = optionalString(config.model);
  if (candidate === "codex") {
    return {
      provider: "codex",
      backend: "codex_app_server",
      model,
    };
  }

  if (candidate === "opencode") {
    if (!model || !model.includes("/") || model.endsWith("/")) {
      throw new PaperclipRunnerProviderProfileError(
        "paperclip_runner_opencode_model_invalid",
        "Paperclip Runner OpenCode requires model in provider/model form.",
      );
    }
    return {
      provider: "opencode",
      backend: "opencode_server",
      model,
    };
  }

  if (candidate === "claude_managed") {
    const managedProfileId = optionalString(config.managedProfileId);
    if (!managedProfileId) {
      throw new PaperclipRunnerProviderProfileError(
        "paperclip_runner_claude_managed_profile_required",
        "Paperclip Runner Claude Managed requires a company managed-agent profile.",
      );

View on GitHub (pinned to 01ad858492)

Solutions

  1. Set model to the full 'provider/model' form, e.g. 'anthropic/claude-sonnet-4'.
  2. Remove a trailing slash or fix truncation in the stored model string.
  3. Leave model unset to use OpenCode's default model instead of an unqualified one.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at server/src/services/native-runtime/provider-profile.ts:322 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/88edd39ca19f12ab. Report an issue: GitHub.