Versioned security assessment

Report ID: SA-054623C1

7/7/2026, 4:10:04 AM

environment-setup security assessment v4

Skill Security Certification Report

Audit History
Audit model: codex Historical report
Skill name
environment-setup
Version
v4
Maintainer
supercent-io
Coverage
2 Files scanned · 378 Lines analyzed
Policy version
Unavailable

Highest confirmed finding severity

High

24 confirmed security findings require 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 is a legitimate environment configuration guide, but it intentionally handles .env files, process.env values, database URLs, and cloud credentials. Most external-command, network, and prompt-injection alerts are false positives from Markdown fences, placeholders, references, or field names. The main residual risks are secret-bearing file access, hardcoded example credentials, and examples that could encourage logging sensitive values.

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 · 378 Lines analyzed

43 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 14 evidence locations

Filesystem access

May read or write local files.

Not recorded by this audit

Env variables

May read values from the process environment.

Observed in 38 evidence locations

External commands

May invoke commands or programs outside the Skill.

Observed in 27 evidence locations

Capability review items (19)
High
AWS credential environment variables
AWS_ACCESS_KEY_ID=AKIAXXXXXXXX
The template explicitly includes AWS credential variable names and placeholder values. They are not live keys, but users could replace them with real secrets in files.
High
AWS credential environment variables
AWS_SECRET_ACCESS_KEY=xxxxxxxx
The template explicitly includes AWS credential variable names and placeholder values. They are not live keys, but users could replace them with real secrets in files.
High
Database connection strings
DATABASE_URL=postgresql://user:password@localhost:5432/myapp
The example includes a database URL with a password-like value that users may copy into environment files. Connection strings often contain credentials.
High
Database connection strings
// console.log(env.DATABASE_URL); // Type-safe!
The usage comment suggests printing DATABASE_URL, which often contains credentials. Even as a comment, it encourages an unsafe debugging pattern.
High
Database connection strings
url: process.env.DATABASE_URL!,
The configuration reads DATABASE_URL from process.env, which often contains database credentials. This is legitimate but sensitive access.
High
Database connection strings
- DATABASE_URL=postgresql://postgres:password@db:5432/myapp
The example includes a database URL with a password-like value that users may copy into environment files. Connection strings often contain credentials.
High
Generic API/secret keys
STRIPE_SECRET_KEY=sk_test_xxx
The template includes a Stripe secret key variable with a secret-like placeholder. It is not a live key, but it models secret placement in env files.
Low
Environment variable access (bracket notation)
if (!process.env[envVar]) {
The loop dynamically checks process.env entries that include required secret names. It does not print values, but it still accesses sensitive environment state.
Low
Environment variable access (dot notation)
url: process.env.DATABASE_URL!,
The example reads a secret-bearing process.env value for application configuration. This is expected for the skill, but it is real sensitive environment access.
Low
Environment variable access (dot notation)
accessSecret: process.env.JWT_ACCESS_SECRET!,
The example reads a secret-bearing process.env value for application configuration. This is expected for the skill, but it is real sensitive environment access.
Low
Environment variable access (dot notation)
refreshSecret: process.env.JWT_REFRESH_SECRET!,
The example reads a secret-bearing process.env value for application configuration. This is expected for the skill, but it is real sensitive environment access.
Low
Environment variable object
export const env = envSchema.parse(process.env);
The example parses or reads process.env, including secret-bearing variables. This is legitimate configuration code but a real sensitive data surface.
Low
Environment variable object
const env = envSchema.parse(process.env);
The example parses or reads process.env, including secret-bearing variables. This is legitimate configuration code but a real sensitive data surface.
Low
Environment variable object
url: process.env.DATABASE_URL!,
The example parses or reads process.env, including secret-bearing variables. This is legitimate configuration code but a real sensitive data surface.
Low
Environment variable object
accessSecret: process.env.JWT_ACCESS_SECRET!,
The example parses or reads process.env, including secret-bearing variables. This is legitimate configuration code but a real sensitive data surface.
Low
Environment variable object
refreshSecret: process.env.JWT_REFRESH_SECRET!,
The example parses or reads process.env, including secret-bearing variables. This is legitimate configuration code but a real sensitive data surface.
Low
Environment variable object
if (!process.env[envVar]) {
The example parses or reads process.env, including secret-bearing variables. This is legitimate configuration code but a real sensitive data surface.
Low
dotenv library
import dotenv from 'dotenv';
The example imports or runs dotenv, which loads .env contents into process.env. That is intended, but .env files commonly contain secrets.
Low
dotenv library
dotenv.config();
The example imports or runs dotenv, which loads .env contents into process.env. That is intended, but .env files commonly contain secrets.

Risk findings

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

Confirmed security concerns (24)

RISK-001 High
Environment file access
description: Configure and manage development, staging, and production environments. Use when settin
The skill directs creation, loading, or use of .env-related files that commonly contain secrets. The guidance is legitimate but sensitive by design.
RISK-002 High
Environment file access
### Step 1: .env File Structure
The skill directs creation, loading, or use of .env-related files that commonly contain secrets. The guidance is legitimate but sensitive by design.
RISK-003 High
Environment file access
**.env.example** (template):
The skill directs creation, loading, or use of .env-related files that commonly contain secrets. The guidance is legitimate but sensitive by design.
RISK-004 High
Environment file access
**.env.local** (per developer):
The skill directs creation, loading, or use of .env-related files that commonly contain secrets. The guidance is legitimate but sensitive by design.
RISK-005 High
Environment file access
**.env.production**:
The skill directs creation, loading, or use of .env-related files that commonly contain secrets. The guidance is legitimate but sensitive by design.
RISK-006 High
Environment file access
// Load .env file
The skill directs creation, loading, or use of .env-related files that commonly contain secrets. The guidance is legitimate but sensitive by design.
RISK-007 High
Environment file access
export const env = envSchema.parse(process.env);
The skill directs creation, loading, or use of .env-related files that commonly contain secrets. The guidance is legitimate but sensitive by design.
RISK-008 High
Environment file access
const env = envSchema.parse(process.env);
The skill directs creation, loading, or use of .env-related files that commonly contain secrets. The guidance is legitimate but sensitive by design.
RISK-009 High
Environment file access
url: process.env.DATABASE_URL!,
The skill directs creation, loading, or use of .env-related files that commonly contain secrets. The guidance is legitimate but sensitive by design.
RISK-010 High
Environment file access
accessSecret: process.env.JWT_ACCESS_SECRET!,
The skill directs creation, loading, or use of .env-related files that commonly contain secrets. The guidance is legitimate but sensitive by design.
RISK-011 High
Environment file access
refreshSecret: process.env.JWT_REFRESH_SECRET!,
The skill directs creation, loading, or use of .env-related files that commonly contain secrets. The guidance is legitimate but sensitive by design.
RISK-012 High
Environment file access
- .env.local
The skill directs creation, loading, or use of .env-related files that commonly contain secrets. The guidance is legitimate but sensitive by design.
RISK-013 High
Environment file access
├── .env # Local (gitignore)
The skill directs creation, loading, or use of .env-related files that commonly contain secrets. The guidance is legitimate but sensitive by design.
RISK-014 High
Environment file access
├── .env.local # Per developer (gitignore)
The skill directs creation, loading, or use of .env-related files that commonly contain secrets. The guidance is legitimate but sensitive by design.
RISK-015 High
Environment file access
├── .env.production # Production (gitignore or vault)
The skill directs creation, loading, or use of .env-related files that commonly contain secrets. The guidance is legitimate but sensitive by design.
RISK-016 High
Environment variant files
**.env.local** (per developer):
The skill instructs use of .env.local or .env.production, which are commonly secret-bearing environment variants. They require strict handling and redaction.
RISK-017 High
Environment variant files
**.env.production**:
The skill instructs use of .env.local or .env.production, which are commonly secret-bearing environment variants. They require strict handling and redaction.
RISK-018 High
Environment variant files
- .env.local
The skill instructs use of .env.local or .env.production, which are commonly secret-bearing environment variants. They require strict handling and redaction.
RISK-019 High
Environment variant files
├── .env.local # Per developer (gitignore)
The skill instructs use of .env.local or .env.production, which are commonly secret-bearing environment variants. They require strict handling and redaction.
RISK-020 High
Environment variant files
├── .env.production # Production (gitignore or vault)
The skill instructs use of .env.local or .env.production, which are commonly secret-bearing environment variants. They require strict handling and redaction.
RISK-021 High
Broad Tool Access for Secret File Management
The skill requests Read, Write, Edit, and Bash while its description says it handles .env files. This combination can read or change secret-bearing files without strict confirmation.
The file explicitly combines broad tool permissions with environment-file management. This is legitimate for the skill but high impact if used on real secrets.
RISK-022 High
Default Credentials in Examples
The examples include password-like database values and a Docker POSTGRES_PASSWORD value of password. Users may copy these defaults into shared environments.
The cited examples contain password-like literals in environment configuration. This is a clear unsafe-default pattern even if the values are placeholders.
RISK-023 Medium
Secret-Bearing Database URL Logging Example
The usage section includes a commented console log for env.DATABASE_URL. Copying this pattern can expose database credentials in logs.
The log call is commented out, so the immediate risk is lower. The semantic risk is that the example normalizes logging a secret-bearing value.
RISK-024 Medium
Permissive CORS Example With Credentials
The development configuration allows any origin while credentials are enabled. If copied beyond local development, this can weaken browser security controls.
The example is labeled development, so legitimate local use is possible. The combination of wildcard origin and credentials is still risky if reused.

Remediation

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

  1. FIX-001
    High
    Broad access to secret-bearing environment files
    Require confirmation before reading or writing real .env files, and instruct assistants to redact secret values in all output.
  2. FIX-002
    High
    Default credentials appear in examples
    Replace password-like values with non-secret placeholders and state that production values must come from a vault.
  3. FIX-003
    Medium
    Database URL logging is suggested in a usage comment
    Remove the logging example or replace it with a masked validation message.
  4. FIX-004
    Medium
    Examples include broad Read, Write, Edit, and Bash tool access
    Document that Bash and file writes are optional and should be scoped to configuration files only.

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.

Static false positives ignored (2)
High
LLM role tokens injection
SMTP_USER: z.string().email(),
Force-confirmed blocker/high static finding; AI dismissal overridden.
High
LLM role tokens injection
POSTGRES_USER: postgres
Force-confirmed blocker/high static finding; AI dismissal overridden.

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