@openmail/openclaw and mail to the agent’s address wakes it. Replies go out in the same thread.
Before you start
- OpenClaw 2026.9.2 or newer.
- An OpenMail API key from the console. Any scope works.
Install
1
Install the plugin
openclaw plugins enable openmail first; OpenClaw keeps uninstalled plugins disabled.2
Add the channel
3
Restart the gateway
OpenMail: enabled, configured, running, connected.- “What’s in the inbox since this morning?”
- “Reply to Marc that Thursday works, and cc Jonas.”
- “Sign up for the Linear newsletter and give me the confirmation code.”
openclaw logs | grep openmail.
Modes
Default is
channel. Change it with --mode notify on channels add, or per inbox.
Only mail from a person gets a reply. Notifications and verification codes reach the agent as information, so it never answers noreply@. Spam never reaches it.
Who can email the agent
Anyone, by default. Restrict it under Allow/Block List in the console or with the CLI:Prompt injection
Replies go to the sender OpenMail recorded, not one the message claims. The bundled CLI takes credentials from the channel config and rejects--api-key and --base-url, so a forged mail can’t point the agent at another account. The agent can still start new threads; to stop that, make the inbox’s outbound policy an allowlist.
What the agent can do
The plugin bundles the CLI and a skill that teaches the agent to use it. Every command runs with the channel’s credentials, on the gateway host even if the agent is sandboxed. Keep the--:
openclaw message send --channel openmail --to a@b.com "…"; the first line becomes the subject.
Several inboxes
One account per inbox. Each has its own key and can be bound to a different agent.channels.openmail.inboxes in openclaw.json:
Attachments
Text from PDF, DOCX, XLSX, PPTX, CSV, and images (OCR) reaches the agent inline, up to 8k characters per file and 24k total. Files without text arrive as files, so a vision model sees the picture;mediaMaxMb caps the total per email (default 20).
Configuration reference
channels add writes channels.openmail in openclaw.json. If you gave it an account key, it stores a narrower pod key instead. No environment variables.
channels add flags: --mailbox-name sales creates sales@omail.sh, --display-name sets the sender name, --inbox-id picks an inbox when the key sees several, --pod runs a whole pod, --account names the account, --mode sets the mode.
Upgrading from the CLI bridge
Before@openmail/cli 0.7.0, openmail setup ran a WebSocket bridge as a system service. Those commands are gone.
1
Stop the old bridge
2
Install the plugin
Follow Install with the key from
~/.openclaw/openmail.env.3
Remove the old files
Delete
~/.openclaw/openmail.env, ~/.openclaw/skills/openmail/, and the skills.entries.openmail and OpenMail hooks.mappings entries in openclaw.json.Related
- Hermes Agent: the same design as a platform plugin
- Sender rules: who can email the agent
- Pods: grouping inboxes under one key
- Attachments: server-side text extraction