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
- Inspect wakeResult.message for the agent-specific skip reason
- Verify the assignee agent exists, is active, and has valid credentials
- Retry the restart via the retry-pending storage key flow
- 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
- Verify the assignee agent is active with valid credentials before restart
- Distinguish wake-skip results from hard API failures
- Offer manual 'open agent settings' on skip
- Log wakeResult fully for diagnosis
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
- Probe found no matching Anthropic Agent
- Existing Anthropic Agent model does not match the requested
- Anthropic did not return a usable pinned Agent version
- Anthropic pinned Agent version identity does not match the s
- evaluation_issue_required
AI-assisted analysis of paperclipai/paperclip@01ad858492 (2026-09-10).
Data as JSON: /api/errors/02e4acbaa7a3321f.
Report an issue: GitHub.