ReferenceMessenger

Messenger permissions and states

Understand room participation, request and membership states, message actions, archive and block behavior, limits, and durable side effects.

Messenger is signed-in but organization-less. An organization role shown elsewhere in Infra One does not grant blanket access to its conversations. Room access is checked when a room is loaded: membership is required for ordinary rooms, with the linked-fund policy as the documented exception. Send, reaction, edit, delete, forward, add, remove, and leave actions re-check selected-room access immediately before mutation. Archive and unarchive plus block and unblock use their own caller-specific controls. In the normal UI, Report is offered only for another participant’s nondeleted direct message; these actions are outside the selected-room recheck list.

Room access

Room typeAccess ruleMembership behavior
DirectThe two participants can open the room.A new person-to-person pair starts in a pending state when its first message is sent.
Personal OriThe signed-in user and Ori can open the room.Messenger creates or reuses this accepted pair on mount.
GroupCurrent room members can open it.Initial members are added at creation; later additions and removals follow group rules.
SupportCurrent room members can open it.The requester and Ori are initial members; Ori is protected from removal.
FundRoom membership or the linked fund’s resource access can authorize the room.Fund-specific access still applies.
Website chatThe visitor and seeded participants can open it.Organization standing alone is insufficient, and the roster is read-only in Messenger.

Users who lack both the required room participation and any applicable linked-fund access are returned to the inbox. Website-chat rooms are created by the website-chat flow, which can also store an initial Ori greeting and notify configured participants; Messenger’s New chat menu does not create them.

Direct request states

State and roleSend behaviorVisible state
Pending requesterCan continue sending unless either participant blocks the other.Your message request will be reviewed by NAME.
Pending receiverCan read, but a send is refused and direct-room reactions are read-only even though the composer is visible.NAME would like to message you.
AcceptedBoth participants can send unless a block applies.No pending banner.
RejectedThe pair is excluded from All, but the web client can expose a rejected banner in inconsistent deep-link/composer states.NAME declined your message request. No supported web recovery procedure is documented.

The current web client supplies these banners without action controls. Treat them as state information rather than evidence that the visible composer can change the state.

Group and support membership

ActionWho can perform itConstraint
Add a personAny current group or support participantThe account must be eligible and not already present.
Add an AI agentAny current ordinary-group participantThe agent must appear under Available AI agents or be eligible for first-mention addition. Support rooms do not expose this path.
Remove another memberThe room creatorDirect rooms are immutable; Ori is protected in support rooms.
LeaveThe current member of an ordinary group or support roomThe final member cannot leave. Other group-shaped room types may refuse the action.

The creator can remove another ordinary member. The last member cannot leave or be removed. When the creator leaves, ownership transfers to the earliest-joined remaining member, with membership ID used to break an equal-time tie.

Archive and block states

Archive is a per-user timestamp on room membership. It does not delete the room, transcript, or membership, and it does not archive the room for anyone else. All excludes that user’s archived rooms; Archived includes them unless the current user also blocked that direct contact. A self-blocked direct appears under Blocked until it is unblocked, while its archive timestamp remains. Incoming messages do not clear the timestamp, so restoration is manual. Archived views keep reactions read-only, while archive itself is not a general send prohibition.

A block is stored from blocker to target, but direct-send prevention is symmetric: either participant’s block stops direct sends. Blocked lists only contacts the current user blocked; it does not reveal people who blocked the current user. Blocking does not remove a shared group membership or group history, and bots cannot be blocked.

Message actions

ActionAvailabilityDurable effect
ReplyAny persistent, nondeleted messagePrepares reply context; sending then creates a new message.
Reaction emojiPersistent, nondeleted message while the room is writableAdds or removes the current user’s reaction row after selected-room access is rechecked. Archived membership, either direct block, pending receiver state, or a hidden or deleted target makes the action read-only or refused.
Copy textNonempty, nondeleted textCopies locally and creates no server write.
EditOwn, nonbot, nondeleted messageStrictly less than 15 minutes after creation; atomically stores new content and edit history. The menu can remain visible after expiry.
ForwardNondeleted source message in a group or fund roomCreates one new message per successful destination, up to 20. Partial success does not roll back.
ReportAnother participant’s nondeleted direct messageCreates a pending content-report record. It does not delete or block the message.
Delete for meAny persistent, nondeleted messageAdds the viewer to the hidden-for list; other participants continue to see it.
Delete for everyoneOwn, nonbot, nondeleted messageSoft-deletes it for every participant with no undo or time limit. Replies are updated accordingly.

The report modal shows Spam, Harassment or abuse, Off-topic, and Other. At the frozen product revision, Off-topic is not accepted by the report allowlist and returns an error.

Limits

The local picker accepts five local files, each no larger than 10 MiB: .pdf, .doc, .docx, .odt, .jpg, .jpeg, .png, .webp, and .heic. These are local-picker limits, not a promise about separately enabled cloud imports.

InputLimit
Message text50,000 characters
Local attachmentsFive local files per message, 10 MiB per file
Edit windowStrictly less than 15 minutes
New-chat and group-creation searchAt most 20 active, non-suspended accounts with complete first and last names; the signed-in user is excluded, but bots are not categorically excluded
Existing-group member searchAt most 20 eligible nonbot accounts; AI agents are listed separately
Forward destinations20 distinct destination rooms offered by the picker; the source room is excluded and access is rechecked per destination
Report note1,000 characters in the web form
Sidebar filterThe first 200 characters are retained

Attachment persistence

The Messenger web transcript does not expose the message’s internal upload status. After sending local files, wait for every intended attachment chip to appear, then reload the room and verify that all of them remain visible with the stored message. A push notification or the absence of an inline error is not proof that every selected file was stored.

Mutation and side-effect boundaries

TriggerStored stateLater or transient effects
First Messenger mountPersonal Ori room, accepted direct-pair record, and memberships if absentNo message or push is created.
Select a new direct accountNothing; this is a draftNavigation only.
Open an existing roomCurrent user’s stored last-message-seen timestamp; a first resource-authorized fund open can also create that user’s room-membership rowThe selected transcript renders and the displayed unread count clears. This state is not another participant’s read receipt.
Receive a message while its room is openCurrent user’s stored last-message-seen timestamp advancesThe transcript updates in real time and the displayed unread count clears.
First direct sendRoom, memberships, message, room activity, and sender read state. A person-to-person pair starts pending; a bot-backed pair starts accepted.Participant notification can be queued.
Create groupRoom, creator record, and membershipsIn-app room lists update; no creation-only push.
New support requestFresh support room, support marker, creator record, requester membership, and Ori membershipRoom lists update; AI starts only after a message.
SendMessage, room activity, sender read state, and any eligible first-mentioned AI-agent membership in an ordinary group, organization chat, or fund roomPush, upload completion, and AI work can happen afterward. Support rooms do not use first-mention agent addition.
Add, remove, or leaveMembership rows; leaving creator can transfer ownershipIn-app membership and room-list updates.
Archive or unarchiveCurrent user’s archive timestampOther participants are unchanged.
Block or unblockCurrent user’s directional block rowDirect sends are refused while either directional block exists.
Add or remove a reactionCurrent user’s reaction row on the messageSelected-room access is rechecked; read-only states refuse the write.
Edit, forward, report, or deleteEdit history, destination messages, report record, or deletion stateUI updates and notifications do not replace the durable record.