T03 · Remote Payload Retrieval and Execution
- Location
SKILL.md:85- Finding
Unpinned Third-Party Code Is Retrieved and Executed at Runtime
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is a coherent website launch helper, but it also enables unpinned third-party installs, recurring agents, raw credential-backed API calls, and outbound report/proxy data flows that need careful review.
Install only if you are comfortable reviewing each remote skill/tool before use, pinning versions or commits yourself, keeping Slack webhooks and API credentials out of committed config, and disabling unattended/headless runs unless they use a tightly sandboxed account with read-only credentials and explicit approvals for shell, writes, and outbound posting.
SKILL.md:85Unpinned Third-Party Code Is Retrieved and Executed at Runtime
references/weekly-seo-agent.md:14Scheduled Agent Can Run Persistently with Permission Checks Disabled
assets/weekly-seo-opencode.md:4OpenCode Agent Grants Automatic Bash Execution Alongside Web and Write Access
references/weekly-seo-agent.md:245Slack Webhook Credential Is Designed to Be Stored in Repository-Local Plaintext Configuration
SKILL.md:271Analytics May Be Routed Through an Author-Controlled Third-Party Proxy
The invocation description includes broad phrases like "ready to ship," "before I go live," and "asks for a site review," which can occur in many ordinary conversations and may cause unintended activation. The trigger guidance also mixes several general scenarios without clear exclusion conditions or negative examples to narrow when the skill should versus should not run.
The skill instructs use of npx skills without pinning an exact package version. Because npx resolves and executes code from the registry at runtime, a future compromised, typo-swapped, or breaking package version could run arbitrary code in the agent environment during listing or install workflows.
This line tells the agent to enumerate remote skill packs using unpinned npx skills add owner/repo --list. Even a read-like listing operation requires executing the skills package, so the harness is exposed to supply-chain compromise or unexpected behavior from newly published versions.
The skill includes installation of external skill packages but does not provide an upfront safety warning in the user-facing description that networked package installation may occur. Even though later sections ask for confirmation, users may invoke the skill expecting a checklist and not realize it can fetch and import third-party content into the environment.
This line leads to bulk installation of externally hosted sub-skills via npx skills add ... --skill ... without pinning the installer version or the fetched content to immutable revisions. That creates a direct remote-code and prompt-supply-chain path: a modified upstream pack can introduce malicious instructions or code into the agent workflow.
The prohibition on installing full packs is good, but the workflow still repeatedly uses unpinned npx skills add for later installs. Because these installs are conditional and happen mid-session, users may approve them without seeing that arbitrary updated upstream content will execute or be imported.
The skill directs creation of repository files such as TONE.md without clearly warning in the top-level description that it may modify the repo. Silent file creation can alter project state, contaminate commits, or introduce governance issues in environments where users expected analysis only.
The humanizer installation command uses unpinned npx skills add against a GitHub URL, which adds another remote dependency execution path. Pulling directly from a mutable repository URL increases exposure to repository compromise, tag retargeting, or malicious updates in a package that will influence later content-generation behavior.
The skill sends the target site URL to api.securityheaders.com, a third-party external service. While the transmitted data is not highly sensitive by default, this leaks user infrastructure targets and assessment activity to an external party and could be problematic for private, prelaunch, or confidential domains.
curl -sI https://example.com
curl -s "https://api.securityheaders.com/?q=https://example.com&followRedirects=on&hide=on" -I | grep -i 'x-grade'
**SEO files (Phase 5):**
Running npx unlighthouse without a pinned version executes whatever package version is current at invocation time. In an automated launch workflow, that creates supply-chain risk and can also produce nondeterministic audit behavior or break the agent unexpectedly.
The fallback directs the agent to read credentials from .env and use run_command with curl for direct API access, expanding the skill from structured tool use into arbitrary credential-backed network operations. This broadens the blast radius significantly because the agent can access secrets and make external requests outside the narrower MCP abstraction, increasing risk of misuse, overcollection, or accidental leakage.
The fallback mechanism uses credentials from .env to make direct external API calls, yet the skill provides no explicit warning that secrets will be accessed and transmitted to third-party services. In a security-sensitive agent environment, hidden secret consumption plus network egress is dangerous because users may not realize the skill can bypass higher-level integrations and operate with raw credentials.
The skill instructs the agent to transmit report content to a Slack webhook, which sends potentially sensitive operational data outside the local workspace and core reporting path. Because this happens automatically when a webhook is configured and without an explicit confirmation step, it creates an unintended data-exfiltration channel beyond the stated SEO analysis function.
Posting the Summary and Blockers sections to Slack via webhook is an external data transfer, but the skill does not clearly warn the user at execution time that report content may leave the environment. Even if intended for operational convenience, silent outbound sharing can expose internal performance issues, traffic data, or strategic SEO information to third-party systems.
This file defines an ongoing weekly monitoring agent with persistent memory files, recurring execution, and multi-service data collection, which materially exceeds the parent skill's stated purpose of a pre-launch checklist. That scope mismatch is dangerous because users may invoke a seemingly one-time launch audit skill without realizing it also establishes continued monitoring behavior and broader access to analytics, search, and reporting systems.
The skill explicitly instructs fallback to credentials stored in .env and allows posting report content to a Slack webhook, which creates a path for secret use and external data transmission without an explicit consent or scoping step at execution time. In a skill framed around site launch operations, this broadens capability into authenticated data access and outbound messaging, increasing the risk of unintended secret exposure or exfiltration if the skill is invoked in the wrong context or modified inputs steer what gets posted.
The instructions describe using credentials from .env and transmitting report data to Slack without an explicit warning, confirmation, or data-handling notice. That is dangerous because operators may not realize the skill will access sensitive tokens and send potentially confidential site performance or business data to an external service, creating avoidable secret-handling and privacy risks.
The fallback path directs the agent to make external API requests via curl using credentials from .env, but provides no guardrails for secret handling, destination validation, or user awareness of outbound data transfer. This increases the risk of inadvertent credential exposure, misuse of overly broad API tokens, or sending site data to unintended endpoints during automated runs.
The skill instructs the agent to post report content to a Slack webhook, which sends potentially sensitive operational data off-platform to an external endpoint. Even if limited to Summary and Blockers, those sections can include traffic, indexing, infrastructure, or competitive intelligence details, and the skill does not require explicit user confirmation or a disclosure warning before transmission.
The skill instructs the agent to use credentials from .env for external API access via curl or web_fetch, which creates a path for secret handling and outbound authenticated requests beyond simple local reporting. This is dangerous because it normalizes implicit secret use without constraining which credentials may be accessed, how they are scoped, or how request destinations are validated.
Referencing credentials in .env for fallback API calls without warning about secret handling or transmission risks is a genuine security weakness. It can lead users or downstream agents to treat sensitive tokens casually, increasing the chance of overbroad secret use, accidental leakage in command logs, or requests to unintended endpoints.
The skill exfiltrates generated report content to an external Slack webhook when configured, but it does not present this as a distinct data-transfer action requiring explicit user awareness or confirmation. Even if the report is operational in nature, it may contain sensitive business metrics, traffic data, incident details, or internal URLs, so silent outbound posting expands the data exposure boundary.
The Slack posting behavior is described as automatic if a webhook is configured, but the skill gives no user-facing warning that portions of the report will leave the local environment and be transmitted to Slack. That missing transparency can cause unintended disclosure of operational or analytics data to external systems or channels with broader access than expected.
The skill directs the agent to post portions of the generated report to a Slack webhook, which transmits potentially sensitive operational, analytics, and search-console-derived information to an external service. Because this happens automatically and without an explicit user-facing confirmation or clear scoping/redaction guidance, it creates a real data exfiltration and privacy risk if the report contains internal metrics, site issues, competitor analysis, or credentials-adjacent context.
The prompt authorizes fallback to curl or web_fetch using credentials stored in .env, enabling outbound authenticated requests to external services. This creates a real risk of unintended credential use, broader-than-expected data exfiltration, and unsafe handling of secrets because the prompt does not impose approval gates, destination restrictions, or masking requirements.
No suspicious patterns detected.