ProtonMail

AdvisoryAudited by Static analysis on Apr 30, 2026.

Overview

No suspicious patterns detected.

Findings (0)

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.

ConcernMedium Confidence
ASI02: Tool Misuse and Exploitation
What this means

Other machines on the network may be able to reach the bridge ports if the host firewall allows it, increasing the risk around ProtonMail bridge credentials and mailbox access.

Why it was flagged

The Docker example publishes the IMAP and SMTP bridge ports without a localhost-only bind, which can expose a mailbox-access bridge service beyond the local agent environment.

Skill content
-p 143:143 -p 1025:25 \
  --restart=unless-stopped \
  shenxn/protonmail-bridge
Recommendation

Bind bridge ports to localhost only, for example `-p 127.0.0.1:143:143`, and rely on host firewall rules before entering ProtonMail credentials.

What this means

If the image or repository changes or is compromised, the component receiving your mail credentials could behave differently than reviewed here.

Why it was flagged

The setup uses an unpinned Docker image and an unpinned source checkout for software that will handle ProtonMail login or bridge credentials.

Skill content
docker run ... shenxn/protonmail-bridge
...
git clone https://github.com/emersion/hydroxide.git
cd hydroxide && go build ./cmd/hydroxide
Recommendation

Prefer official, verified bridge distributions where possible; otherwise pin Docker image digests or repository commits and review the bridge software before logging in.

ConcernMedium Confidence
ASI02: Tool Misuse and Exploitation
What this means

Unread emails could be marked as read just because the agent listed or searched messages.

Why it was flagged

The inbox and search listing paths select the mailbox read-write and fetch headers without `BODY.PEEK`; on IMAP this can mark messages as seen even though the command appears to only list or search mail.

Skill content
imap.select('INBOX')
...
imap.fetch(msg_id, '(BODY[HEADER.FIELDS (FROM SUBJECT DATE)])')
Recommendation

Use `imap.select('INBOX', readonly=True)` or `BODY.PEEK[...]` for listing/searching, and reserve read-status changes for an explicit read action.

What this means

Installing and using this skill allows the agent to view mailbox metadata and, for the read command, full email bodies.

Why it was flagged

The skill uses ProtonMail bridge credentials to authenticate to IMAP, which is expected for the stated purpose but grants access to private mailbox data.

Skill content
PROTONMAIL_USER  - Email address
PROTONMAIL_PASS  - Bridge password
...
imap.login(CONFIG['user'], CONFIG['password'])
Recommendation

Only configure it for accounts you want the agent to access, protect the config file, and avoid sharing outputs containing sensitive emails.

NoteHigh Confidence
ASI10: Rogue Agents
What this means

Mail bridge access may remain available until the service or container is stopped.

Why it was flagged

The bridge is documented as a persistent service. That is normal for an IMAP bridge, but it means the credential-bearing component keeps running after setup.

Skill content
--restart=unless-stopped
...
# Run as service
./hydroxide serve
Recommendation

Run the bridge only where needed, stop it when not in use, and periodically review running containers or services.