Who may run a conversation turn (a text agent turn, addressed by a message in the conversation) in
conversationId, decided the same way as session access.
A NAMED principal is allowed without a read: its entity permissions and row filters already decided
whether it could load the message, and a named user is fully identified by its UserID. An ANONYMOUS
principal is not (see the module doc), so the conversation is read as the caller and
AuthorizeSessionAccess compares its scope id with the conversation's stamp — the same
decision #5997 applies to the realtime gates, so the text and voice paths agree on ownership.
An unreadable conversation refuses (not_owner, there is no owner to match).
Who may run a conversation turn (a text agent turn, addressed by a message in the conversation) in
conversationId, decided the same way as session access.A NAMED principal is allowed without a read: its entity permissions and row filters already decided whether it could load the message, and a named user is fully identified by its
UserID. An ANONYMOUS principal is not (see the module doc), so the conversation is read as the caller and AuthorizeSessionAccess compares its scope id with the conversation's stamp — the same decision #5997 applies to the realtime gates, so the text and voice paths agree on ownership. An unreadable conversation refuses (not_owner, there is no owner to match).