Yeachan-Heo/oh-my-codex · error · Error

autoresearch_resume_manifest_missing

autoresearch_resume_manifest_missing

Error message

autoresearch_resume_manifest_missing:${runId}

What it means

loadAutoresearchRunManifest throws (code autoresearch_resume_manifest_missing) when the run's manifest.json does not exist at <projectRoot>/.omx/logs/autoresearch/<runId>/manifest.json. Resume and manifest-inspection APIs require that the run was previously registered with a persisted manifest.

Source

Thrown at src/autoresearch/runtime.ts:757

      stdio: 'ignore',
    });
  } catch {
    // Non-fatal: if commit fails the reset-safe check will catch it with
    // a clear diagnostic.
  }

  return {
    ...contract,
    missionDir,
    missionFile,
    sandboxFile,
  };
}

export async function loadAutoresearchRunManifest(projectRoot: string, runId: string): Promise<AutoresearchRunManifest> {
  const manifestFile = join(projectRoot, '.omx', 'logs', 'autoresearch', runId, 'manifest.json');
  if (!existsSync(manifestFile)) {
    throw new Error(`autoresearch_resume_manifest_missing:${runId}`);
  }
  return readJsonFile<AutoresearchRunManifest>(manifestFile);
}

async function writeRunManifest(manifest: AutoresearchRunManifest): Promise<void> {
  manifest.updated_at = nowIso();
  await writeJsonFile(manifest.manifest_file, manifest);
}

async function writeInstructionsFile(contract: AutoresearchMissionContract, manifest: AutoresearchRunManifest): Promise<void> {
  const instructionContext = await buildAutoresearchInstructionContext(manifest);
  await writeFile(
    manifest.instructions_file,
    `${buildAutoresearchInstructions(contract, {
      runId: manifest.run_id,
      iteration: manifest.iteration + 1,
      baselineCommit: manifest.baseline_commit,
      lastKeptCommit: manifest.last_kept_commit,

View on GitHub (pinned to 3ad79a8a6f)

Solutions

  1. List .omx/logs/autoresearch/ in the project root and confirm the exact runId directory exists
  2. If the ID was mistyped, use the correct runId from the run listing
  3. If the artifacts were deleted, the run cannot be resumed — start a new autoresearch run
  4. Ensure you run resume from the same repository root where the run was created

Example fix

# before
await resumeAutoresearchRuntime(repoRoot, 'run-123'); // throws: manifest missing
# after
const runId = fs.readdirSync(join(repoRoot, '.omx/logs/autoresearch'))[0];
await resumeAutoresearchRuntime(repoRoot, runId);
Defensive patterns

Strategy: validation

Validate before calling

import { existsSync } from 'node:fs';
import { join } from 'node:path';
function manifestExists(repoRoot: string, runId: string): boolean {
  return existsSync(join(repoRoot, '.omx', 'logs', 'autoresearch', runId, 'manifest.json'));
}

Try / catch

try { await resumeAutoresearchRuntime(repoRoot, runId); }
catch (e) { if (e instanceof Error && e.message.startsWith('autoresearch_resume_manifest_missing')) { /* list .omx/logs/autoresearch to find valid runIds */ } throw e; }

Prevention

When it happens

Trigger: Calling resumeAutoresearchRuntime or any manifest accessor (finalManifest, keptManifest, beforeDiscardManifest, initialManifest) with a runId that has no manifest: mistyped ID, run artifacts deleted, or a run from a different repository root.

Common situations: Copy-pasting a truncated or wrong run ID, cleaning .omx/logs with gitignore+clean, running resume in the wrong clone/repo root, or the run directory being on a machine other than where the run started.

Related errors


AI-assisted analysis of Yeachan-Heo/oh-my-codex@3ad79a8a6f (2026-08-27). Data as JSON: /api/errors/b8f5befe07e4c19e. Report an issue: GitHub.