Claude Code Channel
Give Claude Code a real email inbox. Install the Robotomail channel plugin to receive and reply to emails in your Claude Code session.
Overview
The Robotomail channel plugin connects your Robotomail inbox to a Claude Code session in real time. When someone emails your agent, Claude sees the message and can reply. No webhook endpoint needed, no ports exposed.
The plugin connects to Robotomail's SSE endpoint and pushes inbound emails as channel notifications. Claude replies using the reply_email and send_email tools.
Requirements
- Bun runtime (must be in your PATH)
- A Robotomail account (free tier works)
- Claude Code v2.1.80 or later
Install the plugin
Run each command separately inside Claude Code:
/plugin marketplace add robotomail/claude-email/plugin install robotomail@robotomailThen launch Claude Code with the channel enabled:
claude --dangerously-load-development-channels plugin:robotomail@robotomailThe --dangerously-load-development-channels flag is required during the channels research preview. It will be removed once the plugin is accepted into the official marketplace.
Configure
Run the configure command in your Claude Code session:
/robotomail:configureThis walks you through:
- Sign up for a new account, or enter an existing API key
- Pick a mailbox (free tier:
<slug>@robotomail.co) - Set a display name for outbound emails (e.g. "Claude Agent")
- Allow senders so emails can reach Claude
Access control
By default, all senders are blocked. You must explicitly allow email addresses before they can reach Claude. This prevents prompt injection from arbitrary senders.
# Allow a sender
/robotomail:access allow [email protected]
# View current policy and allowed senders
/robotomail:access list
# Remove a sender
/robotomail:access deny [email protected]Three access policies are available:
- allowlist (default) — only allowed senders reach Claude. All others are silently dropped.
- pairing — unknown senders trigger a pairing code in your terminal. Approve with
/robotomail:access pair <code>to add them. - open — all senders forwarded. Not recommended.
# Switch to pairing mode
/robotomail:access policy pairing
# Approve a pending sender
/robotomail:access pair a3f2b1Available tools
The plugin exposes two tools that Claude can call:
- reply_email — reply to an inbound email. Pass the
rfc_message_idfrom the channel notification asinReplyTofor automatic threading. - send_email — compose a new outbound email (not a reply to an existing thread).
Both tools support to, cc, subject, bodyText, bodyHtml, and mailboxId.
How emails appear
Inbound emails arrive as <channel>tags in Claude's context with structured metadata:
<channel source="robotomail" from="[email protected]" subject="Re: Hello" rfc_message_id="<abc@mail>" mailbox_id="mbx_123">
From: [email protected]
Subject: Re: Hello
Date: 2026-03-30T14:30:00Z
Thanks for reaching out! I'd love to schedule a call.
</channel>The from, subject, rfc_message_id, and mailbox_id attributes give Claude the context it needs to reply in-thread.
Display name
Set a display name during /robotomail:configure so replies show a proper sender name. You can also update it via the API:
curl -X PATCH https://api.robotomail.com/v1/mailboxes/MAILBOX_ID \
-H "Authorization: Bearer $ROBOTOMAIL_API_KEY" \
-H "Content-Type: application/json" \
-d '{"displayName": "Claude Agent"}'Recipients will see "Claude Agent <[email protected]>" as the sender.
Standalone skill
The plugin also includes a standalone skill for using the Robotomail API directly without the channel. Claude automatically uses it when you ask it to send email, check an inbox, or manage mailboxes. The skill teaches Claude the API conventions, endpoints, and CLI commands without requiring the push-based real-time connection.
Source code
The plugin is open source at github.com/robotomail/claude-email. Issues, feature requests, and contributions are welcome.