turn/start
Submits user input to a session; the optional disposition controls queue, steer, or replace when a turn is already running.
Parameters
Section titled “Parameters”Type: TurnStartParams
turn/start params.
turn/start.providerRequestOptions is deliberately absent: RULED to stay off the published schema. The
schema is the contract, and a free-form-object node kind is revisited only
if the experimental field graduates.
| Field | Type | Stability | Presence | Description |
|---|---|---|---|---|
commandId |
string |
required | The idempotency handle (UUIDv7). The fresh turn’s turnId derives from it. |
|
displayText |
string |
optional | Presentation form of the prompt for transcripts. Durable; carried on the resulting user-message view item. Never model-visible. | |
ifBusy |
IfBusy | optional | Disposition when a turn is already running; default queue. |
|
input |
TurnInputPart[] | required | Ordered content parts; required and non-empty. | |
reasoningEffort |
ReasoningEffort | optional | Reasoning tier sampled at submission for this turn. | |
sessionId |
string |
required | The target session. | |
tokenBudget |
integer |
Experimental | optional | This turn’s token budget in tokens: an integer floor of 1, riding to workflow-launch admission and inert when no workflow launches. Omitted means no budget; 0 or a non-integer is invalid params, as is explicit null. No wire upper bound beyond the integer type. Experimental: D6 rules names and shape only, v1 membership stays open, so the member ships off the stable bundle until a v1 ruling graduates it. |
userShell |
TurnUserShell | optional | A queued ! shell action riding this turn: the !cmd typed while a turn runs, executed at the next model-call boundary before any later steer. Exclusive with text and skill input; input may be empty only when this member is present. Capability-gated on userShell: a carrying turn on a connection without the grant fails -32010 capabilityRequired. Explicit null is invalid params (the null-tolerant set is closed). A v1 stable member. |
|
workspaceRoots |
string[] |
optional | A sticky REPLACEMENT of the session’s runtime workspace-root set, binding at this turn’s launch and persisting for subsequent turns until replaced again — unlike reasoningEffort, which is this-turn-only. Same shape and validation as session/start.workspaceRoots; invalid params on an explicit ifBusy: "steer" submit and so is explicit null; omitted means “unchanged”, never “reset”. |
Source
schema/msp/experimental/msp.schema.json#/methods/turn~2Fstart
{ "description": "Submits user input to a session; the optional disposition controls queue, steer, or replace when a turn is already running.", "params": { "$ref": "#/$defs/TurnStartParams" }, "result": { "$ref": "#/$defs/TurnStartResult" }}