Skills atomicmail Audit History
📦

Audit History

atomicmail - 5 audits

Version comparison

Capability and finding changes across audited versions, newest first.

VersionDateResultReview itemsChange vs previous
v5 LatestJul 23, 2026, 07:43 AM 4 confirmed9No capability change
v4 Jul 17, 2026, 09:53 AM No confirmed findings0No capability change
v3 Jul 17, 2026, 09:53 AM No confirmed findings0No capability change
v2 Jul 17, 2026, 09:53 AM No confirmed findings0No capability change
v1 Jul 14, 2026, 10:02 AM 4 confirmed7Baseline

Jul 23, 2026, 07:43 AM

Most static alerts are false positives from generated declarations, documentation, relative imports, regular-expression .exec, and a commented eval. Nine intended fetch calls are confirmed as low-risk network behavior, but semantic review found high-risk credential disclosure, unrestricted endpoints, arbitrary attachment reads, and unsafe autonomous email handling. Static review was capped at 400/864 representative findings; omitted static matches are unconfirmed, so automatic publishing stays disabled until manual review.

137
Files scanned
5,852
Lines analyzed
18
Review items
0
False positives ignored

Confirmed security concerns (4)

High
Registration Exposes the New API Key in Agent Output
New-account registration returns apiKey from AgentSession and the CLI serializes the full result to stdout. Agent transcripts and execution logs can therefore retain the credential.
The returned object explicitly includes apiKey, and the CLI writes that object to standard output without redaction.
High
Custom Endpoints Can Receive Atomic Mail Credentials
The agent-facing CLI accepts unrestricted auth and API URLs. It sends API keys or bearer tokens to those destinations without HTTPS enforcement, origin checks, or operator confirmation.
The URL comes directly from CLI or environment configuration, and exchangeSession posts the supplied API key to that URL.
High
Attachment Paths Permit Arbitrary Local File Upload
The CLI accepts absolute or relative attachment paths, reads each file without an allowlisted root, and uploads its bytes. A manipulated agent could disclose local secrets.
The implementation resolves any supplied path, reads it with readFile, and sends the bytes to the session upload URL.
High
Scheduled Inbox Turns Lack Untrusted-Content Boundaries
The skill recommends autonomous agent turns that fetch and summarize email but does not tell the agent to treat message content as untrusted. Malicious email can attempt tool-use prompt injection.
The documented recurring workflow explicitly invokes a full agent on inbox data, while its prompt provides no instruction hierarchy or prohibition on acting on email instructions.
Capability review items (9)

These are real local capabilities that may be expected for this skill, so they require review but are not counted as confirmed malicious behavior.

