{"record":{"id":"e422ea29f9258315","repo":"Yeachan-Heo/oh-my-codex","slug":"omx-update-dev-and-stable-are-mutually-exclusi","errorCode":null,"errorMessage":"omx update --dev and --stable are mutually exclusive.","messagePattern":"omx update --dev and --stable are mutually exclusive\\.","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"src/cli/index.ts","lineNumber":805,"sourceCode":"\n  for (const arg of args) {\n    if (arg === '--stable') {\n      sawStable = true;\n      channel = 'stable';\n      continue;\n    }\n    if (arg === '--dev') {\n      sawDev = true;\n      channel = 'dev';\n      continue;\n    }\n    throw new Error(\n      `Unknown omx update option: ${arg}. Expected no flags, --stable, or --dev.`,\n    );\n  }\n\n  if (sawStable && sawDev) {\n    throw new Error('omx update --dev and --stable are mutually exclusive.');\n  }\n\n  return channel;\n}\n\nexport function resolveNotifyTempContract(\n  args: string[],\n  env: NodeJS.ProcessEnv = process.env,\n): ParseNotifyTempContractResult {\n  return parseNotifyTempContractFromArgs(args, env);\n}\n\nexport function commandOwnsLocalHelp(command: CliCommand): boolean {\n  return NESTED_HELP_COMMANDS.has(command);\n}\n\nexport type CodexLaunchPolicy = \"inside-tmux\" | \"detached-tmux\" | \"direct\";\n","sourceCodeStart":787,"sourceCodeEnd":823,"githubUrl":"https://github.com/Yeachan-Heo/oh-my-codex/blob/3ad79a8a6fe6e95fdbb8c00e40716fffe4011ce2/src/cli/index.ts#L787-L823","documentation":"--stable and --dev select mutually exclusive release channels for `omx update`; specifying both is contradictory and rejected after parsing.","triggerScenarios":"`omx update --stable --dev` (in any order).","commonSituations":"Copy-paste accumulation of flags; scripts combining a default channel with a user override.","solutions":["Remove one of the two channel flags","Set the desired channel once via config and omit flags"],"exampleFix":"# before\nomx update --stable --dev\n# after\nomx update --stable","handlingStrategy":"validation","validationCode":"const has = (f: string) => args.includes(f);\nif (has('--stable') && has('--dev')) throw new Error('mutually exclusive');","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Pick one channel per invocation","Store channel in config instead of flags"],"tags":["cli","conflicting-flags","update","channel"],"backgroundTag":"conflicting-cli-flags","analyzedSha":"3ad79a8a6fe6e95fdbb8c00e40716fffe4011ce2","analyzedAt":"2026-08-27T22:18:39.783Z","schemaVersion":2},"datasetVersion":"2026-08-28T00:17:15.603Z"}