paperclipai/paperclip · error

${wakeResult.message ?? "The assignee wake was skipped."}

Error message

${wakeResult.message ?? "The assignee wake was skipped."}

What it means

In SidebarRecentTasks' toggleTaskPause, after restarting a paused recent task the code wakes the assignee agent via agentsApi.wakeup. If the wake result does not contain an `id` (wake was skipped/failed), it throws with the result's `message` or the fallback 'The assignee wake was skipped.'

Source

Thrown at ui/src/components/SidebarRecentTasks.tsx:201

      if (state.activePauseHold?.isRoot) {
        const restartIssue = await issuesApi.get(entry.id);
        setRestartWakeRetryPending(restartRetryStorageKey, entry.id, true);
        await issuesApi.releaseTreeHold(entry.id, state.activePauseHold.holdId, {
          reason: "Restarted from Recent Tasks.",
        });
        if (restartIssue.assigneeAgentId) {
          const wakeResult = await agentsApi.wakeup(
            restartIssue.assigneeAgentId,
            {
              source: "assignment",
              triggerDetail: "manual",
              reason: "recent_task_restart",
              payload: { issueId: restartIssue.id },
            },
            restartIssue.companyId,
          );
          if (!("id" in wakeResult)) {
            throw new Error(wakeResult.message ?? "The assignee wake was skipped.");
          }
        }
        setRestartWakeRetryPending(restartRetryStorageKey, entry.id, false);
        toastActions?.pushToast({ title: "Task restarted", tone: "success" });
      } else if (state.activePauseHold) {
        throw new Error("This task is paused by a parent task. Restart it from the pause root.");
      } else if (readRestartWakeRetryIssueIds(restartRetryStorageKey).has(entry.id)) {
        const restartIssue = await issuesApi.get(entry.id);
        if (restartIssue.assigneeAgentId) {
          const wakeResult = await agentsApi.wakeup(
            restartIssue.assigneeAgentId,
            {
              source: "assignment",
              triggerDetail: "manual",
              reason: "recent_task_restart_retry",
              payload: { issueId: restartIssue.id },
            },
            restartIssue.companyId,

View on GitHub (pinned to 01ad858492)

Solutions

  1. Inspect wakeResult.message for the agent-specific skip reason
  2. Verify the assignee agent exists, is active, and has valid credentials
  3. Retry the restart via the retry-pending storage key flow
  4. Check the runner/agent adapter health before restarting

Example fix

// before
throw new Error(wakeResult.message ?? "The assignee wake was skipped.");
// after
if (!("id" in wakeResult)) {
  toastActions?.pushToast({ title: wakeResult.message ?? "Agent wake skipped", tone: "warning" });
  return;
}
Defensive patterns

Strategy: try-catch

Validate before calling

const wakeable = entry.assigneeAgentId && agents.some(a => a.id === entry.assigneeAgentId && a.status === 'active');

Type guard

function isWakeResult(r: unknown): r is { id: string } { return typeof r === 'object' && r !== null && 'id' in r; }

Try / catch

try { await toggleTaskPause(entry); } catch (e) { if (/wake was skipped/i.test(e.message)) showToast('Agent could not be woken: ' + e.message); else throw e; }

Prevention

When it happens

Trigger: agentsApi.wakeup returns a non-wake result object (e.g. { skipped: true, message }) because the agent cannot be woken: agent paused, agent missing credentials, or the runner rejected the wake during a recent-task restart.

Common situations: Restarting a task whose assignee was deactivated, agent API key revoked, runner offline so the wake is skipped, agent in an error state blocking wake.

Understand the failure class

Background: "invalid response format", "malformed payload", "missing data field": when an API returns 200 but the response shape is wrong — this error's family across 23 libraries.

Related errors


AI-assisted analysis of paperclipai/paperclip@01ad858492 (2026-09-10). Data as JSON: /api/errors/02e4acbaa7a3321f. Report an issue: GitHub.