Iris for Claude
"Two-way AI communication, worldwide"
Telegram bridge for Claude Code in VS Code. Send messages from your phone, receive Claude's responses back -- from anywhere Telegram works.
Features
- True Two-Way: Messages injected into the active Claude Code conversation, responses relayed back to Telegram
- Multi-Window Routing: Route messages to specific VS Code windows with
/prefix syntax
- TOFU Security: Trust-on-first-use -- approve senders on first contact
- Secure Storage: Bot token in VS Code SecretStorage (encrypted, OS keychain)
- SQLite Persistence: Messages stored locally via sql.js (WASM), survives restarts
- Leader Election: Automatic failover across multiple VS Code windows
- Reliable: Exponential backoff with jitter for network failures
| Platform |
Status |
| macOS |
Full support (message injection + transcript relay) |
| Linux |
Partial (transcript relay only, injection coming soon) |
| Windows |
Partial (transcript relay only, injection coming soon) |
Message injection into the Claude Code sidebar currently requires macOS Accessibility permissions (uses AppleScript for keystroke simulation). On other platforms, Telegram polling, message storage, and transcript relay all work -- only the auto-injection step is macOS-specific.
Installation
- Install from VS Code Marketplace
- Run
Iris: Configure from Command Palette (Cmd+Shift+P)
- Enter your Telegram Bot Token
- First message will prompt you to trust the sender (TOFU)
Creating a Bot
- Message @BotFather on Telegram
- Send
/newbot and follow prompts
- Copy the bot token
Architecture
Phone (Telegram) Iris Extension Claude Code Sidebar
| | |
|--- "fix auth bug" ----->| |
| |-- clipboard paste ------>|
| | (Cmd+V + Enter) |
| | |
| | Claude responds |
| | writes to .jsonl ----->|
| | |
| |<-- transcript watcher ---|
| | reads new bytes |
|<-- "Claude: Fixed!" ----| |
Multi-Window Routing
Route messages to specific VS Code windows:
/code fix the auth bug -> routes to window named "code"
/blocks add a new block -> routes to window named "blocks"
hello -> routes to default window
Meta commands:
/windows -- list active VS Code windows
/default <name> -- set default target window
/help -- show help
Commands
| Command |
Description |
Iris: Configure |
Set bot token |
Iris: Send Message |
Send message to default chat |
Iris: Show History |
View message history |
Iris: Run Diagnostics |
Check connection status |
Iris: Set Window Name |
Set routing name for this window |
Iris: List Windows |
Show registered windows |
Settings
| Setting |
Default |
Description |
iris.enabled |
true |
Enable/disable bridge |
iris.autoInject |
true |
Auto-inject messages to Claude |
iris.autoReply |
true |
Send Claude responses back to Telegram |
iris.maxReplyLength |
4000 |
Max reply length (Telegram limit: 4096) |
iris.pollTimeout |
30 |
Long-poll timeout (seconds) |
iris.allowedUserIds |
[] |
Allowed Telegram user IDs (empty = TOFU mode) |
iris.notificationsEnabled |
true |
Show desktop notifications |
iris.logLevel |
info |
Logging verbosity |
iris.windowName |
"" |
Routing name for this window (auto = workspace folder) |
iris.defaultWindow |
"" |
Default target window (empty = first registered) |
macOS Setup
For message injection to work, VS Code needs Accessibility permissions:
- Open System Settings > Privacy & Security > Accessibility
- Ensure Visual Studio Code is toggled ON
- If not listed, the first injection attempt will trigger a permission prompt
- Restart VS Code after granting
Security
- TOFU (Trust-on-first-use): First message from unknown sender triggers approval dialog
- Bot tokens: Stored in VS Code SecretStorage (encrypted)
- Blocked user counter: Silent logging, surfaced in diagnostics
- No data sent to third parties: All communication is directly between your bot and Telegram API
License
MIT