paperclipai/paperclip · error
Agent cannot mutate another agent's issue
Error message
Agent cannot mutate another agent's issue
What it means
The issue is assigned to a different agent and no active checkout-management override exists; in-progress issues keep assignee-scoped run ownership, so this agent's write is denied with the assignee run lock.
Source
Thrown at server/src/routes/issues.ts:4250
return false;
}
return assertFreshTaskWatchdogSourceMutation(res, watchdogScope, issue);
}
const boundaryDecision = await decideIssueAccess(req, issue, "issue:comment");
if (!boundaryDecision.allowed) {
return denyIssueWrite(req, res, issue, issueWriteDenialCodeForDecision(boundaryDecision));
}
return boundaryDecision;
}
function isIssueMentionGrantDecision(decision: true | Awaited<ReturnType<typeof decideIssueAccess>>) {
return decision !== true && decision.reason === "allow_issue_mention_grant";
}
function isDirectParentReportDecision(decision: true | Awaited<ReturnType<typeof decideIssueAccess>>) {
return decision !== true && decision.reason === "allow_direct_parent_report";
}
function isDefaultOpenIssueWriteDecision(decision: true | Awaited<ReturnType<typeof decideIssueAccess>>) {
return decision !== true && decision.reason === "allow_visible_issue_write";
}
async function filterIssuesForActor<T extends Parameters<typeof decideIssueAccess>[1]>(req: Request, rows: T[]) {
const decisions = await Promise.all(rows.map((issue) => decideIssueAccess(req, issue, "issue:read")));
return rows.filter((_, index) => decisions[index]?.allowed);
}
async function actorCanReadCompanyScope(req: Request, companyId: string) {
const decision = await access.decide({
actor: req.actor,
action: "company_scope:read",
resource: { type: "company", companyId },
});
return decision.allowed;
}
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:4086 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/9fe3a6c92d4d8b20.
Report an issue: GitHub.