paperclipai/paperclip · error

Only board users can view feedback traces

Error message

Only board users can view feedback traces

What it means

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.

Source

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

            current,
            req.body.selectedClientKeys,
          )
        : true;
      if (!suggestedTaskEffectsAuthorized) return;

      const actor = getActorInfo(req);
      if (current.kind === "request_confirmation" && current.payload.toolAction) {
        if (!opts.approveToolActionRequest) throw unprocessable("Tool review resolution is unavailable");
        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 } });
        res.json(await interactionSvc.getById(current.id));
        return;
      }
      if (req.body.rememberAction) throw unprocessable("Remembered permission is only supported for tool reviews");
      const { interaction, createdIssues, continuationIssue } = await interactionSvc.acceptInteraction(issue, interactionId, req.body, {
        agentId: actor.agentId,
        runId: actor.runId,
        userId: actor.actorType === "user" ? actor.actorId : null,
        resolverPolicyRestriction: resolutionAuthorization.resolverPolicyRestriction,
        suggestedTaskEffectsAuthorized,
      });
      const toolAction = interaction.payload && typeof interaction.payload === "object"
        ? (interaction.payload as { toolAction?: { actionRequestId?: unknown } }).toolAction
        : null;
      const secretProposal = interaction.payload && typeof interaction.payload === "object"
        ? (interaction.payload as { secretProposal?: { proposalId?: unknown; configPath?: unknown } }).secretProposal
        : null;
      let continuationInteraction = interaction;
      if (
        interaction.kind === "request_confirmation"
        && interaction.status === "accepted"
        && typeof toolAction?.actionRequestId === "string"
        && opts.approveToolActionRequest
      ) {
        const approvalResult = await opts.approveToolActionRequest({
          companyId: issue.companyId,
          issueId: issue.id,

View on GitHub (pinned to 01ad858492)

Solutions

  1. 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).
  2. If access should be allowed, verify the actor's credentials/company scope and the resource's ownership before retrying.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at server/src/routes/issues.ts:11716 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/98111fbc9962dfcc. Report an issue: GitHub.