Reports the LOCAL launch requirements observed for one provider profile under one transport and isolation, with the checks this read cannot make left explicitly unknown; it starts nothing, mints nothing and authorizes nothing.
const url = 'https://example.com/v1/m/sessions/provider-profiles/example/launch-readiness?transport=stream-json&isolation=native';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://example.com/v1/m/sessions/provider-profiles/example/launch-readiness?transport=stream-json&isolation=native' \ --header 'Authorization: Bearer <token>'Reports the LOCAL launch requirements observed for one provider profile under one transport and isolation, with the checks this read cannot make left explicitly unknown; it starts nothing, mints nothing and authorizes nothing.
Authorizations
Section titled “ Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “ Path Parameters ”Path parameter ref.
Header Parameters
Section titled “ Header Parameters ”Target tenant id; required when the principal can act in more than one tenant.
Query Parameters
Section titled “ Query Parameters ”Transport the requirements are evaluated for; defaults to stream-json. A known value the selected driver does not offer is answered 200 with an unsupported check, not 400.
Containment posture the requirements are evaluated for; defaults to native. container and sandbox are accepted values that the native runner reports as unsupported.
Responses
Section titled “ Responses ”The launch requirements observed for this profile and selection. It is a dated observation, never an authorization and never proof that the provider is authenticated: configuration_state describes LOCAL configuration only, while provider_authentication and launch_authorization are always unknown here and remaining_checks names what the POST still decides.
object
Every requirement dimension, always complete and always in the same order.
object
The requirement dimension. Every dimension is always reported, so a dominant known cause never hides an unknown one.
Closed cause identifier. It carries no path, argument, environment value, credential or raw error: the console renders localized copy and a static documentation link from it.
Closed identifier of the operator action that would change this verdict; absent when there is nothing to do.
Ready means this LOCAL requirement was checked and met — not that anything is authenticated or authorized. not_configured is a known absence or incompatibility; unsupported is a combination this runtime does not run; unknown is an observation that could not be made and is never rewritten as an absence; not_applicable means the requirement does not belong to this combination and never substitutes for unknown.
Aggregate of the LOCAL configuration checks only, by explicit precedence: a known unsupported combination, then a known missing configuration, then uncertainty, and ready only when every applicable requirement is ready. not_applicable is neutral in that aggregation and is therefore not one of its values. provider_authentication and launch_authorization never contribute to it.
The profile’s driver key. The set is open: a driver becomes operable by being registered with the runtime, never by appearing in a list.
The execution environment that administers this profile.
The execution environment that answered. Absent when this node has no persistent environment identity, which keeps profiled launches deny-closed.
object
The permission creating the run requires. Holding it is not checked by this read and this read never grants it.
Always unknown: authorization is decided on the POST, with the budget, kill-switch, approval and claim gates that this read is forbidden to consult because consulting them has effects.
object
Always unknown: this read never contacts a provider, never reads a login file and never reuses another run’s observed authentication state. A valid home is not an authenticated account.
What this read deliberately did NOT decide, because deciding it needs the effects the launch is allowed to have.
object
object
Shape of one operator input: a raw NDJSON line for the Claude stream-json child, a turn of text for a driver that owns an RPC protocol, unavailable when the transport bridges no input.
Whether Olivares bridges the child’s I/O in both directions or manages its lifecycle only. lifecycle_only means the provider relays the conversation: there is no bridged turn console to render.
The wire contract of the child this selection would own. unknown is a real answer: a registered driver that publishes no transport metadata is never assumed to speak another provider’s protocol.
Example
{ "checks": [ { "check": "profile", "code": "profile_active", "remediation": "review_profile", "state": "ready" } ], "configuration_state": "ready", "launch_authorization": { "code": "evaluated_on_submit", "required_permission": "sessions:run:write", "state": "unknown" }, "profile_state": "active", "provider_authentication": { "code": "not_observed_for_this_launch", "state": "unknown" }, "remaining_checks": [ "workspace_and_template_validation" ], "selection": { "isolation": "native", "transport": "stream-json" }, "transport_capabilities": { "input": "line", "io": "bidirectional", "protocol": "claude_stream_json" }}Malformed profile reference, unknown or repeated query parameter, or an invalid transport/isolation value
object
Example generated
{}Unauthenticated
object
Example generated
{}The caller lacks sessions:profile:read; no filesystem or configuration was inspected
object
Example generated
{}No such profile in this tenant (a profile of another tenant is indistinguishable from an absent one)
object
Example generated
{}The profile changed during the inspection, so the observation straddled two states; it was discarded and must be read again. The body carries the ratified stable identifier profile_changed, so a client detects this conflict by code and never by matching the message text.
object
object
Stable conflict identifier; detect the conflict by this value, never by the message text.
Human-readable explanation. It is localizable and may change; it is not an identifier.
Example
{ "error": { "code": "profile_changed" }}Rate limited
object
Example generated
{}The profile store is unavailable, so no requirements were inspected and no document certifies any
object
Example generated
{}