paperclipai/paperclip · error
Agent run id required
Error message
Agent run id required
What it means
400 from requireAgentRunId: the request demands an agent run context but the actor provided no run id, so the run-scoped operation cannot proceed.
Solutions
- Include the required field(s) in the request path, query, or body as named by the error message, then retry.
- Check the API contract in packages/shared validators for the exact required shape of this endpoint.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at server/src/routes/issues.ts:4000 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of paperclipai/paperclip@3f1d897a7c (2026-08-18).
Data as JSON: /api/errors/4cc894000a684d2a.
Report an issue: GitHub.
Appendix: source
Thrown at server/src/routes/issues.ts:5097
);
}
}
return {
actorLabel: actorAgentId ? (nameById.get(actorAgentId) ?? null) : null,
assigneeLabel: issue.assigneeAgentId
? (nameById.get(issue.assigneeAgentId) ?? null)
: null,
issueIdentifier: issue.identifier ?? null,
responsibleUserName: null,
};
}
/** Respond to a denied issue write with copy that names boundary, who, and path. */
async function denyIssueWrite(
req: Request,
res: Response,
issue: { identifier?: string | null; assigneeAgentId: string | null },
code: IssueWriteDenialCode,
extraDetails: Record<string, unknown> = {},
) {
const labels = await issueWriteDenialLabels(req, issue);
const { status, body } = issueWriteDenialResponse(code, labels);
res.status(status).json({
error: body.error,
details: { ...body.details, ...extraDetails },
});
return false as const;
}
async function assertIssueReadAllowed(
req: Request,
res: Response,
issue: Parameters<typeof decideIssueAccess>[1],
) {
const key = `${issue.id}:${issue.companyId}:${issue.projectId ?? ""}:${issue.parentId ?? ""}:${issue.assigneeAgentId ?? ""}:${issue.assigneeUserId ?? ""}:${issue.status}`;
const value = memoizeIssueReadDecision(req, key, () =>View on GitHub (pinned to 3f1d897a7c)