Imap Idle Review

ReviewAudited by ClawScan on May 10, 2026.

Overview

The skill matches its email-monitoring purpose, but it deserves review because it runs persistently, handles mailbox and webhook credentials, and forwards untrusted email snippets into an agent webhook.

Install only if you are comfortable giving the skill access to the monitored mailboxes and your OpenClaw webhook token. Prefer keyring storage, chmod 600 on the config file, keep the webhook local/trusted, and configure OpenClaw to treat all email content as untrusted before taking actions.

Findings (5)

Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.

What this means

Someone who can email a monitored inbox may be able to place instructions in text that the agent receives, potentially steering downstream agent behavior if the main session treats the email as a prompt.

Why it was flagged

The listener includes email subject/body preview text in a webhook payload that wakes OpenClaw immediately. Email content is controlled by external senders and can contain instructions.

Skill content
return f"{notification_type['icon']} GitHub: {notification_type['action']}\n{subject}\n\n{body_preview[:500]}" ... payload = { "text": text, "mode": "now" }
Recommendation

Treat all email fields as untrusted data. Label or sanitize webhook text, consider metadata-only notifications, and require human approval before any agent action triggered by an email.

What this means

A local user or process with access to the config file could obtain mailbox credentials or the token used to wake the OpenClaw gateway.

Why it was flagged

If keyring is unavailable or declined, the setup stores the IMAP password in config; the webhook token is also stored there. The setup writes the file but does not show an explicit chmod to restrict permissions.

Skill content
account['password'] = password ... "webhook_token": webhook_token ... with open(config_path, 'w') as f: json.dump(config, f, indent=2)
Recommendation

Use keyring where possible, set the config file to mode 600, use app-specific or least-privilege mail credentials, and rotate the OpenClaw webhook token if it may have been exposed.

What this means

If the webhook URL is misconfigured or changed to an untrusted endpoint, email snippets and the webhook authorization token could be sent outside the intended local gateway.

Why it was flagged

The skill sends email summaries to a configured webhook with a bearer token. The default documented URL is localhost, and this is purpose-aligned, but the destination is configurable.

Skill content
headers = { "Authorization": f"Bearer {self.webhook_token}", "Content-Type": "application/json" } ... urllib.request.Request(self.webhook_url, data=json.dumps(payload).encode('utf-8'), headers=headers, method='POST')
Recommendation

Verify the webhook URL points to your own OpenClaw gateway, prefer localhost or trusted TLS endpoints, and keep the webhook token private.

What this means

The listener will continue monitoring inboxes and waking OpenClaw until you stop it or disable the service.

Why it was flagged

The skill is designed to keep running in the background and can be configured to start on boot. This is disclosed and aligned with event-driven monitoring.

Skill content
imap-idle start    # Start listener in background ... Systemd Service (Optional) ... automatic startup on boot
Recommendation

Use the documented status/stop commands, review any systemd service before enabling it, and run it under a dedicated low-privilege user if deployed on a server.

What this means

Future dependency changes or a compromised package could affect the listener under your user account.

Why it was flagged

The setup documentation asks users to install unpinned Python packages and to use --break-system-packages. This is user-directed and related to the skill, but it increases dependency and environment risk.

Skill content
pip3 install imapclient --user --break-system-packages ... pip3 install keyring --user --break-system-packages
Recommendation

Install dependencies in a virtual environment where possible, pin versions, and avoid --break-system-packages unless you understand the system impact.