Approve from your phone
shotoku telegram sends every new pending decision to your Telegram with Approve and Deny buttons. A tap does exactly what shotoku approve does.
After a tap, the message becomes the outcome and loses its buttons. Nothing listens on your machine: Shotoku long-polls Telegram over outbound HTTPS, so it works behind any router.
Setup, about three minutes
1. Create a bot. In Telegram, open @BotFather, send /newbot, and pick a name and a username ending in bot. Keep the token it gives you secret.
2. Find your chat ID. Run Shotoku with only the token; it starts in setup mode:
Open your bot on your phone, press Start, and send any message. The terminal prints your chat ID.
3. Run it.
Your phone gets “Shotoku is watching.” Leave it running while your agent works. It reads the same ledger as the CLI and the MCP server.
What it does
| Only your taps count | Telegram says who pressed a button, and a bot cannot fake a press from another account. Presses from anyone else are refused and logged; strangers' messages get no reply. |
| The channel is recorded | The approval carries via: telegram:<your user ID>, so the audit trail shows the answer came from your phone. |
| Answered elsewhere | Approve in the terminal or the dashboard instead, and the Telegram message updates and loses its buttons. |
| Only new decisions | Decisions already pending when it starts are not sent; shotoku status lists them. |
| One per bot | Telegram delivers a bot's updates to a single reader. A second shotoku telegram on the same bot stops with an explanation. |
What it does not do
It is not a sandbox. It puts your answer on another device, so an agent can no longer reach the approval through the terminal you are watching. A process running as your user can still run shotoku approveor write the ledger. Real separation means the agent runs without access to Shotoku's files.
The notification goes through Telegram.The decision is made on your machine and does not depend on Telegram. The message does: the agent's name, the tool, the amount, where the amount came from and the reason reach Telegram's servers. No other tool argument is sent.