qwwiwi/dashi-plugin-claude-code
11 stars · Last commit 2026-06-14
Turn a live Claude Code session into a Telegram agent — one interactive session, no per-message SDK billing. Replaces the claude -p gateway pattern. Multichat, media, voice transcription, terminal mirror.
README preview
# dashi-plugin-claude-code > **Read in your language:** English (this page) · [**Русская версия →**](README.ru.md) [](LICENSE) [](https://bun.sh) [](https://www.typescriptlang.org/) [](https://code.claude.com/docs/en/channels-reference) [](#license-and-author) **A Telegram → Claude Code channel plugin.** It turns an ordinary, live Claude Code session into a Telegram agent: the bot listens to one or more chats, replies inside the same session, and keeps all the work within your regular Anthropic Max subscription — with no separate SDK billing. It replaces the deprecated `claude -p` gateway pattern (a Python daemon that spawned a fresh headless session for every message). Cutover deadline — **2026-06-15** (Anthropic is splitting billing; details in section [13](#13-why-migrate--the-2026-06-15-deadline)). > **Migrating from the old gateway? There is now a doctor — use it.** The read-only [`doctor-dashi-plugin`](skills/doctor-dashi-plugin/SKILL.md) skill diagnoses the whole cutover — workspace placement, hooks (profile-aware), the permission gate and its policy, multichat invariants, webhook bind + token-file hygiene, MCP comms config, allowlist, fleet isolation, and live-session health — and encodes every mistake we already paid for so you don't repeat them. Run it during EVERY migration and whenever the bridge misbehaves: `bun skills/doctor-dashi-plugin/scripts/doctor.ts` (on a systemd host it autodetects the rest). > > **And one hard rule: migrate from a Claude Code terminal session, not through Telegram.** The migration changes the very bridge that carries your Telegram messages — if it breaks mid-change, the agent you were instructing through Telegram goes silent and can no longer fix itself. Work in a terminal (`tmux attach`, or a plain `claude` session on the host); let Telegram be the thing you test, not the thing you work through. 