Skip to main content
Trinity
Guides/Access Control

Cross-Channel Access Control

Unified access control across all channels (web, Telegram, Slack). Verified email is the identity — approving a user once admits them everywhere.

Agent Sharing tab showing Identity Proof (require verified email, open access) and Team Sharing allow-list controls

Concepts

TermDescription
Verified emailEmail proven via verification code (Telegram /login) or OAuth (Slack workspace)
Access policyPer-agent settings: require_email, open_access, group_auth_mode
Access requestPending approval when a verified user contacts a restricted agent

Enable Email Verification

1

Go to Agent Detail → Sharing tab.

2

Enable Require verified email.

3

Users must now verify their email before chatting.

Channel-Specific Verification

ChannelHow Email is Verified
TelegramUser sends /login your@email.com, receives 6-digit code, replies /login 123456
SlackAutomatic — workspace OAuth provides the email
WhatsAppUser sends /login your@email.com, receives a code, replies to verify
Web (public links)Email verification during public chat session

Access Modes

Restrictive (default)

Only owner, admins, and explicitly shared users can chat. Others see "Your access request is pending approval."

Open access

Any user with a verified email can chat immediately. Enable via the Open access toggle.

Approving Access Requests

When someone requests access:

1

Their request appears in the Sharing tab under "Pending access requests."

2

Click Approve to grant access (adds them to the share list).

3

Click Deny to reject.

Approving auto-adds the email to your shared users list.

The requester is notified automatically.When you approve a request that came in over Telegram, Slack, or WhatsApp, Trinity sends the requester a message on that same channel confirming they now have access — closing the loop on the "I'll let you know once the owner responds" reply they got when they first messaged. Web users see the change through the dashboard. Denials are silent (the agent's existence is not confirmed to the requester). A delivery failure (e.g. the user blocked the bot) never blocks or rolls back the approval; the outcome is recorded in the audit log.

Group Chat Authentication

For Telegram groups, you can require at least one verified member before the bot responds:

1

Set Group auth mode to any_verified via API.

2

When someone @mentions the bot in an unverified group, the bot prompts for verification.

3

Once one member verifies via /login, the group is unlocked for everyone.

Telegram Commands

CommandDescription
/login email@example.comStart email verification
/login 123456Complete verification with code
/logoutRemove verified email
/whoamiCheck current verification status

Access Policy API

EndpointMethodDescription
/api/agents/{name}/access-policyGETGet current policy
/api/agents/{name}/access-policyPUTUpdate policy
/api/agents/{name}/access-requestsGETList pending requests
/api/agents/{name}/access-requests/{id}/decidePOSTApprove or deny

Policy body

{
  "require_email": true,
  "open_access": false,
  "group_auth_mode": "none"
}

Decision body

{"approve": true}

Limitations

Group chats with group_auth_mode: "none" bypass email verification entirely.
Slack requires users:read.email scope for email resolution.
Pending login state is in-memory — lost on backend restart (user re-sends /login).