Connect agents

Telegram approvals

Step-up approvals delivered to a Telegram chat. Tap to approve from your phone, anywhere.

If you're not always at your laptop, push notifications + email can be slow. Telegram delivery is instant, works behind firewalls, and gives you a one-tap approve button right in chat.

Before you start

  • A Telegram account.
  • An organization on Nomos.
  • Owner or admin role (settings:notifications permission).

Setup

  1. 1
    Find the Nomos approvals bot

    In Telegram, search for @NomosApprovalsBot. Click Start — the bot replies with a one-time code.

    Telegram chat with NomosApprovalsBot showing a /start command and one-time code
    The bot replies with a 6-digit code. Paste it into the dashboard.
  2. 2
    Bind the code in Nomos

    Dashboard → Settings → NotificationsAdd Telegram channel → paste the code → Bind.

    Dashboard notifications page with Telegram bind dialog
    One channel per Telegram account. Multiple channels for multiple operators.
  3. 3
    Enable for the events you care about

    Tick Step-up approvals and Standing grant created. Save.

What an approval looks like

When an agent hits a step-up gate, the bot DMs you:

shell
🔐 approval needed
agent: prod-codegen
action: /github/pr/create
resource: acme/app
purpose: open a PR that bumps the README copyright

[ Approve ]   [ Deny ]

Tap Approve. Telegram opens a /approve/<envelopeId> URL in your browser, which prompts you to sign with your passkey. The cosigner UCAN is minted. The agent retries and proceeds.

Telegram message with Approve / Deny buttons for a Nomos step-up
Tap-to-approve. The actual passkey signature happens in the browser that opens.

Self-hosted bot

If you don't want to route through @NomosApprovalsBot, run your own:

bash
# Set in the control plane env:
TELEGRAM_BOT_TOKEN=123:ABC…           # from @BotFather
TELEGRAM_WEBHOOK_URL=https://your.host/v1/telegram/webhook

Then in Notifications, the binding flow targets your bot instead.

Approve = sign.

Tapping Approve in Telegram doesn't itself authorize the action. It opens the passkey assertion page. Without the passkey signature, nothing happens. This means Telegram is safe even if your phone session is hijacked.

Common failures

  • Bot doesn't respond to /start+
    Telegram rate-limited the bot from your number. Wait 60 seconds, try again.
  • I bound, but no notifications arrive+
    Check Settings → Notifications → Telegram channels. The channel status should be 'active'. If it shows 'pending', re-run /start with the bot to refresh the binding.
  • I want a group chat, not a DM+
    Add @NomosApprovalsBot to a Telegram group, make it admin, then run /bind <one-time-code> in that group. Every group member can tap approve, but the passkey signature is still yours.