{"record":{"id":"98111fbc9962dfcc","repo":"paperclipai/paperclip","slug":"only-board-users-can-view-feedback-traces","errorCode":null,"errorMessage":"Only board users can view feedback traces","messagePattern":"Only board users can view feedback traces","errorType":"http","errorClass":null,"httpStatus":403,"severity":"error","filePath":"server/src/routes/issues.ts","lineNumber":12728,"sourceCode":"            current,\n            req.body.selectedClientKeys,\n          )\n        : true;\n      if (!suggestedTaskEffectsAuthorized) return;\n\n      const actor = getActorInfo(req);\n      if (current.kind === \"request_confirmation\" && current.payload.toolAction) {\n        if (!opts.approveToolActionRequest) throw unprocessable(\"Tool review resolution is unavailable\");\n        await opts.approveToolActionRequest({ companyId: issue.companyId, issueId: issue.id, interactionId: current.id, actionRequestId: current.payload.toolAction.actionRequestId, rememberAction: req.body.rememberAction === true, actor: { agentId: actor.agentId, userId: actor.actorType === \"user\" ? actor.actorId : null } });\n        res.json(await interactionSvc.getById(current.id));\n        return;\n      }\n      if (req.body.rememberAction) throw unprocessable(\"Remembered permission is only supported for tool reviews\");\n      const { interaction, createdIssues, continuationIssue } = await interactionSvc.acceptInteraction(issue, interactionId, req.body, {\n        agentId: actor.agentId,\n        runId: actor.runId,\n        userId: actor.actorType === \"user\" ? actor.actorId : null,\n        resolverPolicyRestriction: resolutionAuthorization.resolverPolicyRestriction,\n        suggestedTaskEffectsAuthorized,\n      });\n      const toolAction = interaction.payload && typeof interaction.payload === \"object\"\n        ? (interaction.payload as { toolAction?: { actionRequestId?: unknown } }).toolAction\n        : null;\n      const secretProposal = interaction.payload && typeof interaction.payload === \"object\"\n        ? (interaction.payload as { secretProposal?: { proposalId?: unknown; configPath?: unknown } }).secretProposal\n        : null;\n      let continuationInteraction = interaction;\n      if (\n        interaction.kind === \"request_confirmation\"\n        && interaction.status === \"accepted\"\n        && typeof toolAction?.actionRequestId === \"string\"\n        && opts.approveToolActionRequest\n      ) {\n        const approvalResult = await opts.approveToolActionRequest({\n          companyId: issue.companyId,\n          issueId: issue.id,","sourceCodeStart":12710,"sourceCodeEnd":12746,"githubUrl":"https://github.com/paperclipai/paperclip/blob/01ad8584922b5d85292b1723cae71fa0d9b07a19/server/src/routes/issues.ts#L12710-L12746","documentation":"403 guard on GET /issues/:id/feedback-traces. Fires when the actor is not a board user; feedback trace records (AI feedback diagnostics) are board-only and never exposed to agent API keys.","triggerScenarios":"Thrown at server/src/routes/issues.ts:11716 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"}