Answer your agent from anywhere
Claude Code calls agents_control through its own hooks when it stops. The question and its reply buttons arrive in Telegram, and Claude Code waits while you answer. A question can also be answered by replying to its message, even with several tabs open.
Silence counts as a refusal: if nobody answers, the action does not happen. In present mode (the default) questions are mirrored but stay in the terminal. In away mode (/away) they wait for your tap.
Run and read your terminal
/tabs lists your tabs, /screen N shows one, /run N command runs a command and shows the result, /new opens a tab. Reply to a result and your text is typed into the same pane, so back-and-forth prompts like git add -p work over Telegram.
A tab stuck in less, vim or a REPL asks for confirmation first, instead of a blind send.
Send files to a session
Photos, videos, voice notes and documents sent to the bot are saved on your machine, and the agent receives the file's local path. Name the target with a caption like /run 3 why does this render wrong? or by replying to a session's message. With nothing to go on, the file is saved and the path comes back, never guessed.
A path and never a link, on purpose: Telegram's download URL contains the bot token.
Keep Claude Code moving
Limit reset. Notices a message like "resets 3pm" and types the continuation itself when the time comes. CLI menus. Turns Claude Code's own "1. … 2. …" choices into buttons. Rate-limit anchors. Moves the five-hour window to times that suit you, with a ping from a cheap model.
Safe by design
Everyone runs their own bot: there is no shared service. The daemon listens on 127.0.0.1 only and reaches Telegram with outgoing connections. Only chats on your allowed list get answers. The token lives in the Keychain or libsecret, never in a file.
Destructive commands such as rm -rf ~, mkfs or a fork bomb ask first: a button tap, or a passphrase you set.