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 insertView on GitHub (pinned to 01ad858492)
Solutions
- 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.