Low
Fetch API call
const res = await fetch(`${authUrl}/api/v1/challenge`, {
This is a real outbound HTTP request to the configured Atomic Mail or JMAP service. It is expected functionality but remains security-relevant network access.
Low
Fetch API call
const res = await fetch(`${authUrl}/api/v1/session`, {
This outbound authentication request sends a challenge, API key, or bearer token to the configured auth service. It is intended behavior with real credential exposure.
Low
Fetch API call
const res = await fetch(`${authUrl}/api/v1/capability`, {
This outbound authentication request sends a challenge, API key, or bearer token to the configured auth service. It is intended behavior with real credential exposure.
Low
Fetch API call
const res = await fetch(uploadUrlExpanded, {
This outbound request uploads selected attachment bytes with a capability JWT to the JMAP upload URL. The behavior is declared, but it exposes local data and credentials to a network endpoint.
Low
Fetch API call
const res = await fetch(`${base}/.well-known/jmap`, {
This is a real outbound HTTP request to the configured Atomic Mail or JMAP service. It is expected functionality but remains security-relevant network access.
Low
Fetch API call
const res = await fetch(jmapPostUrl, {
This outbound request sends a caller-provided JMAP batch with a capability JWT. It is core email functionality but can read, modify, or send mailbox data.
Low
Fetch API call
const res = await fetch(`${this.baseUrl}/api/v1/capability`, {
This outbound authentication request sends a challenge, API key, or bearer token to the configured auth service. It is intended behavior with real credential exposure.
Low
Fetch API call
const res = await fetch(`${this.baseUrl}/api/v1/challenge`, {
This is a real outbound HTTP request to the configured Atomic Mail or JMAP service. It is expected functionality but remains security-relevant network access.
Low
Fetch API call
const res = await fetch(`${this.baseUrl}/api/v1/session`, {
This outbound authentication request sends a challenge, API key, or bearer token to the configured auth service. It is intended behavior with real credential exposure.

Risk Factors

⚡ Contains scripts (4)
⚙️ External commands (50)
lib/esm/_dnt.polyfills.d.ts:19 lib/esm/_dnt.polyfills.d.ts:25-30 lib/esm/_dnt.polyfills.d.ts:30-35 lib/esm/_dnt.polyfills.d.ts:35-37 lib/esm/_dnt.polyfills.d.ts:37-40 lib/esm/_dnt.polyfills.d.ts:40-42 lib/esm/_dnt.polyfills.d.ts:42-44 lib/esm/_dnt.polyfills.d.ts:44-50 lib/esm/_dnt.polyfills.d.ts:50-54 lib/esm/_dnt.polyfills.d.ts:54-59 lib/esm/_dnt.polyfills.d.ts:59-62 lib/esm/_dnt.polyfills.d.ts:62-68 lib/esm/_dnt.polyfills.d.ts:68-73 lib/esm/_dnt.polyfills.d.ts:73-76 lib/esm/_dnt.polyfills.d.ts:76-82 lib/esm/lib/agent/auth/agent-auth-http.js:80 lib/esm/lib/agent/auth/agent-auth-http.js:5 lib/esm/lib/agent/auth/agent-auth-http.js:10 lib/esm/lib/agent/auth/agent-auth-http.js:26 lib/esm/lib/agent/auth/agent-auth-http.js:30 lib/esm/lib/agent/auth/agent-auth-http.js:36 lib/esm/lib/agent/auth/agent-auth-http.js:54 lib/esm/lib/agent/auth/agent-auth-http.js:56 lib/esm/lib/agent/auth/agent-auth-http.js:60 lib/esm/lib/agent/auth/agent-pow.js:41 lib/esm/lib/agent/jmap/agent-help-content.js:1 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.d.ts:14 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.d.ts:15 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.d.ts:19 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.d.ts:20 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.js:37 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.js:38 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.js:106 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.js:107 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.js:115 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.js:116 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.js:131 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.js:132 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.js:161 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.js:162 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.d.ts:2 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.d.ts:15 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.d.ts:17 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.d.ts:19 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.d.ts:20 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.d.ts:21 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.js:41 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.js:48 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.js:52 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.js:57
🌐 Network access (39)
📁 Filesystem access (50)
lib/esm/_dnt.polyfills.d.ts:39 lib/esm/_dnt.polyfills.d.ts.map:1 lib/esm/lib/agent/auth/agent-auth-http.d.ts.map:1 lib/esm/lib/agent/auth/agent-jwt.d.ts.map:1 lib/esm/lib/agent/auth/agent-pow.d.ts.map:1 lib/esm/lib/agent/jmap/agent-help-content.d.ts.map:1 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.d.ts.map:1 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.d.ts.map:1 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.js:5 lib/esm/lib/agent/jmap/agent-jmap-email-charset.d.ts.map:1 lib/esm/lib/agent/jmap/agent-jmap-verify.d.ts.map:1 lib/esm/lib/agent/jmap/agent-jmap.d.ts:26 lib/esm/lib/agent/jmap/agent-jmap.d.ts:33 lib/esm/lib/agent/jmap/agent-jmap.d.ts.map:1 lib/esm/lib/agent/jmap/agent-jmap.js:6 lib/esm/lib/agent/jmap/agent-jmap.js:7 lib/esm/lib/agent/jmap/agent-jmap.js:8 lib/esm/lib/agent/jmap/agent-jmap.js:145 lib/esm/lib/agent/jmap/agent-jmap.js:180 lib/esm/lib/agent/jmap/agent-vars.d.ts.map:1 lib/esm/lib/agent/jmap/help-content/auth.d.ts:1 lib/esm/lib/agent/jmap/help-content/auth.d.ts:1 lib/esm/lib/agent/jmap/help-content/auth.d.ts.map:1 lib/esm/lib/agent/jmap/help-content/auth.js:12 lib/esm/lib/agent/jmap/help-content/auth.js:13 lib/esm/lib/agent/jmap/help-content/auth.js:16 lib/esm/lib/agent/jmap/help-content/auth.js:17 lib/esm/lib/agent/jmap/help-content/auth.js:33 lib/esm/lib/agent/jmap/help-content/auth.js:33 lib/esm/lib/agent/jmap/help-content/cron.d.ts:5 lib/esm/lib/agent/jmap/help-content/cron.d.ts:5 lib/esm/lib/agent/jmap/help-content/cron.d.ts.map:1 lib/esm/lib/agent/jmap/help-content/cron.js:110 lib/esm/lib/agent/jmap/help-content/cron.js:110 lib/esm/lib/agent/jmap/help-content/index.d.ts.map:1 lib/esm/lib/agent/jmap/help-content/index.js:2 lib/esm/lib/agent/jmap/help-content/index.js:3 lib/esm/lib/agent/jmap/help-content/installation.d.ts:1 lib/esm/lib/agent/jmap/help-content/installation.d.ts:1 lib/esm/lib/agent/jmap/help-content/installation.d.ts.map:1 lib/esm/lib/agent/jmap/help-content/installation.js:37 lib/esm/lib/agent/jmap/help-content/installation.js:37 lib/esm/lib/agent/jmap/help-content/jmap-cheatsheet.d.ts.map:1 lib/esm/lib/agent/jmap/help-content/multi-account.d.ts:1 lib/esm/lib/agent/jmap/help-content/multi-account.d.ts:1 lib/esm/lib/agent/jmap/help-content/multi-account.d.ts.map:1 lib/esm/lib/agent/jmap/help-content/multi-account.js:14 lib/esm/lib/agent/jmap/help-content/multi-account.js:15 lib/esm/lib/agent/jmap/help-content/multi-account.js:19 lib/esm/lib/agent/jmap/help-content/multi-account.js:24
🔑 Env variables (24)
Audited by: codex

Jul 17, 2026, 09:53 AM

All 400 presented static findings were adjudicated as false positives or expected capabilities of a JMAP mail client. The findings primarily stem from generated declarations, source maps, documentation, credential storage, protocol requests, and JavaScript syntax misclassified as process execution. No prompt injection, unauthorized credential exfiltration, or malicious persistence intent was found in the reviewed files. Static review was capped at 400/864 representative findings; omitted static matches are unconfirmed, so automatic publishing stays disabled until manual review.

137
Files scanned
5,852
Lines analyzed
5
Review items
0
False positives ignored

Risk Factors

⚡ Contains scripts (4)
⚙️ External commands (50)
lib/esm/_dnt.polyfills.d.ts:19 lib/esm/_dnt.polyfills.d.ts:25-30 lib/esm/_dnt.polyfills.d.ts:30-35 lib/esm/_dnt.polyfills.d.ts:35-37 lib/esm/_dnt.polyfills.d.ts:37-40 lib/esm/_dnt.polyfills.d.ts:40-42 lib/esm/_dnt.polyfills.d.ts:42-44 lib/esm/_dnt.polyfills.d.ts:44-50 lib/esm/_dnt.polyfills.d.ts:50-54 lib/esm/_dnt.polyfills.d.ts:54-59 lib/esm/_dnt.polyfills.d.ts:59-62 lib/esm/_dnt.polyfills.d.ts:62-68 lib/esm/_dnt.polyfills.d.ts:68-73 lib/esm/_dnt.polyfills.d.ts:73-76 lib/esm/_dnt.polyfills.d.ts:76-82 lib/esm/lib/agent/auth/agent-auth-http.js:80 lib/esm/lib/agent/auth/agent-auth-http.js:5 lib/esm/lib/agent/auth/agent-auth-http.js:10 lib/esm/lib/agent/auth/agent-auth-http.js:26 lib/esm/lib/agent/auth/agent-auth-http.js:30 lib/esm/lib/agent/auth/agent-auth-http.js:36 lib/esm/lib/agent/auth/agent-auth-http.js:54 lib/esm/lib/agent/auth/agent-auth-http.js:56 lib/esm/lib/agent/auth/agent-auth-http.js:60 lib/esm/lib/agent/auth/agent-pow.js:41 lib/esm/lib/agent/jmap/agent-help-content.js:1 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.d.ts:14 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.d.ts:15 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.d.ts:19 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.d.ts:20 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.js:37 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.js:38 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.js:106 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.js:107 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.js:115 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.js:116 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.js:131 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.js:132 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.js:161 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.js:162 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.d.ts:2 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.d.ts:15 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.d.ts:17 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.d.ts:19 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.d.ts:20 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.d.ts:21 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.js:41 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.js:48 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.js:52 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.js:57
🌐 Network access (39)
📁 Filesystem access (50)
lib/esm/_dnt.polyfills.d.ts:39 lib/esm/_dnt.polyfills.d.ts.map:1 lib/esm/lib/agent/auth/agent-auth-http.d.ts.map:1 lib/esm/lib/agent/auth/agent-jwt.d.ts.map:1 lib/esm/lib/agent/auth/agent-pow.d.ts.map:1 lib/esm/lib/agent/jmap/agent-help-content.d.ts.map:1 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.d.ts.map:1 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.d.ts.map:1 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.js:5 lib/esm/lib/agent/jmap/agent-jmap-email-charset.d.ts.map:1 lib/esm/lib/agent/jmap/agent-jmap-verify.d.ts.map:1 lib/esm/lib/agent/jmap/agent-jmap.d.ts:26 lib/esm/lib/agent/jmap/agent-jmap.d.ts:33 lib/esm/lib/agent/jmap/agent-jmap.d.ts.map:1 lib/esm/lib/agent/jmap/agent-jmap.js:6 lib/esm/lib/agent/jmap/agent-jmap.js:7 lib/esm/lib/agent/jmap/agent-jmap.js:8 lib/esm/lib/agent/jmap/agent-jmap.js:145 lib/esm/lib/agent/jmap/agent-jmap.js:180 lib/esm/lib/agent/jmap/agent-vars.d.ts.map:1 lib/esm/lib/agent/jmap/help-content/auth.d.ts:1 lib/esm/lib/agent/jmap/help-content/auth.d.ts:1 lib/esm/lib/agent/jmap/help-content/auth.d.ts.map:1 lib/esm/lib/agent/jmap/help-content/auth.js:12 lib/esm/lib/agent/jmap/help-content/auth.js:13 lib/esm/lib/agent/jmap/help-content/auth.js:16 lib/esm/lib/agent/jmap/help-content/auth.js:17 lib/esm/lib/agent/jmap/help-content/auth.js:33 lib/esm/lib/agent/jmap/help-content/auth.js:33 lib/esm/lib/agent/jmap/help-content/cron.d.ts:5 lib/esm/lib/agent/jmap/help-content/cron.d.ts:5 lib/esm/lib/agent/jmap/help-content/cron.d.ts.map:1 lib/esm/lib/agent/jmap/help-content/cron.js:110 lib/esm/lib/agent/jmap/help-content/cron.js:110 lib/esm/lib/agent/jmap/help-content/index.d.ts.map:1 lib/esm/lib/agent/jmap/help-content/index.js:2 lib/esm/lib/agent/jmap/help-content/index.js:3 lib/esm/lib/agent/jmap/help-content/installation.d.ts:1 lib/esm/lib/agent/jmap/help-content/installation.d.ts:1 lib/esm/lib/agent/jmap/help-content/installation.d.ts.map:1 lib/esm/lib/agent/jmap/help-content/installation.js:37 lib/esm/lib/agent/jmap/help-content/installation.js:37 lib/esm/lib/agent/jmap/help-content/jmap-cheatsheet.d.ts.map:1 lib/esm/lib/agent/jmap/help-content/multi-account.d.ts:1 lib/esm/lib/agent/jmap/help-content/multi-account.d.ts:1 lib/esm/lib/agent/jmap/help-content/multi-account.d.ts.map:1 lib/esm/lib/agent/jmap/help-content/multi-account.js:14 lib/esm/lib/agent/jmap/help-content/multi-account.js:15 lib/esm/lib/agent/jmap/help-content/multi-account.js:19 lib/esm/lib/agent/jmap/help-content/multi-account.js:24
🔑 Env variables (24)
Audited by: claude

Jul 17, 2026, 09:53 AM

All 400 presented static findings were adjudicated as false positives or expected capabilities of a JMAP mail client. The findings primarily stem from generated declarations, source maps, documentation, credential storage, protocol requests, and JavaScript syntax misclassified as process execution. No prompt injection, unauthorized credential exfiltration, or malicious persistence intent was found in the reviewed files. Static review was capped at 400/864 representative findings; omitted static matches are unconfirmed, so automatic publishing stays disabled until manual review.

137
Files scanned
5,852
Lines analyzed
5
Review items
0
False positives ignored

Risk Factors

⚡ Contains scripts (4)
⚙️ External commands (50)
lib/esm/_dnt.polyfills.d.ts:19 lib/esm/_dnt.polyfills.d.ts:25-30 lib/esm/_dnt.polyfills.d.ts:30-35 lib/esm/_dnt.polyfills.d.ts:35-37 lib/esm/_dnt.polyfills.d.ts:37-40 lib/esm/_dnt.polyfills.d.ts:40-42 lib/esm/_dnt.polyfills.d.ts:42-44 lib/esm/_dnt.polyfills.d.ts:44-50 lib/esm/_dnt.polyfills.d.ts:50-54 lib/esm/_dnt.polyfills.d.ts:54-59 lib/esm/_dnt.polyfills.d.ts:59-62 lib/esm/_dnt.polyfills.d.ts:62-68 lib/esm/_dnt.polyfills.d.ts:68-73 lib/esm/_dnt.polyfills.d.ts:73-76 lib/esm/_dnt.polyfills.d.ts:76-82 lib/esm/lib/agent/auth/agent-auth-http.js:80 lib/esm/lib/agent/auth/agent-auth-http.js:5 lib/esm/lib/agent/auth/agent-auth-http.js:10 lib/esm/lib/agent/auth/agent-auth-http.js:26 lib/esm/lib/agent/auth/agent-auth-http.js:30 lib/esm/lib/agent/auth/agent-auth-http.js:36 lib/esm/lib/agent/auth/agent-auth-http.js:54 lib/esm/lib/agent/auth/agent-auth-http.js:56 lib/esm/lib/agent/auth/agent-auth-http.js:60 lib/esm/lib/agent/auth/agent-pow.js:41 lib/esm/lib/agent/jmap/agent-help-content.js:1 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.d.ts:14 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.d.ts:15 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.d.ts:19 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.d.ts:20 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.js:37 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.js:38 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.js:106 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.js:107 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.js:115 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.js:116 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.js:131 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.js:132 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.js:161 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.js:162 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.d.ts:2 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.d.ts:15 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.d.ts:17 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.d.ts:19 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.d.ts:20 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.d.ts:21 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.js:41 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.js:48 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.js:52 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.js:57
🌐 Network access (39)
📁 Filesystem access (50)
lib/esm/_dnt.polyfills.d.ts:39 lib/esm/_dnt.polyfills.d.ts.map:1 lib/esm/lib/agent/auth/agent-auth-http.d.ts.map:1 lib/esm/lib/agent/auth/agent-jwt.d.ts.map:1 lib/esm/lib/agent/auth/agent-pow.d.ts.map:1 lib/esm/lib/agent/jmap/agent-help-content.d.ts.map:1 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.d.ts.map:1 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.d.ts.map:1 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.js:5 lib/esm/lib/agent/jmap/agent-jmap-email-charset.d.ts.map:1 lib/esm/lib/agent/jmap/agent-jmap-verify.d.ts.map:1 lib/esm/lib/agent/jmap/agent-jmap.d.ts:26 lib/esm/lib/agent/jmap/agent-jmap.d.ts:33 lib/esm/lib/agent/jmap/agent-jmap.d.ts.map:1 lib/esm/lib/agent/jmap/agent-jmap.js:6 lib/esm/lib/agent/jmap/agent-jmap.js:7 lib/esm/lib/agent/jmap/agent-jmap.js:8 lib/esm/lib/agent/jmap/agent-jmap.js:145 lib/esm/lib/agent/jmap/agent-jmap.js:180 lib/esm/lib/agent/jmap/agent-vars.d.ts.map:1 lib/esm/lib/agent/jmap/help-content/auth.d.ts:1 lib/esm/lib/agent/jmap/help-content/auth.d.ts:1 lib/esm/lib/agent/jmap/help-content/auth.d.ts.map:1 lib/esm/lib/agent/jmap/help-content/auth.js:12 lib/esm/lib/agent/jmap/help-content/auth.js:13 lib/esm/lib/agent/jmap/help-content/auth.js:16 lib/esm/lib/agent/jmap/help-content/auth.js:17 lib/esm/lib/agent/jmap/help-content/auth.js:33 lib/esm/lib/agent/jmap/help-content/auth.js:33 lib/esm/lib/agent/jmap/help-content/cron.d.ts:5 lib/esm/lib/agent/jmap/help-content/cron.d.ts:5 lib/esm/lib/agent/jmap/help-content/cron.d.ts.map:1 lib/esm/lib/agent/jmap/help-content/cron.js:110 lib/esm/lib/agent/jmap/help-content/cron.js:110 lib/esm/lib/agent/jmap/help-content/index.d.ts.map:1 lib/esm/lib/agent/jmap/help-content/index.js:2 lib/esm/lib/agent/jmap/help-content/index.js:3 lib/esm/lib/agent/jmap/help-content/installation.d.ts:1 lib/esm/lib/agent/jmap/help-content/installation.d.ts:1 lib/esm/lib/agent/jmap/help-content/installation.d.ts.map:1 lib/esm/lib/agent/jmap/help-content/installation.js:37 lib/esm/lib/agent/jmap/help-content/installation.js:37 lib/esm/lib/agent/jmap/help-content/jmap-cheatsheet.d.ts.map:1 lib/esm/lib/agent/jmap/help-content/multi-account.d.ts:1 lib/esm/lib/agent/jmap/help-content/multi-account.d.ts:1 lib/esm/lib/agent/jmap/help-content/multi-account.d.ts.map:1 lib/esm/lib/agent/jmap/help-content/multi-account.js:14 lib/esm/lib/agent/jmap/help-content/multi-account.js:15 lib/esm/lib/agent/jmap/help-content/multi-account.js:19 lib/esm/lib/agent/jmap/help-content/multi-account.js:24
🔑 Env variables (24)
Audited by: claude

Jul 17, 2026, 09:53 AM

All 400 presented static findings were adjudicated as false positives or expected capabilities of a JMAP mail client. The findings primarily stem from generated declarations, source maps, documentation, credential storage, protocol requests, and JavaScript syntax misclassified as process execution. No prompt injection, unauthorized credential exfiltration, or malicious persistence intent was found in the reviewed files. Static review was capped at 400/864 representative findings; omitted static matches are unconfirmed, so automatic publishing stays disabled until manual review.

137
Files scanned
5,852
Lines analyzed
5
Review items
0
False positives ignored

Risk Factors

⚡ Contains scripts (4)
⚙️ External commands (50)
lib/esm/_dnt.polyfills.d.ts:19 lib/esm/_dnt.polyfills.d.ts:25-30 lib/esm/_dnt.polyfills.d.ts:30-35 lib/esm/_dnt.polyfills.d.ts:35-37 lib/esm/_dnt.polyfills.d.ts:37-40 lib/esm/_dnt.polyfills.d.ts:40-42 lib/esm/_dnt.polyfills.d.ts:42-44 lib/esm/_dnt.polyfills.d.ts:44-50 lib/esm/_dnt.polyfills.d.ts:50-54 lib/esm/_dnt.polyfills.d.ts:54-59 lib/esm/_dnt.polyfills.d.ts:59-62 lib/esm/_dnt.polyfills.d.ts:62-68 lib/esm/_dnt.polyfills.d.ts:68-73 lib/esm/_dnt.polyfills.d.ts:73-76 lib/esm/_dnt.polyfills.d.ts:76-82 lib/esm/lib/agent/auth/agent-auth-http.js:80 lib/esm/lib/agent/auth/agent-auth-http.js:5 lib/esm/lib/agent/auth/agent-auth-http.js:10 lib/esm/lib/agent/auth/agent-auth-http.js:26 lib/esm/lib/agent/auth/agent-auth-http.js:30 lib/esm/lib/agent/auth/agent-auth-http.js:36 lib/esm/lib/agent/auth/agent-auth-http.js:54 lib/esm/lib/agent/auth/agent-auth-http.js:56 lib/esm/lib/agent/auth/agent-auth-http.js:60 lib/esm/lib/agent/auth/agent-pow.js:41 lib/esm/lib/agent/jmap/agent-help-content.js:1 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.d.ts:14 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.d.ts:15 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.d.ts:19 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.d.ts:20 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.js:37 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.js:38 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.js:106 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.js:107 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.js:115 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.js:116 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.js:131 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.js:132 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.js:161 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.js:162 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.d.ts:2 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.d.ts:15 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.d.ts:17 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.d.ts:19 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.d.ts:20 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.d.ts:21 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.js:41 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.js:48 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.js:52 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.js:57
🌐 Network access (39)
📁 Filesystem access (50)
lib/esm/_dnt.polyfills.d.ts:39 lib/esm/_dnt.polyfills.d.ts.map:1 lib/esm/lib/agent/auth/agent-auth-http.d.ts.map:1 lib/esm/lib/agent/auth/agent-jwt.d.ts.map:1 lib/esm/lib/agent/auth/agent-pow.d.ts.map:1 lib/esm/lib/agent/jmap/agent-help-content.d.ts.map:1 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.d.ts.map:1 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.d.ts.map:1 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.js:5 lib/esm/lib/agent/jmap/agent-jmap-email-charset.d.ts.map:1 lib/esm/lib/agent/jmap/agent-jmap-verify.d.ts.map:1 lib/esm/lib/agent/jmap/agent-jmap.d.ts:26 lib/esm/lib/agent/jmap/agent-jmap.d.ts:33 lib/esm/lib/agent/jmap/agent-jmap.d.ts.map:1 lib/esm/lib/agent/jmap/agent-jmap.js:6 lib/esm/lib/agent/jmap/agent-jmap.js:7 lib/esm/lib/agent/jmap/agent-jmap.js:8 lib/esm/lib/agent/jmap/agent-jmap.js:145 lib/esm/lib/agent/jmap/agent-jmap.js:180 lib/esm/lib/agent/jmap/agent-vars.d.ts.map:1 lib/esm/lib/agent/jmap/help-content/auth.d.ts:1 lib/esm/lib/agent/jmap/help-content/auth.d.ts:1 lib/esm/lib/agent/jmap/help-content/auth.d.ts.map:1 lib/esm/lib/agent/jmap/help-content/auth.js:12 lib/esm/lib/agent/jmap/help-content/auth.js:13 lib/esm/lib/agent/jmap/help-content/auth.js:16 lib/esm/lib/agent/jmap/help-content/auth.js:17 lib/esm/lib/agent/jmap/help-content/auth.js:33 lib/esm/lib/agent/jmap/help-content/auth.js:33 lib/esm/lib/agent/jmap/help-content/cron.d.ts:5 lib/esm/lib/agent/jmap/help-content/cron.d.ts:5 lib/esm/lib/agent/jmap/help-content/cron.d.ts.map:1 lib/esm/lib/agent/jmap/help-content/cron.js:110 lib/esm/lib/agent/jmap/help-content/cron.js:110 lib/esm/lib/agent/jmap/help-content/index.d.ts.map:1 lib/esm/lib/agent/jmap/help-content/index.js:2 lib/esm/lib/agent/jmap/help-content/index.js:3 lib/esm/lib/agent/jmap/help-content/installation.d.ts:1 lib/esm/lib/agent/jmap/help-content/installation.d.ts:1 lib/esm/lib/agent/jmap/help-content/installation.d.ts.map:1 lib/esm/lib/agent/jmap/help-content/installation.js:37 lib/esm/lib/agent/jmap/help-content/installation.js:37 lib/esm/lib/agent/jmap/help-content/jmap-cheatsheet.d.ts.map:1 lib/esm/lib/agent/jmap/help-content/multi-account.d.ts:1 lib/esm/lib/agent/jmap/help-content/multi-account.d.ts:1 lib/esm/lib/agent/jmap/help-content/multi-account.d.ts.map:1 lib/esm/lib/agent/jmap/help-content/multi-account.js:14 lib/esm/lib/agent/jmap/help-content/multi-account.js:15 lib/esm/lib/agent/jmap/help-content/multi-account.js:19 lib/esm/lib/agent/jmap/help-content/multi-account.js:24
🔑 Env variables (24)
Audited by: claude

Jul 14, 2026, 10:02 AM

Most scanner alerts are lexical false positives from generated files, documentation, regular expressions, and intended configuration access. Confirmed risks involve sending secrets to configurable or session-provided endpoints. Additional findings cover API-key output, unrestricted attachment paths, scheduled email prompt injection, and existing-file permissions. Static review was capped at 400/864 representative findings; omitted static matches are unconfirmed, so automatic publishing stays disabled until manual review.

137
Files scanned
5,852
Lines analyzed
16
Review items
0
False positives ignored

Confirmed security concerns (4)

High
Registration returns the API key to command output
New registration results include the API key, and the CLI serializes the full result to stdout. Agent transcripts and host logs can retain this reusable secret.
The registration return object explicitly includes apiKey, and the CLI writes that object to stdout without redaction.
High
Attachment paths can expose arbitrary local files
Attachment handling accepts absolute or caller-relative paths, reads each file, and uploads its bytes without an approved-root check or interactive confirmation.
The implementation resolves unrestricted paths, reads their bytes, and sends them to the upload URL. No path boundary or confirmation is present.
High
Scheduled inbox prompt lacks an untrusted-content boundary
The hourly agent prompt asks autonomous agents to process inbound messages but does not forbid following instructions contained inside email bodies or attachments.
The published scheduled prompt processes attacker-controlled email in a full agent turn, yet no trust-boundary instruction appears in the relevant workflow.
Medium
Existing credential files may retain unsafe permissions
Credential and JWT writes request mode 0600 only during writeFile. Existing files with broader permissions are not explicitly corrected with chmod.
Node writeFile mode controls creation permissions but does not tighten an existing file. No explicit chmod follows these writes.
Capability review items (7)

These are real local capabilities that may be expected for this skill, so they require review but are not counted as confirmed malicious behavior.

High
Fetch API call
const res = await fetch(`${authUrl}/api/v1/session`, {
This request sends the challenge bearer and session payload, including an optional API key, to a configurable authUrl. An untrusted endpoint override can capture credentials.
High
Fetch API call
const res = await fetch(`${authUrl}/api/v1/capability`, {
This request sends the session JWT as a bearer token to a configurable authUrl. No origin allowlist prevents an unsafe override from receiving the secret.
High
Fetch API call
const res = await fetch(uploadUrlExpanded, {
This upload sends a capability JWT and local file bytes to a session-provided URL. The destination is not constrained to an approved Atomic Mail origin.
High
Fetch API call
const res = await fetch(`${base}/.well-known/jmap`, {
This request sends a capability JWT to the configurable API base URL. A malicious configuration can redirect the bearer secret to an attacker-controlled service.
High
Fetch API call
const res = await fetch(jmapPostUrl, {
This request sends the capability JWT and full JMAP envelope to a session-provided URL. The code does not validate the destination origin before transmitting mailbox data.
High
Fetch API call
const res = await fetch(`${this.baseUrl}/api/v1/capability`, {
This client sends a session JWT to its configurable baseUrl. Callers can direct the bearer secret to an untrusted endpoint because no origin restriction is enforced.
High
Fetch API call
const res = await fetch(`${this.baseUrl}/api/v1/session`, {
This client posts authentication data, including an API key during login, to its configurable baseUrl. An unsafe base URL can capture account credentials.

Risk Factors

⚡ Contains scripts (4)
⚙️ External commands (50)
lib/esm/_dnt.polyfills.d.ts:19 lib/esm/_dnt.polyfills.d.ts:25-30 lib/esm/_dnt.polyfills.d.ts:30-35 lib/esm/_dnt.polyfills.d.ts:35-37 lib/esm/_dnt.polyfills.d.ts:37-40 lib/esm/_dnt.polyfills.d.ts:40-42 lib/esm/_dnt.polyfills.d.ts:42-44 lib/esm/_dnt.polyfills.d.ts:44-50 lib/esm/_dnt.polyfills.d.ts:50-54 lib/esm/_dnt.polyfills.d.ts:54-59 lib/esm/_dnt.polyfills.d.ts:59-62 lib/esm/_dnt.polyfills.d.ts:62-68 lib/esm/_dnt.polyfills.d.ts:68-73 lib/esm/_dnt.polyfills.d.ts:73-76 lib/esm/_dnt.polyfills.d.ts:76-82 lib/esm/lib/agent/auth/agent-auth-http.js:80 lib/esm/lib/agent/auth/agent-auth-http.js:5 lib/esm/lib/agent/auth/agent-auth-http.js:10 lib/esm/lib/agent/auth/agent-auth-http.js:26 lib/esm/lib/agent/auth/agent-auth-http.js:30 lib/esm/lib/agent/auth/agent-auth-http.js:36 lib/esm/lib/agent/auth/agent-auth-http.js:54 lib/esm/lib/agent/auth/agent-auth-http.js:56 lib/esm/lib/agent/auth/agent-auth-http.js:60 lib/esm/lib/agent/auth/agent-pow.js:41 lib/esm/lib/agent/jmap/agent-help-content.js:1 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.d.ts:14 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.d.ts:15 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.d.ts:19 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.d.ts:20 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.js:37 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.js:38 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.js:106 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.js:107 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.js:115 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.js:116 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.js:131 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.js:132 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.js:161 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.js:162 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.d.ts:2 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.d.ts:15 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.d.ts:17 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.d.ts:19 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.d.ts:20 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.d.ts:21 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.js:41 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.js:48 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.js:52 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.js:57
🌐 Network access (39)
📁 Filesystem access (50)
lib/esm/_dnt.polyfills.d.ts:39 lib/esm/_dnt.polyfills.d.ts.map:1 lib/esm/lib/agent/auth/agent-auth-http.d.ts.map:1 lib/esm/lib/agent/auth/agent-jwt.d.ts.map:1 lib/esm/lib/agent/auth/agent-pow.d.ts.map:1 lib/esm/lib/agent/jmap/agent-help-content.d.ts.map:1 lib/esm/lib/agent/jmap/agent-jmap-blob-limits.d.ts.map:1 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.d.ts.map:1 lib/esm/lib/agent/jmap/agent-jmap-blob-upload.js:5 lib/esm/lib/agent/jmap/agent-jmap-email-charset.d.ts.map:1 lib/esm/lib/agent/jmap/agent-jmap-verify.d.ts.map:1 lib/esm/lib/agent/jmap/agent-jmap.d.ts:26 lib/esm/lib/agent/jmap/agent-jmap.d.ts:33 lib/esm/lib/agent/jmap/agent-jmap.d.ts.map:1 lib/esm/lib/agent/jmap/agent-jmap.js:6 lib/esm/lib/agent/jmap/agent-jmap.js:7 lib/esm/lib/agent/jmap/agent-jmap.js:8 lib/esm/lib/agent/jmap/agent-jmap.js:145 lib/esm/lib/agent/jmap/agent-jmap.js:180 lib/esm/lib/agent/jmap/agent-vars.d.ts.map:1 lib/esm/lib/agent/jmap/help-content/auth.d.ts:1 lib/esm/lib/agent/jmap/help-content/auth.d.ts:1 lib/esm/lib/agent/jmap/help-content/auth.d.ts.map:1 lib/esm/lib/agent/jmap/help-content/auth.js:12 lib/esm/lib/agent/jmap/help-content/auth.js:13 lib/esm/lib/agent/jmap/help-content/auth.js:16 lib/esm/lib/agent/jmap/help-content/auth.js:17 lib/esm/lib/agent/jmap/help-content/auth.js:33 lib/esm/lib/agent/jmap/help-content/auth.js:33 lib/esm/lib/agent/jmap/help-content/cron.d.ts:5 lib/esm/lib/agent/jmap/help-content/cron.d.ts:5 lib/esm/lib/agent/jmap/help-content/cron.d.ts.map:1 lib/esm/lib/agent/jmap/help-content/cron.js:110 lib/esm/lib/agent/jmap/help-content/cron.js:110 lib/esm/lib/agent/jmap/help-content/index.d.ts.map:1 lib/esm/lib/agent/jmap/help-content/index.js:2 lib/esm/lib/agent/jmap/help-content/index.js:3 lib/esm/lib/agent/jmap/help-content/installation.d.ts:1 lib/esm/lib/agent/jmap/help-content/installation.d.ts:1 lib/esm/lib/agent/jmap/help-content/installation.d.ts.map:1 lib/esm/lib/agent/jmap/help-content/installation.js:37 lib/esm/lib/agent/jmap/help-content/installation.js:37 lib/esm/lib/agent/jmap/help-content/jmap-cheatsheet.d.ts.map:1 lib/esm/lib/agent/jmap/help-content/multi-account.d.ts:1 lib/esm/lib/agent/jmap/help-content/multi-account.d.ts:1 lib/esm/lib/agent/jmap/help-content/multi-account.d.ts.map:1 lib/esm/lib/agent/jmap/help-content/multi-account.js:14 lib/esm/lib/agent/jmap/help-content/multi-account.js:15 lib/esm/lib/agent/jmap/help-content/multi-account.js:19 lib/esm/lib/agent/jmap/help-content/multi-account.js:24
🔑 Env variables (24)
Audited by: codex