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

  1. 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)