{"record":{"id":"de5036e8067dfb1b","repo":"can1357/oh-my-pi","slug":"plan-yolo-into-requires-plan-yolo","errorCode":null,"errorMessage":"--plan-yolo-into requires --plan-yolo","messagePattern":"--plan-yolo-into requires --plan-yolo","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/coding-agent/src/main.ts","lineNumber":1268,"sourceCode":"\t\t// model at the first edit. If its hand-off target can't be resolved or has\n\t\t// no configured auth, warn and leave prewalk unarmed rather than aborting\n\t\t// startup and locking the user out of the app (issue #6064).\n\t\tif (resolved.error || !resolved.model) {\n\t\t\tconst target = parsed.prewalkInto ?? DEFAULT_PREWALK_TARGET;\n\t\t\tprocess.stderr.write(\n\t\t\t\t`${chalk.yellow(`Warning: prewalk disabled — ${resolved.error ?? `model \"${target}\" not found`}`)}\\n`,\n\t\t\t);\n\t\t} else if (!modelRegistry.hasConfiguredAuth(resolved.model)) {\n\t\t\tprocess.stderr.write(\n\t\t\t\t`${chalk.yellow(`Warning: prewalk disabled — no API key for ${resolved.model.provider}/${resolved.model.id}`)}\\n`,\n\t\t\t);\n\t\t} else {\n\t\t\toptions.prewalk = { target: resolved.model, thinkingLevel: resolved.thinkingLevel };\n\t\t}\n\t}\n\n\tif (parsed.planYoloInto !== undefined && !parsed.planYolo) {\n\t\tthrow new Error(\"--plan-yolo-into requires --plan-yolo\");\n\t}\n\tif (parsed.planYolo) {\n\t\tconst rolePattern = expandRoleAlias(parsed.planYoloInto ?? \"@smol\", activeSettings);\n\t\tconst resolved = resolveCliModel({ cliModel: rolePattern, modelRegistry, preferences: modelMatchPreferences });\n\t\tif (resolved.warning) {\n\t\t\tprocess.stderr.write(`${chalk.yellow(`Warning: ${resolved.warning}`)}\\n`);\n\t\t}\n\t\tif (resolved.error || !resolved.model) {\n\t\t\tthrow new Error(resolved.error ?? `Model \"${parsed.planYoloInto ?? \"@smol\"}\" not found`);\n\t\t}\n\t\tif (!modelRegistry.hasConfiguredAuth(resolved.model)) {\n\t\t\tthrow new Error(`No API key for ${resolved.model.provider}/${resolved.model.id}`);\n\t\t}\n\t\toptions.planYolo = { target: resolved.model, thinkingLevel: resolved.thinkingLevel };\n\t}\n\n\t// Thinking level\n\tif (parsed.thinking) {","sourceCodeStart":1250,"sourceCodeEnd":1286,"githubUrl":"https://github.com/can1357/oh-my-pi/blob/969062200754ea02cfac922e5ebb8c608c079e15/packages/coding-agent/src/main.ts#L1250-L1286","documentation":"`--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.","triggerScenarios":"Invoking `omp --plan-yolo-into @smol` without `--plan-yolo`.","commonSituations":"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.","solutions":["Add `--plan-yolo` before `--plan-yolo-into`.","If YOLO mode was not intended, drop `--plan-yolo-into` entirely.","Note the default target is `@smol` when `--plan-yolo` is given without `--plan-yolo-into`."],"exampleFix":"// before\nomp --plan-yolo-into @smol\n\n// after\nomp --plan-yolo --plan-yolo-into @smol","handlingStrategy":"validation","validationCode":"const argv = process.argv;\nif (argv.includes(\"--plan-yolo-into\") && !argv.includes(\"--plan-yolo\")) {\n  throw new Error(\"--plan-yolo-into requires --plan-yolo\");\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Always pair qualifier flags with their base flag in scripts.","Remember `--plan-yolo` alone defaults the target to `@smol`."],"tags":["cli","argument-validation","plan-yolo"],"backgroundTag":"missing-required-flag-dependency","analyzedSha":"969062200754ea02cfac922e5ebb8c608c079e15","analyzedAt":"2026-08-31T10:29:35.737Z","schemaVersion":2},"datasetVersion":"2026-08-31T14:17:45.589Z"}