diff --git a/cli/src/codex/runCodex.ts b/cli/src/codex/runCodex.ts index 4810a9d0..16768d55 100644 --- a/cli/src/codex/runCodex.ts +++ b/cli/src/codex/runCodex.ts @@ -19,6 +19,7 @@ export async function runCodex(opts: { codexArgs?: string[]; permissionMode?: PermissionMode; resumeSessionId?: string; + model?: string; }): Promise { const workingDirectory = process.cwd(); const startedBy = opts.startedBy ?? 'terminal'; @@ -48,6 +49,7 @@ export async function runCodex(opts: { const sessionWrapperRef: { current: CodexSession | null } = { current: null }; let currentPermissionMode: PermissionMode = opts.permissionMode ?? 'default'; + const currentModel = opts.model; const lifecycle = createRunnerLifecycle({ session, @@ -72,7 +74,8 @@ export async function runCodex(opts: { logger.debug(`[Codex] User message received with permission mode: ${currentPermissionMode}`); const enhancedMode: EnhancedMode = { - permissionMode: messagePermissionMode ?? 'default' + permissionMode: messagePermissionMode ?? 'default', + model: currentModel }; const formattedText = formatMessageWithAttachments(message.content.text, message.content.attachments); messageQueue.push(formattedText, enhancedMode); diff --git a/cli/src/commands/claude.ts b/cli/src/commands/claude.ts index 53b16042..63b9b886 100644 --- a/cli/src/commands/claude.ts +++ b/cli/src/commands/claude.ts @@ -41,6 +41,13 @@ export const claudeCommand: CommandDefinition = { } else if (arg === '--dangerously-skip-permissions') { options.permissionMode = 'bypassPermissions' unknownArgs.push(arg) + } else if (arg === '--model') { + const model = args[++i] + if (!model) { + throw new Error('Missing --model value') + } + options.model = model + unknownArgs.push('--model', model) } else if (arg === '--started-by') { options.startedBy = args[++i] as 'runner' | 'terminal' } else { diff --git a/cli/src/commands/codex.ts b/cli/src/commands/codex.ts index d7147745..15ec84f9 100644 --- a/cli/src/commands/codex.ts +++ b/cli/src/commands/codex.ts @@ -17,6 +17,7 @@ export const codexCommand: CommandDefinition = { codexArgs?: string[] permissionMode?: CodexPermissionMode resumeSessionId?: string + model?: string } = {} const unknownArgs: string[] = [] @@ -36,6 +37,13 @@ export const codexCommand: CommandDefinition = { } else if (arg === '--yolo' || arg === '--dangerously-bypass-approvals-and-sandbox') { options.permissionMode = 'yolo' unknownArgs.push(arg) + } else if (arg === '--model') { + const model = commandArgs[++i] + if (!model) { + throw new Error('Missing --model value') + } + options.model = model + unknownArgs.push('--model', model) } else { unknownArgs.push(arg) } diff --git a/cli/src/commands/gemini.ts b/cli/src/commands/gemini.ts index 54e0eaf9..964bdb7e 100644 --- a/cli/src/commands/gemini.ts +++ b/cli/src/commands/gemini.ts @@ -14,6 +14,7 @@ export const geminiCommand: CommandDefinition = { startedBy?: 'runner' | 'terminal' startingMode?: 'local' | 'remote' permissionMode?: GeminiPermissionMode + model?: string } = {} for (let i = 0; i < commandArgs.length; i++) { @@ -29,6 +30,12 @@ export const geminiCommand: CommandDefinition = { } } else if (arg === '--yolo') { options.permissionMode = 'yolo' + } else if (arg === '--model') { + const model = commandArgs[++i] + if (!model) { + throw new Error('Missing --model value') + } + options.model = model } }