paperclipai/paperclip · error · PaperclipRunnerProviderProfileError

paperclip_runner_claude_managed_retention_required

paperclip_runner_claude_managed_retention_required

Error message

Paperclip Runner Claude Managed requires acknowledgement of stateful beta retention.

What it means

Guard in resolvePaperclipRunnerProviderProfile for claude_managed: adapterConfig.managedAgentsRetentionAcknowledged must be explicitly true, else 'paperclip_runner_claude_managed_retention_required' is thrown. Claude Managed agents are stateful server-side and retain data, so the operator must have acknowledged that retention before runs are allowed.

Solutions

  1. Set managedAgentsRetentionAcknowledged to true in adapterConfig after the operator accepts the retention terms.
  2. Drive the acknowledgement through the UI/provider onboarding flow rather than editing config by hand.
  3. Use a stateless provider (codex/opencode) if retention cannot be accepted.
Defensive patterns

Strategy: validation

When it happens

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

Appendix: source

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

      );
    }
    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.",
      );
    }
    if (config.managedAgentsRetentionAcknowledged !== true) {
      throw new PaperclipRunnerProviderProfileError(
        "paperclip_runner_claude_managed_retention_required",
        "Paperclip Runner Claude Managed requires acknowledgement of stateful beta retention.",
      );
    }
    if (model !== null && model !== CLAUDE_MANAGED_QUALIFIED_MODEL) {
      throw new PaperclipRunnerProviderProfileError(
        "paperclip_runner_claude_managed_model_unqualified",
        `The Claude Managed profile requires exact model ${CLAUDE_MANAGED_QUALIFIED_MODEL}.`,
      );
    }
    return {
      provider: "claude_managed",
      backend: "claude_managed_agents_api",
      managedProfileId,
      model,
      maxSessionListCostUsd: positiveNumberOrNull(
        config.maxSessionListCostUsd,
        "paperclip_runner_claude_managed_spend_cap_invalid",

View on GitHub (pinned to 01ad858492)