paperclipai/paperclip · error
Cheap status-only recovery runs cannot create or modify…
Error message
Cheap status-only recovery runs cannot create or modify approvals
What it means
403 from assertApprovalMutationAllowedByRunContext: the actor's run is a cheap, status-only recovery run, and such runs are explicitly barred from creating or modifying approvals; resuming requires a normal-model run.
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:4957 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/435ab698d3aaa133.
Report an issue: GitHub.
Appendix: source
Thrown at server/src/routes/issues.ts:6310
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,
companyId: heartbeatRuns.companyId,
agentId: heartbeatRuns.agentId,
contextSnapshot: heartbeatRuns.contextSnapshot,
})
.from(heartbeatRuns)
.where(eq(heartbeatRuns.id, runId))
.then((rows) => rows[0] ?? null);
if (
!run ||
run.companyId !== companyId ||
run.agentId !== req.actor.agentId
)
return null;
return run;
}
function readObject(value: unknown): Record<string, unknown> {
return value && typeof value === "object" && !Array.isArray(value)
? (value as Record<string, unknown>)
: {};
}View on GitHub (pinned to 3f1d897a7c)