paperclipai/paperclip · error

Agent actors cannot cancel issue-thread interactions through

Error message

Agent actors cannot cancel issue-thread interactions through this board-only route

What it means

403 guard on POST /issues/:id/interactions/:interactionId/cancel. Fires when the actor is an agent; cancelling issue-thread interactions (confirmations, questions) is restricted to the board route and agents must use their own run-scoped paths.

Source

Thrown at server/src/routes/issues.ts:12280

      assertBoard(req);
      if (!req.actor.userId) throw forbidden("Board user context required");
      const id = req.params.id as string;
      const issue = await getAccessibleResource(req, res, svc.getById(id), "Issue not found");
      if (!issue) return;
      const actor = getActorInfo(req);
      const queue = await db.transaction(async (tx) => {
        const locked = await lockQueuedCommentState({
          tx,
          issue,
          actor,
          queueId: req.body.queueId,
        });
        assertQueueMutationTarget({
          queue: locked.queue,
          queueId: req.body.queueId,
          revision: req.body.revision,
        });
        const currentIds = locked.queue.entries.map((entry) => entry.comment.id);
        const orderedIds = req.body.orderedCommentIds as string[];
        const orderedSet = new Set(orderedIds);
        if (
          orderedSet.size !== orderedIds.length
          || orderedIds.length !== currentIds.length
          || currentIds.some((commentId) => !orderedSet.has(commentId))
        ) {
          throw conflict("The queued message order does not match the current queue", {
            code: "queued_comment_order_mismatch",
          });
        }
        const now = new Date();
        const updatedWake = await tx
          .update(agentWakeupRequests)
          .set({
            payload: withQueuedCommentIdsInWakePayload(locked.wake.payload, orderedIds),
            updatedAt: now,
          })

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:11491 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/3dbe025ed0ac0c6f. Report an issue: GitHub.