coleam00/Archon · error · Error

${err.message}

Error message

${err.message}

What it means

A message returned when a workflow gate continuation cannot be resolved: the handler caught an error while attempting to continue a paused run (logged as cmd.workflow_gate_continuation_unresolved with the error type and runId). The command still reports success:true but includes this err.message plus a resume hint telling the user to run `/workflow resume <runId>` once the blocker is fixed.

Source

Thrown at packages/core/src/handlers/command-handler.ts:404

 * "failed" about a gate that IS resolved would send the user to re-approve a run
 * that refuses a second decision.
 */
async function withRunContinuation(
  runId: string,
  workflowCwd: string,
  headline: string,
  action: 'approve' | 'reject' | 'respond'
): Promise<CommandResult> {
  let continuation: Awaited<ReturnType<typeof resolveRunContinuation>>;
  try {
    continuation = await resolveRunContinuation(runId, workflowCwd);
  } catch (error) {
    const err = error as Error;
    getLog().warn(
      { err, errorType: err.constructor.name, runId, action },
      'cmd.workflow_gate_continuation_unresolved'
    );
    continuation = { ok: false, message: err.message };
  }
  if (!continuation.ok) {
    const hint =
      continuation.resumeHint ?? `Resume it with \`/workflow resume ${runId}\` once that is fixed.`;
    return {
      success: true,
      message: `${headline}\nThe run could not be continued automatically: ${continuation.message}\n${hint}`,
    };
  }
  return {
    success: true,
    message: `${headline}\nResuming \`${continuation.workflowName}\`...`,
    workflow: continuation.workflow,
  };
}

async function handleWorktreeCommand(
  conversation: Conversation,

View on GitHub (pinned to 0773b97458)

Solutions

  1. Follow the hint in the message: run `/workflow resume <runId>` after addressing any stated blocker.
  2. Check the run's current state (`/workflow status <runId>`) — it may already be resolved by another actor.
  3. Inspect the structured log event cmd.workflow_gate_continuation_unresolved for the underlying errorType and stack.
  4. If the workflow definition changed mid-run, re-run the workflow from scratch instead of resuming.

Example fix

// before
/workflow approve 42   # -> continuation unresolved
// after
/workflow status 42
/workflow resume 42
Defensive patterns

Strategy: retry

Validate before calling

// Before acting on a gate, confirm the run is still paused and resolvable:
const run = await getRun(runId);
if (run.status !== 'paused') throw new Error(`run ${runId} is ${run.status}, not paused`);

Try / catch

const res = await handleWorkflowCommand(action, runId);
if (res.success && /continuation|resume/i.test(res.message)) {
  // follow the embedded hint:
  await resumeRun(runId); // or surface `/workflow resume <runId>` to the user
}

Prevention

When it happens

Trigger: Calling handleWorkflowCommand for a gate action (approve/reject) on a paused run, and the continuation attempt throws — e.g. the run's state changed since the gate was evaluated, the workflow definition is missing or changed, or an internal store error occurred during resume.

Common situations: Two operators acting on the same gate simultaneously; workflow YAML edited between pause and resume so the continuation no longer matches; database connectivity problems during the continuation write.

Related errors


AI-assisted analysis of coleam00/Archon@0773b97458 (2026-09-01). Data as JSON: /api/errors/3e44a81e87a05f4e. Report an issue: GitHub.