paperclipai/paperclip · error

Queued comment can no longer be canceled

Error message

Queued comment can no longer be canceled

What it means

409 on queued-comment cancel. Fires when the comment is owned by the actor and a cancel was requested, but the comment is no longer queued for the active run (already delivered/flushed or the run has moved past it), so cancellation is too late.

Source

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

    if (!issue) return;
    if (!(await assertIssueReadAllowed(req, res, issue))) return;
    const interactions = await issueThreadInteractionService(db).listForIssue(id);
    res.json(interactions);
  });

  router.post("/issues/:id/interactions", validate(createIssueThreadInteractionSchema), async (req, res) => {
    const id = req.params.id as string;
    const issue = await getAccessibleResource(req, res, svc.getById(id), "Issue not found");
    if (!issue) return;
    if (req.actor.type === "agent") {
      if (!(await assertAgentIssueMutationAllowed(req, res, issue, { allowVisibleIssueWrite: true }))) return;
      if (await assertLowTrustControlPlaneDenied(req, res, issue.companyId, issue)) return;
    } else {
      assertBoard(req);
    }

    const actor = getActorInfo(req);
    const agentSourceRunId = req.actor.type === "agent" ? requireAgentRunId(req, res) : null;
    if (req.actor.type === "agent" && !agentSourceRunId) return;
    if (
      req.body.kind === "request_confirmation"
      && req.body.addresseeAgentId
      && req.body.payload?.toolAction !== undefined
    ) {
      throw badRequest("Tool-action confirmations cannot be addressed to agents");
    }
    if (req.body.kind === "request_confirmation" && req.body.payload?.toolAction !== undefined) {
      throw unprocessable("payload.toolAction is server-owned metadata and cannot be supplied when creating an interaction");
    }
    if (req.body.kind === "request_confirmation" && req.body.payload?.secretProposal !== undefined) {
      throw unprocessable("payload.secretProposal is server-owned metadata and cannot be supplied when creating an interaction");
    }

    // Plan-document confirmation targets are validated authoritatively inside
    // issueThreadInteractionService.create, which re-reads the plan document's
    // latest revision and rejects a stale/missing target under the same insert

View on GitHub (pinned to 01ad858492)

Solutions

  1. Wait for the conflicting state to clear (running job, hold, pause, or stale fingerprint), refresh the current state, then retry the operation.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at server/src/routes/issues.ts:11579 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/166f5003f174694a. Report an issue: GitHub.