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
- 1Find the Nomos approvals bot
In Telegram, search for
@NomosApprovalsBot. Click Start — the bot replies with a one-time code.
The bot replies with a 6-digit code. Paste it into the dashboard. - 2Bind the code in Nomos
Dashboard → Settings → Notifications → Add Telegram channel → paste the code → Bind.

One channel per Telegram account. Multiple channels for multiple operators. - 3Enable 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:
🔐 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.

Self-hosted bot
If you don't want to route through @NomosApprovalsBot, run your own:
# 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.