paperclipai/paperclip · error
Agent key belongs to
Error message
Agent key belongs to ${agent.name} (${agent.id}), not '${reference}'. Use the matching agent or a board prompt. What it means
assertAgentMatchesReference verified that the authenticated agent (from /agents/me) matches the requested reference across id/name/urlKey; mismatch means the agent API key belongs to a different agent than requested.
Solutions
- Use the API key belonging to the referenced agent, or use a board prompt instead.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at cli/src/commands/client/prompt.ts:257 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of paperclipai/paperclip@120ae5428f (2026-08-18).
Data as JSON: /api/errors/89778d4e7ef7742e.
Report an issue: GitHub.
Appendix: source
Thrown at cli/src/commands/client/prompt.ts:257
if (!normalized) throw new Error("Prompt text is required");
return normalized;
}
function defaultPromptTitle(prompt: string): string {
const firstLine = prompt.split(/\r?\n/).map((line) => line.trim()).find(Boolean) ?? "Prompt handoff";
return firstLine.length > 100 ? `${firstLine.slice(0, 97)}...` : firstLine;
}
function assertAgentMatchesReference(agent: Agent, reference: string): void {
const normalized = reference.trim().toLowerCase();
if (!normalized) throw new Error("Agent reference is required");
const matches = [
agent.id,
agent.name,
typeof agent.urlKey === "string" ? agent.urlKey : null,
].some((value) => value?.toLowerCase() === normalized);
if (!matches) {
throw new Error(
`Agent key belongs to ${agent.name} (${agent.id}), not '${reference}'. Use the matching agent or a board prompt.`,
);
}
}
function agentSummary(agent: Agent): PromptResult["agent"] {
return {
id: agent.id,
name: agent.name,
urlKey: typeof agent.urlKey === "string" ? agent.urlKey : null,
};
}
function readApiKeyEnvOption(opts: PromptOptions): string | undefined {
if (!opts.apiKeyEnv?.trim()) return undefined;
const value = process.env[opts.apiKeyEnv.trim()]?.trim();
if (!value) throw new Error(`Environment variable ${opts.apiKeyEnv.trim()} is not set`);
return value;View on GitHub (pinned to 120ae5428f)