session/start
Creates a brand-new session, loads it on this host, durably records the start, and auto-subscribes this connection.
Parameters
Section titled “Parameters”Type: SessionStartParams
session/start params.
| Field | Type | Stability | Presence | Description |
|---|---|---|---|---|
approvalMode |
ApprovalMode | null |
optional | The session’s starting approval mode; server default when omitted or explicit null — both spellings select the default. Select, never create — the value names a mode the host’s configuration already defines. This is the only surface that declares a non-interactive run’s policy. |
|
commandId |
string |
required | The idempotency handle (UUIDv7). Required; the server never mints one. | |
config |
SessionConfig | optional | Reserved for per-session overrides owned by a future Configuration section. admits only its mcpServers member. |
|
modelId |
string |
optional | Initial model; server default when omitted. | |
permissionProfile |
string |
optional | The new session’s initial permission profile: a profile id the host catalog already admits — the rows permissionProfile/list serves without sessionId. Select, never create. Omitted means today’s behavior: the host’s configured default under native admission, unchanged. An id the catalog does not carry, or one it serves unavailable, refuses the start commandRejected (-32030; permission_profile_unknown / permission_profile_unavailable) before any durable byte, and an ephemeral host refuses any id (permission_profile_ephemeral_fixed). session/fork does not admit the member; session/resume admits it as the launch pick. Explicit null is invalid params: the set of members that tolerate null is closed and excludes this one, exactly as it excludes workspaceRoots. |
|
providerId |
string | null |
optional | Initial provider routing; server default when omitted or explicit null — both spellings select the default. |
|
sessionId |
string |
optional | Exact identity for this new root session. When omitted the server mints a UUIDv7. This field never selects an existing session: a retained or reserved id is rejected commandRejected with reason session_id_conflict. |
|
workspaceRoot |
string |
optional | Absolute path, folded into the first metadata record. | |
workspaceRoots |
string[] |
optional | The session’s initial runtime workspace-root set: ordered absolute canonical existing directory paths; the first root is the CWD and plays the primary-root role; every root receives the ADR 11237 :workspace_roots rules; extra roots grant no Project Trust. When workspaceRoot is also present the two must name the same folder, compared on canonical forms (the raw workspaceRoot is canonicalized first; ADR 37313 D9), or the request is invalid params, and so is explicit null. Omitted preserves single-root behavior. |
|
worktree |
WorktreeStartRequest | Experimental | optional | attach an existing one. Experimental (session/start.worktree; unopted callers are refused -32602). Absent means no worktree — the start proceeds exactly as today. |
Source
schema/msp/experimental/msp.schema.json#/methods/session~2Fstart
{ "description": "Creates a brand-new session, loads it on this host, durably records the start, and auto-subscribes this connection.", "params": { "$ref": "#/$defs/SessionStartParams" }, "result": { "$ref": "#/$defs/SessionStartResult" }}