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

Unsupported mission mark status: ${value}

Error message

Unsupported mission mark status: ${value}

What it means

Thrown when a --status=<value> argument is supplied to mission mark with a value other than the two allowed task statuses: blocked or needs-human-review. The value is validated inline during argument parsing.

Source

Thrown at src/cli/mission.ts:213

      continue;
    }
    if (arg === "--slug") {
      slug = readValue(commandArgs, index, arg);
      index += 1;
      continue;
    }
    if (arg.startsWith("--task=")) {
      taskId = arg.slice("--task=".length);
      continue;
    }
    if (arg === "--task") {
      taskId = readValue(commandArgs, index, arg);
      index += 1;
      continue;
    }
    if (arg.startsWith("--status=")) {
      const value = arg.slice("--status=".length);
      if (value !== "blocked" && value !== "needs-human-review") throw new MissionCommandError(`Unsupported mission mark status: ${value}`);
      markStatus = value;
      continue;
    }
    if (arg === "--status") {
      const value = readValue(commandArgs, index, arg);
      if (value !== "blocked" && value !== "needs-human-review") throw new MissionCommandError(`Unsupported mission mark status: ${value}`);
      markStatus = value;
      index += 1;
      continue;
    }
    if (arg.startsWith("--")) throw new MissionCommandError(`Unknown mission option: ${arg}`);
    if (!file) {
      file = arg;
      continue;
    }
    throw new MissionCommandError(`Unexpected mission argument: ${arg}`);
  }

View on GitHub (pinned to 3ad79a8a6f)

Solutions

  1. Use exactly `blocked` or `needs-human-review`
  2. Check spelling of needs-human-review (hyphens, singular 'review')
  3. Run mission mark --help or consult MISSION_HELP text for valid values

Example fix

# before
mission mark mission.md --task t1 --status=failed
# after
mission mark mission.md --task t1 --status=blocked
Defensive patterns

Strategy: type-guard

Validate before calling

const MARK_STATUSES = ['blocked', 'needs-human-review'] as const;
if (!MARK_STATUSES.includes(value)) throw new Error(`expected one of ${MARK_STATUSES.join('|')}`);

Type guard

function isMarkStatus(v: string): v is 'blocked' | 'needs-human-review' {
  return v === 'blocked' || v === 'needs-human-review';
}

Prevention

When it happens

Trigger: `mission mark m.md --task t1 --status=failed`, `--status=in-progress`, or any typo like `--status=needs-human-reviews`.

Common situations: Assuming arbitrary MissionTaskStatus values (pending/passed/failed) can be set via mark; typos in the long status string needs-human-review.

Understand the failure class

Background: Invalid enum value errors: "Unknown type", "Invalid scope", "must be one of" — when a string is not on the library's allowed list — this error's family across 23 libraries.

Related errors


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