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:

Claude Code
/plugin marketplace add robotomail/claude-email
Claude Code
/plugin install robotomail@robotomail

Then launch Claude Code with the channel enabled:

shell
claude --dangerously-load-development-channels plugin:robotomail@robotomail

The --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:

Claude Code
/robotomail:configure

This 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.

Claude Code
# 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.
Claude Code
# Switch to pairing mode
/robotomail:access policy pairing

# Approve a pending sender
/robotomail:access pair a3f2b1

Available tools

The plugin exposes two tools that Claude can call:

  • reply_email — reply to an inbound email. Pass the rfc_message_id from the channel notification as inReplyTo for 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 notification
<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
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.