{"record":{"id":"2eb06f01d0441a76","repo":"paperclipai/paperclip","slug":"only-board-users-can-interrupt-active-runs-from-is","errorCode":null,"errorMessage":"Only board users can interrupt active runs from issue comments","messagePattern":"Only board users can interrupt active runs from issue comments","errorType":"http","errorClass":null,"httpStatus":403,"severity":"error","filePath":"server/src/routes/issues.ts","lineNumber":9897,"sourceCode":"      await assertIssueEnvironmentSelection(sourceIssue.companyId, childBody.executionWorkspaceSettings?.environmentId);\n    }\n\n    const actor = getActorInfo(req);\n    const normalizedChildren = [];\n    for (const child of requestedChildren) {\n      const executionPolicy = applyActorMonitorScheduledBy(\n        normalizeIssueExecutionPolicy(child.executionPolicy),\n        actor.actorType,\n      );\n      await assertCanManageIssueMonitor(access, req, sourceIssue.companyId, child.assigneeAgentId ?? null, Boolean(executionPolicy?.monitor));\n      const childIssueId = randomUUID();\n      const sourceTrust = await sourceTrustForActorWrite({\n        id: childIssueId,\n        companyId: sourceIssue.companyId,\n        projectId: child.projectId ?? sourceIssue.projectId ?? null,\n        executionPolicy,\n      }, actor);\n      normalizedChildren.push({\n        ...child,\n        id: childIssueId,\n        executionPolicy,\n        ...(sourceTrust ? { sourceTrust } : {}),\n        createdByAgentId: actor.agentId,\n        createdByUserId: actor.actorType === \"user\" ? actor.actorId : null,\n        actorRunId: actor.runId,\n        actorResponsibleUserId: authenticatedActorResponsibleUserId(req),\n        trustExplicitResponsibleUserId: actor.actorType === \"user\",\n        actorAgentId: actor.agentId,\n        actorUserId: actor.actorType === \"user\" ? actor.actorId : null,\n      });\n    }\n    const serializationContext = await resolveWatchdogFollowUpSerializationContext(req, sourceIssue);\n    const existingSerializedChild = serializationContext\n      ? await findCurrentSerializedWatchdogChild(sourceIssue)\n      : null;\n    const serializedBlockedChildIds = new Set<string>();","sourceCodeStart":9879,"sourceCodeEnd":9915,"githubUrl":"https://github.com/paperclipai/paperclip/blob/01ad8584922b5d85292b1723cae71fa0d9b07a19/server/src/routes/issues.ts#L9879-L9915","documentation":"403 guard on interrupt handling. Fires when an interrupt was requested with a valid comment but the actor is an agent; only board users may interrupt an in-progress run via an issue comment.","triggerScenarios":"Thrown at server/src/routes/issues.ts:9216 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-14T05:17:10.506Z"}