paperclipai/paperclip · error

inherited_workspace_reuse_unavailable

inherited_workspace_reuse_unavailable

Error message

Issue ${issueLabel} requested inherited execution workspace reuse for ${workspaceLabel}, but the workspace could not be restored. ${remediation}

What it means

During run start, the engine tried to reuse an inherited execution workspace but restore returned no result and no earlier failure was captured, so it formats a sentinel inherited_workspace_reuse_unavailable failure and throws. The workspace identified by existingExecutionWorkspaceId could not be restored for reuse.

Solutions

  1. Follow the remediation in the message, or let the run create a fresh execution workspace instead of reusing the inherited one.
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at server/src/services/heartbeat.ts:4506 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of paperclipai/paperclip@3f1d897a7c (2026-08-18). Data as JSON: /api/errors/c7a537cca5eb7a36. Report an issue: GitHub.

Appendix: source

Thrown at server/src/services/heartbeat.ts:5152

  for (const [key, value] of [
    ["summary", input.summary],
    ["result", input.result],
    ["message", input.message],
    ["error", input.error],
  ] as const) {
    const normalized = readNonEmptyString(value);
    if (normalized) summary[key] = normalized;
  }

  for (const [key, value] of [
    ["total_cost_usd", input.totalCostUsd],
    ["cost_usd", input.costUsd],
    ["costUsd", input.costUsdCamel],
  ] as const) {
    const normalized = readNonEmptyString(value);
    if (!normalized) continue;
    const parsed = Number(normalized);
    if (Number.isFinite(parsed)) summary[key] = parsed;
  }

  return Object.keys(summary).length > 0 ? summary : null;
}

function normalizeLedgerBillingType(value: unknown): BillingType {
  const raw = readNonEmptyString(value);
  switch (raw) {
    case "api":
    case "metered_api":
      return "metered_api";
    case "subscription":
    case "subscription_included":
      return "subscription_included";
    case "subscription_overage":
      return "subscription_overage";
    case "credits":
      return "credits";

View on GitHub (pinned to 3f1d897a7c)