T08 · Insecure Dependencies
- Location
SKILL.md:42- Finding
Unpinned Remote Package Execution
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill does what it claims, but it asks agents to run mutable remote packages and load another mutable skill while also creating a database and writing credentials locally.
Review before installing. Prefer the documented curl REST API path, ask the agent to confirm before creating a database or writing any .env file, avoid --yes where possible, and do not run neon-new@latest or deno run -A unless you trust the current package and accept the local code-execution risk.
SKILL.md:42Unpinned Remote Package Execution
SKILL.md:15Mutable External Skill Retrieval Without Integrity Verification
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
@latest --yes plus the confirmed options. Always use @latest to avoid stale cached versions. --yes skips interactive prompts that would stall the agent.
npx neon-new@latest --yes --ref agent-skills --env .env.local --seed ./schema.sql
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
- Ask before running destructive seed SQL (`DROP`, `TRUNCATE`, mass `DELETE`).
- For production workloads, recommend standard Neon provisioning instead of temporary claimable databases.
- If users need long-term persistence, instruct them to open the claim URL right away.
- After writing credentials to an .env file, check that it's covered by .gitignore. If not, warn the user. Do not modify `.gitignore` without confirmation.
## REST API
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
- Ask before running destructive seed SQL (`DROP`, `TRUNCATE`, mass `DELETE`).
- For production workloads, recommend standard Neon provisioning instead of temporary claimable databases.
- If users need long-term persistence, instruct them to open the claim URL right away.
- After writing credentials to an .env file, check that it's covered by .gitignore. If not, warn the user. Do not modify `.gitignore` without confirmation.
## REST API
MCP server references in the skill manifest without version pinning are a rug-pull risk.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.
FIRST: Use the parent neon skill for a Neon overview, getting started with Neon, Neon development best practices, and more.
If the neon skill is not installed, fetch it from https://neon.com/docs/ai/skills/neon/SKILL.md or install it with:
npx skills add neondatabase/agent-skills --skill neon
The skill instructs installing a parent skill via 'npx skills add ...' without pinning a specific version. Using an unpinned npx package can expose users to supply-chain risk if a new or compromised package version is published and automatically executed.
The skill directs the agent to make an external POST request to provision a database, which transmits data to a third-party service and creates external resources. Even though the payload is minimal, any autonomous network action should be clearly disclosed and ideally confirmed by the user before execution.
curl -s -X POST "https://neon.new/api/v1/database" \
-H "Content-Type: application/json" \
-d '{"ref": "agent-skills"}'
The workflow authorizes provisioning a remote database and writing returned credentials into '.env' with only intent confirmation when the request is unambiguous. That permits autonomous external actions and local secret modification without explicit operational consent, which can violate least surprise and create security or cost exposure.
https://neon.new/api/v1/database with {"ref": "agent-skills"}.connection_string, claim_url, and expires_at from the JSON response.DATABASE_URL=<connection_string> to the project's .env (or the user's preferred file and key). Do not overwrite an existing key without confirmation.psql "$DATABASE_URL" -f seed.sql
This section shows some good safeguards, but it still implies the skill may proceed with writing credentials first and only later check repository hygiene. The dangerous aspect is not the note itself, but the broader workflow allowing sensitive file writes absent explicit consent and pre-checks.
- Ask before running destructive seed SQL (`DROP`, `TRUNCATE`, mass `DELETE`).
- For production workloads, recommend standard Neon provisioning instead of temporary claimable databases.
- If users need long-term persistence, instruct them to open the claim URL right away.
- After writing credentials to an .env file, check that it's covered by .gitignore. If not, warn the user. Do not modify `.gitignore` without confirmation.
## REST API
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.
-d '{"ref": "agent-skills"}'
| Parameter | Required | Description |
| ---------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------- |
| `ref` | Yes | Tracking tag that identifies who provisioned the database. Use `"agent-skills"` when provisioning through this skill. |
| `enable_logical_replication` | No | Enable logical replication (default: false, cannot be disabled once enabled) |
The guidance explicitly recommends '--yes' to suppress prompts so the agent can run non-interactively. In the context of provisioning infrastructure and writing secrets, suppressing prompts increases the risk of unauthorized or unexpected actions.
| Option | Alias | Description | Default |
| ----------------------- | ----- | --------------------------------------------------------------------- | -------------- |
| `--yes` | `-y` | Skip prompts, use defaults | `false` |
| `--env` | `-e` | .env file path | `./.env` |
| `--key` | `-k` | Connection string env var key | `DATABASE_URL` |
| `--prefix` | `-p` | Prefix for generated public env vars | `PUBLIC_` |
The skill tells the agent to write a database connection string into '.env' without an explicit upfront warning that local files will be modified and that secrets will be stored on disk. This can surprise users and increase the chance of accidental credential exposure, especially in repos not properly ignored by version control.
No suspicious patterns detected.