coleam00/Archon · error · Error

Run id '${runId}' matches more than one run in this project:

Error message

Run id '${runId}' matches more than one run in this project:
${candidates}
Use more characters or the full id.

What it means

A short run-id prefix matched multiple runs within the resolved project, so the CLI refuses to guess and lists the candidate full ids, asking for a longer prefix.

Source

Thrown at packages/cli/src/commands/workflow.ts:4084

  if (FULL_RUN_ID_RE.test(runId)) return runId;
  if (cwd === undefined && codebaseId === undefined) {
    if (requirePrefixMatch) {
      throw new Error(`Cannot resolve run id prefix '${runId}' without a project directory.`);
    }
    return runId;
  }
  const resolvedCodebaseId =
    codebaseId ?? (cwd === undefined ? undefined : (await findCodebaseForCheckoutPath(cwd))?.id);
  if (!resolvedCodebaseId) {
    if (requirePrefixMatch) {
      throw new Error(`Cannot resolve run id prefix '${runId}' outside a registered project.`);
    }
    return runId;
  }
  const matches = await workflowDb.findWorkflowRunsByIdPrefix(runId, resolvedCodebaseId);
  if (matches.length > 1) {
    const candidates = matches.map(match => `  ${match.id}`).join('\n');
    throw new Error(
      `Run id '${runId}' matches more than one run in this project:\n${candidates}\nUse more characters or the full id.`
    );
  }
  if (matches.length === 0) {
    if (requirePrefixMatch) {
      throw new Error(`No workflow run matches prefix '${runId}' in this project.`);
    }
    return runId;
  }
  return matches[0].id;
}

/**
 * Shared `--detach` front half for `approve`/`reject`/`resume`. Validates the run
 * READ-ONLY via `precheck`, then hands the whole command to a detached child that
 * re-invokes the same argv (minus `--detach`/`--json`) and owns ALL state mutation
 * in its own process group — so killing the shell that hosted the parent cannot
 * zombie the run mid-resume. The parent must never call

View on GitHub (pinned to 0773b97458)

Solutions

  1. Re-run with more characters of the id until it is unique.
  2. Use the full run id copied from the run list or the candidates shown in the error.
  3. Filter `archon workflow runs` by status/date first to find the exact id.

Example fix

// before
archon workflow get ab
// after
archon workflow get ab12cd34
Defensive patterns

Strategy: validation

Validate before calling

const runs = await listRuns({ json: true }); const hits = runs.filter(r => r.id.startsWith(prefix)); if (hits.length !== 1) throw new Error('prefix not unique, use full id');

Try / catch

try { await getRun(prefix); } catch (e) { const ids = [...String(e.message).matchAll(/\s+([0-9a-f-]{36})/g)].map(m => m[1]); if (ids.length) return getRun(ids[0]); throw e; }

Prevention

When it happens

Trigger: `workflow get/resume/approve` with a prefix (e.g. 2-4 chars) that is a prefix of two or more run ids in the same codebase.

Common situations: Sharing a session id prefix across many runs of the same project; copying only the first few characters of an id from a log line; tab-completion habits from other tools.

Related errors


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