The session control RPC family: session listing and filtering, message send and stream, run lifecycle, and session maintenance.

Session rows include snapshotAt, the Gateway's sampling time in milliseconds since the Unix epoch. Cached rows retain their original sampling time. Clients use it to order read snapshots, including runtime-only changes that do not advance persisted updatedAt; request order breaks equal-time ties. Read observations without sampling metadata retain request-order reconciliation. This read timestamp does not replace event ordering or session-identity checks.

Once session stores are admitted, authorization for direct session targets prepares only the requested rows. A dirty target must pass canonical validation before authorization; unrelated rows continue validating in the background. Method scopes, profile bindings, and startup availability are checked again after preparation. sessions.list authorizes the caller's scope first and leaves row validity and visibility filtering to the session reader.

sessions.describe and sessions.get are connection-bound observations. Disconnecting cancels further row-preparation retries, including preparation during authorization, after in-flight preparation settles. Reconnect and issue a new read to obtain a current result. Accepted session mutations retain their existing completion lifetime.

Changing a session's model or native runtime consent can wait for runtime preparation. During that wait, other sessions can still be created or updated. Changes to the same session remain ordered, and a prepared change is rejected if its captured session state changed before commit.

Model-catalog reads in sessions.create, sessions.patch, sessions.patchMany, and Gateway copies through sessions.catalog.continue share a 20-second budget per request. A stalled catalog or canceled caller returns retryable UNAVAILABLE before the affected session change commits. sessions.patchMany retains ordered per-target outcomes; independent successful targets remain committed.

Session list orders update incrementally as committed session metadata changes. Each request still applies current visibility, activity, and time filters before pagination. Archived sessions retain their list position when their display rows are released from memory.

Session control