# An open source Telegram agent's approval waits on the Review page

> In Telegram, a button answers the agent’s question. Approving one of its actions is a different decision, made by a different person, on Kortix’s Review page. Kortix is the open-source CompanyOS: your agents, their skills, your company memory, and every connector in one git repo you own, with the agents working on real cloud computers.

URL: https://agentsfortelegram.com/approvals-in-telegram

## The approval card and who may press it

`Guide → Channels → approvals`

```
When an agent asks for a decision, the card shows the title, a summary, a risk note and buttons, such as Approve and Deny.
Every card also has View in Kortix.
When an agent wants to use a connected tool that needs approval, the card shows what it will do.
A project manager, or the person who started the session, selects Approve or Deny.
```

Source: https://kortix.com/docs/guide#channels

The Guide's approval card, with its title, summary, risk note and View in Kortix link, as it appears in a Slack or Teams thread.

## A button answers a question

The agent is told to ask with its question tool, so a choice arrives as buttons rather than a typed list. One question shows one button per option. Several questions arrive in one message, one at a time, numbered "Question 1 of 3", and the agent gets every answer together after the last tap. The [v0.14.16 release](https://github.com/kortix-ai/CompanyOS/releases/tag/v0.14.16) on 2026-11-03 records the feature as "Answer agent questions with Telegram buttons, including several questions at once".

That tap settles a preference: which branch, which format, which of three drafts. It changes nothing in a customer’s inbox or a company’s books, and the answer goes back to the agent as text in its session. A question also reaches a Telegram chat as buttons only where the agent may already send a message there without approval. Everywhere else it asks in its own words, and that message waits for a decision or is turned down.

A button belongs to one session. Answer twice and the second tap changes nothing. If the session was deleted, or the chat moved on with /new, the button answers nothing and starts no session.

## An approval releases one call

An approval is a different object. It covers one connector action, such as sending an email, writing a row or closing a ticket, and it decides whether that call reaches the app. The card shows the title, a summary, a risk note and buttons such as Approve and Deny, and says what the action will do. The Review page then shows what the app will receive, with private values hidden, and takes a note to the agent.

The rule behind the card is a per-action setting: Allow runs the action at once, Ask holds it until a person approves, and Block never runs it. Approval gates you set. Off until you set them.

The scope is narrow by design. Approve runs the action once, as the agent that asked, and the agent resumes with the result. A changed detail needs a new approval. Kortix checks the project’s rules again when it runs the action, so a Block rule still wins over an approval already given.

Who decides is narrow too: a project manager, or the person who started the session. There is no approve-everything switch for a session, so an action that has to run unattended needs an Allow rule chosen in advance. Silence has a deadline. The agent waits until a person approves or rejects the action, and a held action expires when nobody decides within 24 hours, unless the project sets another time. An expired request is not a quiet yes: nothing runs, and the agent is left without the result.

## Where each one is answered

In Telegram, the question is answered in the chat and the approval is answered somewhere else. A held action waits on Kortix's Review page, under Review → Needs you, and the session shows Needs you in your lists. The Guide lists three ways to reach it: that page, the approval link, or the approval card in a Slack or Teams thread. Telegram is not one of them. There is no account link to tie a Telegram id to a project member, so a tap in the chat cannot stand for the person a project knows. The allowed-user list decides who may talk to the bot, and only an allowed user's tap counts. That list is set when the bot is connected, under Project admin → Connectors and the Channels scope, beside the bot token. A message from anyone else gets a reply with their own user id, and in a private chat that person also lands under Allowed users → Wants access, where a project manager can let them in with one click. In a group the bot reads only commands, replies to it and mentions.

Two checks, doing different jobs. The allowed-user list says the message came from someone this bot expects. The approval says a named person allowed this exact call, and the record of it stays with the project.

## Why a chat cannot settle permission

A preference is cheap to get wrong. A branch name can be changed again, a draft rewritten, a format replayed. Any allowed person in the chat can answer a question, which suits a choice about a draft. An approval names one decider, because the project needs to know who let the call through. A sent email cannot be recalled, and a closed ticket has already told the customer. That is why the smaller decision can live in a chat and the larger one cannot, and why the larger one carries a name, a scope and a timestamp.

Every action is recorded. Reading, exporting and streaming the audit log depend on the plan.

## What an approval still does not do

One approval buys one tool call. It does not put anything on `main`. Session work reaches `main` through a change request. Merge is default-deny for agents. A person reads the diff on the Review page and merges it.

Where the bot's token and the connector logins live is the [other half of the setup](/telegram-agent-with-company-tools). Which channel can prove what about the person typing is the [Telegram and Slack comparison](/telegram-vs-slack-for-ai-agents).

## Two questions about a bot in a company chat

### Is Telegram AI bot safe?

Yes, when only allowed accounts reach it and risky actions wait for a person. Kortix keeps the bot token on the server, restricts the bot to an allowed-user list, and puts each connector approval on the Review page for a project manager or the session starter.

### Does Telegram have an AI agent?

Not built in. Telegram carries bots, and Kortix connects its agent to one: message @BotFather, paste the token into the Channels connector, and the agent answers in the chat. An approval it requests is decided on Kortix's Review page, not in the chat.

## Decide in the chat what a chat can decide.

A question is answerable there. A connector approval goes to the person the project names, on the page that records it.

[Try Kortix](https://kortix.com) · [Read the docs](https://kortix.com/docs/guide)
