paperclipai/paperclip · error
unreadForUserId=me requires board authentication
Error message
unreadForUserId=me requires board authentication
What it means
403 from the issue list route: the query used unreadForUserId=me, which requires a resolvable board user, but no such user context exists for the actor.
Source
Thrown at server/src/routes/issues.ts:6142
}
function isQueuedIssueCommentForActiveRun(params: {
comment: {
authorAgentId?: string | null;
createdAt?: Date | string | null;
};
activeRun: {
agentId?: string | null;
startedAt?: Date | string | null;
createdAt?: Date | string | null;
};
}) {
const activeRunStartedAtMs =
toValidTimestamp(params.activeRun.startedAt) ?? toValidTimestamp(params.activeRun.createdAt);
const commentCreatedAtMs = toValidTimestamp(params.comment.createdAt);
if (activeRunStartedAtMs === null || commentCreatedAtMs === null) return false;
if (params.comment.authorAgentId && params.comment.authorAgentId === params.activeRun.agentId) return false;
return commentCreatedAtMs >= activeRunStartedAtMs;
}
async function getClosedIssueExecutionWorkspace(issue: { executionWorkspaceId?: string | null }) {
if (!issue.executionWorkspaceId) return null;
const workspace = await executionWorkspacesSvc.getById(issue.executionWorkspaceId);
if (!workspace || !isClosedIsolatedExecutionWorkspace(workspace)) return null;
return workspace;
}
// Reopen the closed isolated workspace that a guard found, so the request can
// continue. The return value tells the caller what happened:
// "reopened" - this request rebuilt the workspace and set the
// reopen-pending flag. The caller must install the
// consumption guard so the flag cannot leak.
// "already-open" - a concurrent request already reopened the workspace, so
// this request did not set the flag. The caller continues but
// must not install the guard, or it can clear the flag that
// the other request still owns.View on GitHub (pinned to 01ad858492)
Solutions
- Correct the request so it satisfies the condition stated in the error message, then retry; see the throwing line in the named file for the exact check.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at server/src/routes/issues.ts:5836 when the library encounters an invalid state.
Common situations: See trigger scenarios.
Understand the failure class
- Authentication and authorization failures — expired tokens, bad credentials, and missing scopes.
AI-assisted analysis of paperclipai/paperclip@01ad858492 (2026-08-18).
Data as JSON: /api/errors/59260b8ce4fddeda.
Report an issue: GitHub.