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

  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: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.