paperclipai/paperclip · error
Profile ' ' is persona= ; use an agent profile or board…
Error message
Profile '${ctx.profileName}' is persona=${ctx.profile.persona}; use an agent profile or board prompt. What it means
runAgentPrompt checks the active CLI profile persona; a board (or other non-agent) profile cannot use the agent prompt path because /api/agents/me requires an agent credential.
Solutions
- Use an agent-persona profile, or run the board prompt variant of the command.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at cli/src/commands/client/prompt.ts:119 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/2ff5789e987ede82.
Report an issue: GitHub.
Appendix: source
Thrown at cli/src/commands/client/prompt.ts:119
try {
const result = await runBoardPrompt(opts.agent ?? "", promptParts.join(" "), opts);
printOutput(result, { json: opts.json });
} catch (err) {
handleCommandError(err);
}
}),
{ includeCompany: false },
);
}
export async function runAgentPrompt(
agentRef: string | undefined,
prompt: string,
opts: PromptOptions,
): Promise<PromptResult> {
const ctx = resolveCommandContext(opts);
if (ctx.profile.persona && ctx.profile.persona !== "agent") {
throw new Error(`Profile '${ctx.profileName}' is persona=${ctx.profile.persona}; use an agent profile or board prompt.`);
}
const body = normalizePrompt(prompt);
const me = await ctx.api.get<Agent>("/api/agents/me");
if (!me) throw new Error("Agent authentication failed");
const expectedRef = agentRef?.trim() || ctx.profile.agentId || me.id;
assertAgentMatchesReference(me, expectedRef);
const result = await createOrCommentForAgent({
api: ctx.api,
actor: "agent",
agent: me,
companyId: me.companyId,
prompt: body,
issueId: opts.issue,
title: opts.title,
wake: opts.wake !== false,
});
return result;View on GitHub (pinned to 120ae5428f)