paperclipai/paperclip · error
Cheap status-only recovery runs cannot update issue document
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.
Source
Thrown at server/src/routes/issues.ts:5091
return false;
}
if (scope.companyId !== companyId) {
res.status(403).json({ error: "Task-watchdog product bug follow-up target is outside the watchdog company" });
return false;
}
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;
}
async function loadActorRunContext(req: Request, companyId: string) {
if (req.actor.type !== "agent") return null;
const runId = req.actor.runId?.trim();
if (!runId) return null;
const run = await db
.select({
id: heartbeatRuns.id,View on GitHub (pinned to 01ad858492)
Solutions
- 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).
- 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@01ad858492 (2026-08-18).
Data as JSON: /api/errors/012ffc0f4f4fd8fc.
Report an issue: GitHub.