Skip to content

On Telegram

When you leave the computer, cornercase can carry on in a Telegram chat. While you are away, every agent that needs you or finishes its turn sends you a message: its question with buttons to answer it, or what it wrote. You reply to that message, and your reply goes to that agent. From the same chat you can list your agents, look at their screens, stop one or start a new one.

It works on mobile data and needs nothing on the phone but Telegram. To see the whole window instead, use From your phone; to be messaged on Discord, On Discord, which can be on at the same time.

  • A Telegram account, on your phone.
  • A bot of your own. In Telegram, open a chat with @BotFather, send /newbot, pick a name and a username ending in bot, and copy the token it gives you (something like 123456789:AAH…). The bot is yours alone: cornercase talks to Telegram as that bot, and only to the chat you pair.

cornercase runs no server for this: your computer asks Telegram for new messages and sends the agents’ messages itself, over HTTPS. Nothing on your computer is reachable from the internet.

  1. In Settings › Remote, under Telegram, select bot, press Enter, paste the token and press Enter. cornercase checks it with Telegram and shows the bot’s name, such as @my_cornercase_bot.
  2. Select phone and press Enter. A dialog shows a QR code and the same link as text.
  3. Scan the code with your phone’s camera. It opens the bot in Telegram: tap Start.
  4. The dialog closes, Telegram connected shows, and the bot says hello in the chat.

The code works once and for ten minutes, and stops working as soon as you close the dialog. Once paired, the bot listens only to that chat.

When you leave, turn on away in any of these ways:

  • click Remote, at the right of Usage at the bottom of the sidebar, then continue on Telegram;
  • press o in the keys menu;
  • run cornercase away;
  • send /away to the bot, if you left without it.

The bot then sends the list of your agents, and Remote shows a green ●. It stays on until you turn it off, whatever you do in cornercase meanwhile: Remote › stop messaging on Telegram, o again in the keys menu, /back in the chat or cornercase away --off. The bot tells you either way.

  • An agent needs you (a permission prompt, a question): ! claude needs you · web-shop › dark-mode, the last lines of its screen, and a button for each option it shows (1 · Yes, 2 · Yes, and don't ask again…), plus esc and screen. A tap presses that key in its pane, as if you had typed it, and the option buttons go away. When the agent asks again right after (the next part of a question in several parts, another permission prompt), that next question comes as a new message with its own buttons.

  • An agent finishes its turn: ✓ claude finished · web-shop › dark-mode and the last thing it wrote, read from its own conversation (not its screen), with its bold, lists, code and links. A long message comes in several, at most four; the rest stays in cornercase. When a Claude Code turn ends with a command still running in the background (a dev server), it says ended its turn · a background shell still runs. An agent whose subagents still run is normally not finished: the message comes once, after the last of them ends (a subagent silent for 10 minutes stops counting, which can send it early and again at the real end).

  • An agent reports a failure through OSC 7501: ! claude failed · web-shop › dark-mode, with its last message or its screen when no message reader exists.

An OSC 7501 idle report cancels work without a finished message; done reports completion even if the tab is visible or no working state was observed.

A message is sent once per change, after the agent held it for a second, and only while you are away. This works with every recognised agent that reports OSC 7501, and otherwise with Claude Code, Codex, Gemini CLI, opencode, Grok Build, Cursor CLI and GitHub Copilot CLI (without reports, opencode never says that it waits for you, see Agents).

Reply to one of the bot’s messages (swipe it, or long-press and Reply) and what you write goes to that agent, with Enter. A 👍 on your message says the agent took it; otherwise the bot answers why not.

A message that replies to nothing goes to your only agent, or, with several, the bot asks Which agent is this for? with a button per agent.

The bot doesn’t type a message where it would do something else:

  • an agent waiting for an answer gets the buttons again: a reply would answer its question;
  • Claude Code’s feedback survey gets a dismiss the survey button, since a digit would rate the session;
  • an agent showing a panel or a dialog instead of its input box gets screen and esc.
Command What it does
/status Every agent, in the order of the agents section, with what it is doing, its model and context. Each one has buttons: ✎ to write to it (the bot asks for the message), screen for its last lines, esc to stop its turn. + new agent starts one.
/new Starts an agent: the bot asks for the project, then the workspace or + new worktree (and the branch’s name), then the agent if the default one is auto, then the prompt. The agent opens in a new tab, as with cornercase start, and the window stays where it was.
/away Turns away on from the phone.
/back Turns it off: the bot stops messaging you.

Telegram shows them in its menu (the / button). A button from before the server restarted is refused, since the ids it carries may name other panes now: send /status for fresh ones.

  • Another phone or account: pair it from the phone row; it replaces the previous chat.
  • Forget the phone: select phone and press Backspace. The bot stops listening to it.
  • Remove the bot: select bot and press Backspace. The token is deleted and cornercase stops talking to Telegram. Setting another bot forgets the paired chat.
  • Only the paired chat is heard, and only from the person who paired it; everything else is ignored. A group cannot be paired.
  • The token lives in secrets.json, and the bot’s name and the paired chat in telegram.json, both next to config.json and readable only by you (see Files).
  • server.log says when a message or a tap came in and what kind it was, never its text, nor the token.
  • What agents write goes through Telegram. Chats with bots are not end-to-end encrypted, so Telegram’s servers store the messages: questions, answers, the screens you ask for, file paths and code. Don’t use it for work you can’t send there.
  • The computer must be awake and the cornercase server running. Keep awake keeps it awake while an agent works.
  • Away is not saved: after a server restart it is off until you turn it on again.
  • One chat per computer. A bot can be read by one program at a time: give each computer its own bot, or the bot row says that another program reads its messages.
  • Pictures from the agents are not sent, and Telegram’s topics are not used: one chat holds every agent, and replies say which one.
  • A message longer than Telegram allows comes in several, and its title on its own when the two together would be too long.