can1357/oh-my-pi · error

--plan-yolo-into requires --plan-yolo

Error message

--plan-yolo-into requires --plan-yolo

What it means

`--plan-yolo-into <role-pattern>` selects which model the plan-YOLO mode targets, so it is meaningless without `--plan-yolo` itself. main.ts throws this during argument parsing when the 'into' qualifier appears alone. It is a plain dependency check between two CLI flags.

Source

Thrown at packages/coding-agent/src/main.ts:1268

		// model at the first edit. If its hand-off target can't be resolved or has
		// no configured auth, warn and leave prewalk unarmed rather than aborting
		// startup and locking the user out of the app (issue #6064).
		if (resolved.error || !resolved.model) {
			const target = parsed.prewalkInto ?? DEFAULT_PREWALK_TARGET;
			process.stderr.write(
				`${chalk.yellow(`Warning: prewalk disabled — ${resolved.error ?? `model "${target}" not found`}`)}\n`,
			);
		} else if (!modelRegistry.hasConfiguredAuth(resolved.model)) {
			process.stderr.write(
				`${chalk.yellow(`Warning: prewalk disabled — no API key for ${resolved.model.provider}/${resolved.model.id}`)}\n`,
			);
		} else {
			options.prewalk = { target: resolved.model, thinkingLevel: resolved.thinkingLevel };
		}
	}

	if (parsed.planYoloInto !== undefined && !parsed.planYolo) {
		throw new Error("--plan-yolo-into requires --plan-yolo");
	}
	if (parsed.planYolo) {
		const rolePattern = expandRoleAlias(parsed.planYoloInto ?? "@smol", activeSettings);
		const resolved = resolveCliModel({ cliModel: rolePattern, modelRegistry, preferences: modelMatchPreferences });
		if (resolved.warning) {
			process.stderr.write(`${chalk.yellow(`Warning: ${resolved.warning}`)}\n`);
		}
		if (resolved.error || !resolved.model) {
			throw new Error(resolved.error ?? `Model "${parsed.planYoloInto ?? "@smol"}" not found`);
		}
		if (!modelRegistry.hasConfiguredAuth(resolved.model)) {
			throw new Error(`No API key for ${resolved.model.provider}/${resolved.model.id}`);
		}
		options.planYolo = { target: resolved.model, thinkingLevel: resolved.thinkingLevel };
	}

	// Thinking level
	if (parsed.thinking) {

View on GitHub (pinned to 9690622007)

Solutions

  1. Add `--plan-yolo` before `--plan-yolo-into`.
  2. If YOLO mode was not intended, drop `--plan-yolo-into` entirely.
  3. Note the default target is `@smol` when `--plan-yolo` is given without `--plan-yolo-into`.

Example fix

// before
omp --plan-yolo-into @smol

// after
omp --plan-yolo --plan-yolo-into @smol
Defensive patterns

Strategy: validation

Validate before calling

const argv = process.argv;
if (argv.includes("--plan-yolo-into") && !argv.includes("--plan-yolo")) {
  throw new Error("--plan-yolo-into requires --plan-yolo");
}

Prevention

When it happens

Trigger: Invoking `omp --plan-yolo-into @smol` without `--plan-yolo`.

Common situations: Typo where the user forgot the base flag; copying a snippet that set the target model but dropped `--plan-yolo`; stale alias referencing an older flag combination.

Related errors


AI-assisted analysis of can1357/oh-my-pi@9690622007 (2026-08-31). Data as JSON: /api/errors/de5036e8067dfb1b. Report an issue: GitHub.