stablyai/orca · error · Error
The codex-lb scenario requires --config-template outside pri
Error message
The codex-lb scenario requires --config-template outside primary ~/.codex
What it means
Thrown by the Codex validation harness when --scenario codex-lb is selected without a --config-template. The codex-lb (load-balanced) scenario routes to a native Codex instance that requires a config.toml; the template must be supplied and must live outside the primary ~/.codex (enforced separately by error 195).
Source
Thrown at config/scripts/run-codex-real-account-validation.mjs:315
// (native codex ignores USERPROFILE), so strict zero-event containment is
// structurally unreachable there. This mode records codex's designed
// volatile churn without aborting while every other real-home write stays
// a hard failure. The absolute zero-event claim is carried by macOS runs.
options.laneAwareContainment = true
} else if (arg === '--help') {
console.log(
'Usage: node config/scripts/run-codex-real-account-validation.mjs [--scenario mixed|managed-only|codex-lb] [--config-template <path>] [--temp-parent <dir>] [--skip-build] [--dry-run] [--close-after-launch] [--keep] [--lane-aware-containment] [--report <path>]'
)
process.exit(0)
} else {
throw new Error(`Unknown argument: ${arg}`)
}
}
if (!VALID_SCENARIOS.has(options.scenario)) {
throw new Error(`Invalid scenario: ${options.scenario}`)
}
if (options.scenario === 'codex-lb' && !options.configTemplate) {
throw new Error('The codex-lb scenario requires --config-template outside primary ~/.codex')
}
return options
}
// Why: `npx` resolves to a .cmd shim on Windows that execFileSync cannot launch
// (ENOENT), so the harness could not build its own app there. Run the
// repository-local electron-vite JS entry with the current Node binary instead;
// process.execPath + a resolved .js path behaves identically on macOS, Linux,
// and Windows without a shell.
export function resolveElectronViteBuildCommand(repoRoot) {
const electronViteEntry = path.join(
repoRoot,
'node_modules',
'electron-vite',
'bin',
'electron-vite.js'
)
if (!existsSync(electronViteEntry)) {View on GitHub (pinned to 1136503c6a)
Solutions
- Pass --config-template <path> with a config.toml outside ~/.codex, e.g. --config-template /tmp/codex-lb.toml.
- Switch to a scenario that does not require a template: --scenario mixed or --scenario managed-only.
Example fix
// before node config/scripts/run-codex-real-account-validation.mjs --scenario codex-lb // after node config/scripts/run-codex-real-account-validation.mjs --scenario codex-lb --config-template /tmp/codex-lb.toml
Defensive patterns
Strategy: validation
Validate before calling
if (options.scenario === 'codex-lb' && !options.configTemplate) {
throw new Error('The codex-lb scenario requires --config-template outside primary ~/.codex')
} Type guard
function codexLbRequirementsMet(scenario, configTemplate) {
return scenario !== 'codex-lb' || (typeof configTemplate === 'string' && configTemplate.length > 0)
} Prevention
- Document scenario-specific requirements (like mandatory flags) in --help next to each scenario.
- Validate cross-flag dependencies in a dedicated post-parse block so all constraint errors surface together.
When it happens
Trigger: Passing --scenario codex-lb without --config-template. The check runs after scenario validation, so it only fires once codex-lb is confirmed valid.
Common situations: A developer selects the codex-lb scenario without reading that it mandates a template.
Related errors
- Invalid scenario: ${options.scenario}
- --higher-is-better requires a metric key
- Usage: node config/scripts/compare-benchmark-artifacts.mjs -
- Missing value for ${arg}
- Unknown argument: ${arg}
AI-assisted analysis of stablyai/orca@1136503c6a (2026-08-12).
Data as JSON: /api/errors/6a3040ec1373a3f2.
Report an issue: GitHub.