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.
Source
Thrown at server/src/routes/issues.ts:4164
for (const row of rows) if (row.name) nameById.set(row.id, row.name);
} catch (err) {
logger.warn({ err }, "failed to resolve agent names for issue write denial copy");
}
}
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, () => decideIssueAccess(req, issue, "issue:read"));
const decision = await value;
if (decision.allowed) return true;
res.status(403).json({ error: "Issue is outside this actor's authorization boundary" });
return false;View on GitHub (pinned to 01ad858492)
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@01ad858492 (2026-08-18).
Data as JSON: /api/errors/4cc894000a684d2a.
Report an issue: GitHub.