paperclipai/paperclip · error

Cheap status-only recovery runs cannot update issue…

Error message

Cheap status-only recovery runs cannot update issue documents, plans, or deliverable artifacts

What it means

The acting run's context snapshot marks it as a cheap status-only recovery run, which is forbidden from touching issue documents, plans, or deliverable artifacts — only status/comment updates are permitted.

Solutions

  1. This is an authorization rule, not a bug: perform the action with an actor that satisfies the stated constraint (board user, the owning agent, or an in-scope resource).
  2. If access should be allowed, verify the actor's credentials/company scope and the resource's ownership before retrying.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at server/src/routes/issues.ts:4935 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/012ffc0f4f4fd8fc. Report an issue: GitHub.

Appendix: source

Thrown at server/src/routes/issues.ts:6282

    }

    const sourceIssue = await svc.getById(scope.watchedIssueId);
    if (!sourceIssue || sourceIssue.companyId !== companyId) {
      res.status(404).json({ error: "Watched source issue not found" });
      return false;
    }
    const watchdogIssue = scope.watchdogIssueId
      ? await svc.getById(scope.watchdogIssueId)
      : null;
    if (watchdogIssue && watchdogIssue.companyId !== companyId) {
      res.status(403).json({
        error:
          "Task-watchdog product bug evidence issue is outside the watchdog company",
      });
      return false;
    }

    return { scope, discovery, sourceIssue, watchdogIssue };
  }

  function isStatusOnlyRecoveryContext(contextSnapshot: unknown) {
    if (
      !contextSnapshot ||
      typeof contextSnapshot !== "object" ||
      Array.isArray(contextSnapshot)
    )
      return false;
    const context = contextSnapshot as Record<string, unknown>;
    return (
      context.recoveryIntent === "status_only" &&
      context.allowDeliverableWork === false &&
      context.allowDocumentUpdates === false &&
      context.resumeRequiresNormalModel === true
    );
  }

View on GitHub (pinned to 3f1d897a7c)