{"record":{"id":"c61264072e8c7bc5","repo":"paperclipai/paperclip","slug":"only-the-interaction-creator-current-issue-assign","errorCode":null,"errorMessage":"Only the interaction creator, current issue assignee, or a board user may withdraw it","messagePattern":"Only the interaction creator, current issue assignee, or a board user may withdraw it","errorType":"http","errorClass":null,"httpStatus":403,"severity":"error","filePath":"server/src/routes/issues.ts","lineNumber":4747,"sourceCode":"          }\n        }\n        await assertTaskBridgeCreateAllowed(req, issue.companyId, {\n          projectId: task.projectId ?? issue.projectId,\n          parentIssueId: parent.id,\n          assigneeAgentId: task.assigneeAgentId ?? null,\n          assigneeUserId: task.assigneeUserId ?? null,\n        });\n        if (task.assigneeAgentId || task.assigneeUserId) {\n          await assertCanAssignTasks(req, issue.companyId, {\n            projectId: task.projectId ?? issue.projectId,\n            parentIssueId: parent.id,\n            assigneeAgentId: task.assigneeAgentId ?? null,\n            assigneeUserId: task.assigneeUserId ?? null,\n          });\n        }\n      } catch (error) {\n        if (!(error instanceof HttpError) || error.status !== 403) throw error;\n        return denyIssueThreadInteractionResolution(res, {\n          status: 403,\n          code: \"interaction_governed_action_denied\",\n          message: \"Suggested-task creation requires independent authorization for every selected task\",\n        });\n      }\n    }\n    return true;\n  }\n\n  async function resolvePendingReviewInteractionRestriction(\n    issue: {\n      id: string;\n      companyId: string;\n      status: string;\n      reviewPolicy?: IssueReviewPolicy | null;\n      createdByAgentId?: string | null;\n      createdByUserId?: string | null;\n    },","sourceCodeStart":4729,"sourceCodeEnd":4765,"githubUrl":"https://github.com/paperclipai/paperclip/blob/01ad8584922b5d85292b1723cae71fa0d9b07a19/server/src/routes/issues.ts#L4729-L4765","documentation":"403 guard on withdrawing an issue-thread interaction: the agent actor is neither the interaction's creator, nor the current issue assignee, nor acting under a board user, so withdrawal is denied.","triggerScenarios":"Thrown at server/src/routes/issues.ts:4583 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","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."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"01ad8584922b5d85292b1723cae71fa0d9b07a19","analyzedAt":"2026-08-18T22:49:45.177Z","contentChangedAt":"2026-08-18T22:49:45.177Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}