Note
Grok responding on behalf of Julius.
Triage: confirmed on current main.
Root cause
schedule_taskalways copies the calling thread's selection, or the project default when there is no calling thread:apps/server/src/mcp/OrchestratorMcpService.ts:1528-1529.update_scheduled_taskalways writes backexisting.modelSelection(and the stored runtime/interaction modes):OrchestratorMcpService.ts:1623-1625.- Neither
OrchestratorMcpScheduleTaskInput(packages/contracts/src/orchestratorMcp.ts:520-542) norOrchestratorMcpUpdateScheduledTaskInput(:587-594) has a model or target field. They are plainSchema.Structs, so an extramodelSelectionkey is dropped and the call still succeeds. OrchestratorMcpScheduledTask(:546-564) has no model, options or modes, so neither the result norlist_scheduled_tasksshows what a task will run with.- The runner already uses the full stored selection (
apps/server/src/scheduledTasks/ScheduledTaskService.ts:802,825). Only the MCP surface is missing it.
Proposed fix
- Add an optional
target: OrchestratorMcpTarget(orchestratorMcp.ts:100-128) to both inputs. Resolve it with the same resolver the work-starting tools use (OrchestratorMcpService.ts~1131-1213), which already validates against capabilities and inherits options only when provider and model are unchanged. Iftargetis omitted, keep today's behaviour. - Add
providerInstanceId,model,options(andruntimeMode/interactionMode) toOrchestratorMcpScheduledTask. - Optional: reject unknown keys on these inputs, and change the
schedule_taskdescription to say the settings are a one-time copy.
Workaround Until this ships, check or change the model and effort for the task from a scheduled-task editor in the app instead of over MCP. Controls for this in the web editor are in #16592, which is still open.
Related: #15821 (open feature request for thread-bound tasks to follow the thread's current model). It overlaps but is a separate request.