paperclipai/paperclip · error
Cheap status-only recovery runs cannot assign downstream iss
Error message
Cheap status-only recovery runs cannot assign downstream issue work to the cheap model profile
What it means
The request asks for the cheap model profile on issue assignment, but the acting run is a cheap status-only recovery run; such runs are limited to status updates and may not steer downstream work to the cheap profile.
Source
Thrown at server/src/routes/issues.ts:5077
return false;
}
const scope = await resolveTaskWatchdogMutationScope(db, req.actor);
if (scope.kind === "none") {
res.status(403).json({ error: "Only task-watchdog runs can create watchdog-discovered product bug follow-ups" });
return false;
}
if (scope.kind === "invalid") {
res.status(403).json({
error: scope.detail,
details: {
securityPrinciples: ["Least Privilege", "Complete Mediation", "Fail Securely"],
},
});
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;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:4913 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/f89b3fb2a627726b.
Report an issue: GitHub.