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 callView on GitHub (pinned to 0773b97458)
Solutions
- Re-run with more characters of the id until it is unique.
- Use the full run id copied from the run list or the candidates shown in the error.
- 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
- Use at least 8+ characters of the id when using prefixes.
- Generate a unique prefix per run when scripting (e.g. derive from timestamped ids).
- Parse the candidate list out of the error message to disambiguate programmatically.
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
- Cannot execute run '${detachedPreCreatedRun.id}': it belongs
- Dry-run failed; missing stubs: ${blockingMissingStubs.join('
- Failed to get workflow run: ${err.message}
- --open and --status are mutually exclusive: the inbox is fai
- Invalid --status '${opts.status}'. Valid: ${workflowRunStatu
AI-assisted analysis of coleam00/Archon@0773b97458 (2026-09-01).
Data as JSON: /api/errors/f20158f01c492de4.
Report an issue: GitHub.