paperclipai/paperclip · error

Board mutation requires trusted browser origin

Error message

Board mutation requires trusted browser origin

What it means

CSRF-style guard in boardMutationGuard: a board-session (browser) actor attempted a mutating request, but the Origin/Referer header did not match a trusted board origin. Only browser-session board mutations are checked — local_implicit, board_key, and cloud_tenant actor sources skip this check — so it fires specifically on cross-site or misconfigured-origin browser requests. Responds 403.

Source

Thrown at server/src/middleware/board-mutation-guard.ts:101

    if (req.actor.type !== "board") {
      next();
      return;
    }

    // Local-trusted mode, board bearer keys, and trusted Cloud tenant calls are
    // not browser-session requests.
    // In these modes, origin/referer headers can be absent; do not block those mutations.
    if (
      req.actor.source === "local_implicit"
      || req.actor.source === "board_key"
      || req.actor.source === "cloud_tenant"
    ) {
      next();
      return;
    }

    if (!trustedBoardMutationOrigin(req)) {
      res.status(403).json({ error: "Board mutation requires trusted browser origin" });
      return;
    }

    next();
  };
}

View on GitHub (pinned to 01ad858492)

Solutions

  1. Send the mutation from the trusted board UI origin; do not call it from an untrusted cross-origin context.
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at server/src/middleware/board-mutation-guard.ts:72 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of paperclipai/paperclip@01ad858492 (2026-09-10). Data as JSON: /api/errors/34d7cce516d8d8b0. Report an issue: GitHub.