Versioned security assessment

Report ID: SA-C5DA72CF

7/8/2026, 4:03:06 AM

email-notify security assessment v8

Skill Security Certification Report

Audit History
Audit model: codex Historical report
Skill name
email-notify
Version
v8
Maintainer
caopulan
Coverage
2 Files scanned · 282 Lines analyzed
Policy version
Unavailable

Highest confirmed finding severity

High

1 confirmed security finding requires attention.

Installation context

Historical evidence

This report may not describe the currently installable artifact. Open the current Skill page for install guidance.

Open current Skill page

This report does not block or authorize the manifest or ZIP.

The skill intentionally sends SMTP email through user-configured settings and reads SMTP credentials from environment variables. I confirmed the outbound email capability and shell-profile credential guidance, and dismissed markdown backtick and system reconnaissance matches as false positives.

Report position

Historical report

Open audit history before using this report to install.

Audit attestation

Not attestable

The required immutable binding is incomplete.

Human verification

Not verified

No human verification is recorded for this report.

Coverage

2 Files scanned · 282 Lines analyzed

42 items shown for review

Limitations

This report does not claim runtime or sandbox execution and does not prove the absence of side effects.

Evidence chain

Follow the evidence from source binding to the install contract. Available evidence supports verification; it is not a safety guarantee.

  1. Source

    Binding unavailable

  2. Artifact

    Identity incomplete

  3. Audit

    Complete

  4. Install contract

    Open manifest to verify

    Open manifest

Capabilities observed

Observed means this report recorded supporting evidence. Not recorded does not prove that a capability is absent.

Contains scripts

May execute code included with the Skill.

Not recorded by this audit

Network access

May connect to external services.

Observed in 33 evidence locations

Filesystem access

May read or write local files.

Observed in 2 evidence locations

Env variables

May read values from the process environment.

Observed in 8 evidence locations

External commands

May invoke commands or programs outside the Skill.

Observed in 12 evidence locations

Capability review items (41)
High
Hidden file in home directory
Add the following lines to `~/.bashrc` (Linux) or `~/.zshrc` (macOS):
The setup instructions direct users to put exported SMTP settings, including an email password, in shell startup files. This can persist sensitive credentials in plaintext in hidden home-directory files.
Medium
Email sending capability
import smtplib
The helper implements outbound SMTP email and can send task metadata and summaries to configured recipients. This is intended behavior, but it is a real network data-transfer capability.
Medium
Email sending capability
description="Send an SMTP email notification for a Codex task."
The helper implements outbound SMTP email and can send task metadata and summaries to configured recipients. This is intended behavior, but it is a real network data-transfer capability.
Medium
Email sending capability
smtp_host = os.environ.get("CODEX_EMAIL_SMTP_HOST")
The helper implements outbound SMTP email and can send task metadata and summaries to configured recipients. This is intended behavior, but it is a real network data-transfer capability.
Medium
Email sending capability
smtp_port_raw = os.environ.get("CODEX_EMAIL_SMTP_PORT", "587")
The helper implements outbound SMTP email and can send task metadata and summaries to configured recipients. This is intended behavior, but it is a real network data-transfer capability.
Medium
Email sending capability
smtp_user = os.environ.get("CODEX_EMAIL_USERNAME")
The helper implements outbound SMTP email and can send task metadata and summaries to configured recipients. This is intended behavior, but it is a real network data-transfer capability.
Medium
Email sending capability
smtp_password = os.environ.get("CODEX_EMAIL_PASSWORD")
The helper implements outbound SMTP email and can send task metadata and summaries to configured recipients. This is intended behavior, but it is a real network data-transfer capability.
Medium
Email sending capability
smtp_from = os.environ.get("CODEX_EMAIL_FROM")
The helper implements outbound SMTP email and can send task metadata and summaries to configured recipients. This is intended behavior, but it is a real network data-transfer capability.
Medium
Email sending capability
smtp_to_raw = os.environ.get("CODEX_EMAIL_TO")
The helper implements outbound SMTP email and can send task metadata and summaries to configured recipients. This is intended behavior, but it is a real network data-transfer capability.
Medium
Email sending capability
if not smtp_host:
The helper implements outbound SMTP email and can send task metadata and summaries to configured recipients. This is intended behavior, but it is a real network data-transfer capability.
Medium
Email sending capability
sys.stderr.write("Missing CODEX_EMAIL_SMTP_HOST.\n")
The helper implements outbound SMTP email and can send task metadata and summaries to configured recipients. This is intended behavior, but it is a real network data-transfer capability.
Medium
Email sending capability
if not smtp_from:
The helper implements outbound SMTP email and can send task metadata and summaries to configured recipients. This is intended behavior, but it is a real network data-transfer capability.
Medium
Email sending capability
if not smtp_to_raw:
The helper implements outbound SMTP email and can send task metadata and summaries to configured recipients. This is intended behavior, but it is a real network data-transfer capability.
Medium
Email sending capability
if smtp_user and not smtp_password:
The helper implements outbound SMTP email and can send task metadata and summaries to configured recipients. This is intended behavior, but it is a real network data-transfer capability.
Medium
Email sending capability
if smtp_password and not smtp_user:
The helper implements outbound SMTP email and can send task metadata and summaries to configured recipients. This is intended behavior, but it is a real network data-transfer capability.
Medium
Email sending capability
smtp_port = int(smtp_port_raw)
The helper implements outbound SMTP email and can send task metadata and summaries to configured recipients. This is intended behavior, but it is a real network data-transfer capability.
Medium
Email sending capability
sys.stderr.write("CODEX_EMAIL_SMTP_PORT must be an integer.\n")
The helper implements outbound SMTP email and can send task metadata and summaries to configured recipients. This is intended behavior, but it is a real network data-transfer capability.
Medium
Email sending capability
recipients = _split_recipients(smtp_to_raw)
The helper implements outbound SMTP email and can send task metadata and summaries to configured recipients. This is intended behavior, but it is a real network data-transfer capability.
Medium
Email sending capability
msg["From"] = smtp_from
The helper implements outbound SMTP email and can send task metadata and summaries to configured recipients. This is intended behavior, but it is a real network data-transfer capability.
Medium
Email sending capability
print("SMTP host:", smtp_host)
The helper implements outbound SMTP email and can send task metadata and summaries to configured recipients. This is intended behavior, but it is a real network data-transfer capability.
Medium
Email sending capability
print("SMTP port:", smtp_port)
The helper implements outbound SMTP email and can send task metadata and summaries to configured recipients. This is intended behavior, but it is a real network data-transfer capability.
Medium
Email sending capability
print("from:", smtp_from)
The helper implements outbound SMTP email and can send task metadata and summaries to configured recipients. This is intended behavior, but it is a real network data-transfer capability.
Medium
Email sending capability
client: smtplib.SMTP = smtplib.SMTP_SSL(
The helper implements outbound SMTP email and can send task metadata and summaries to configured recipients. This is intended behavior, but it is a real network data-transfer capability.
Medium
Email sending capability
smtp_host, smtp_port, timeout=args.timeout
The helper implements outbound SMTP email and can send task metadata and summaries to configured recipients. This is intended behavior, but it is a real network data-transfer capability.
Medium
Email sending capability
client = smtplib.SMTP(smtp_host, smtp_port, timeout=args.timeout)
The helper implements outbound SMTP email and can send task metadata and summaries to configured recipients. This is intended behavior, but it is a real network data-transfer capability.
Medium
Email sending capability
if smtp_user:
The helper implements outbound SMTP email and can send task metadata and summaries to configured recipients. This is intended behavior, but it is a real network data-transfer capability.
Medium
Email sending capability
client.login(smtp_user, smtp_password)
The helper implements outbound SMTP email and can send task metadata and summaries to configured recipients. This is intended behavior, but it is a real network data-transfer capability.
Medium
Email sending capability
except smtplib.SMTPException as exc:
The helper implements outbound SMTP email and can send task metadata and summaries to configured recipients. This is intended behavior, but it is a real network data-transfer capability.
Medium
Python email libraries
import smtplib
The helper implements outbound SMTP email and can send task metadata and summaries to configured recipients. This is intended behavior, but it is a real network data-transfer capability.
Medium
Python email libraries
client: smtplib.SMTP = smtplib.SMTP_SSL(
The helper implements outbound SMTP email and can send task metadata and summaries to configured recipients. This is intended behavior, but it is a real network data-transfer capability.
Medium
Python email libraries
client = smtplib.SMTP(smtp_host, smtp_port, timeout=args.timeout)
The helper implements outbound SMTP email and can send task metadata and summaries to configured recipients. This is intended behavior, but it is a real network data-transfer capability.
Medium
Python email libraries
except smtplib.SMTPException as exc:
The helper implements outbound SMTP email and can send task metadata and summaries to configured recipients. This is intended behavior, but it is a real network data-transfer capability.
Medium
Email sending capability
description: Send SMTP email notifications after Codex completes a task. Use when one Codex or Claud
The documentation instructs users to configure SMTP email delivery for task notifications. This confirms the skill has intentional outbound email behavior.
Medium
Email sending capability
Send an email notification after each Codex task. Use the helper script to resolve the project name
The documentation instructs users to configure SMTP email delivery for task notifications. This confirms the skill has intentional outbound email behavior.
Medium
Email sending capability
export CODEX_EMAIL_SMTP_HOST="smtp.example.com"
The documentation instructs users to configure SMTP email delivery for task notifications. This confirms the skill has intentional outbound email behavior.
Medium
Email sending capability
export CODEX_EMAIL_SMTP_PORT="587"
The documentation instructs users to configure SMTP email delivery for task notifications. This confirms the skill has intentional outbound email behavior.
Medium
Email sending capability
If your SMTP server does not require auth, leave `CODEX_EMAIL_USERNAME` and `CODEX_EMAIL_PASSWORD` u
The documentation instructs users to configure SMTP email delivery for task notifications. This confirms the skill has intentional outbound email behavior.
Medium
Email sending capability
Set `CODEX_EMAIL_USE_SSL` to `true` for SMTPS (typically port 465) and `CODEX_EMAIL_USE_TLS` to `tru
The documentation instructs users to configure SMTP email delivery for task notifications. This confirms the skill has intentional outbound email behavior.
Medium
Hidden file access
Add the following lines to `~/.bashrc` (Linux) or `~/.zshrc` (macOS):
The setup instructions direct users to put exported SMTP settings, including an email password, in shell startup files. This can persist sensitive credentials in plaintext in hidden home-directory files.
Low
Python environment access
smtp_user = os.environ.get("CODEX_EMAIL_USERNAME")
The script reads SMTP account credentials from environment variables. This is expected for SMTP login, but access to credential material is security-sensitive.
Low
Python environment access
smtp_password = os.environ.get("CODEX_EMAIL_PASSWORD")
The script reads SMTP account credentials from environment variables. This is expected for SMTP login, but access to credential material is security-sensitive.

Risk findings

Confirmed security concerns are separated from items that still need review.

Confirmed security concerns (1)

RISK-001 High
Plaintext SMTP Credential Storage Guidance
The setup guide recommends exporting SMTP settings, including CODEX_EMAIL_PASSWORD, from shell startup files. This can persist an email password in plaintext and expose it to future shell sessions.
SKILL.md directs users to edit ~/.bashrc or ~/.zshrc and includes CODEX_EMAIL_PASSWORD in the exported variables. That is clear evidence of plaintext credential storage guidance.

Remediation

Suggested fixes recorded by this audit. Applying them is the maintainer’s responsibility.

  1. FIX-001
    High
    SMTP credentials are documented for shell startup files.
    Recommend a dedicated secret manager or a restricted-permission env file instead of exporting CODEX_EMAIL_PASSWORD globally.
  2. FIX-002
    Medium
    Task summaries can be sent outside the local workspace by email.
    Keep notifications minimal, sanitize summaries, and document that secrets and private data must not be included.
  3. FIX-003
    Medium
    Outbound SMTP delivery depends on user-provided recipients and server settings.
    Require explicit user opt-in before first use and encourage dry-run verification of recipients and transport mode.

Expert evidence

Immutable subject identity, scanner metadata, dismissed matches, and source-level evidence.

Artifact subject

Marketplace commit
Unavailable
Content hash
Unavailable
Tree hash
Unavailable
Skill path
Unavailable
Audit payload hash
Unavailable

Analysis metadata

Audit model: codex

Analysis state: Complete

Scope is limited to the recorded files, lines, methods, and evidence. No runtime or sandbox execution is claimed.

Verify and export

The manifest and lockfile bind install artifacts to cryptographic hashes. This integrity claim is separate from the security assessment.

Audit attestation: not_attestable