Back to skill

Security audit

Openclaw Vercel Insights

Security checks for vulnerabilities and agentic risk

Overview

This is a read-only Vercel reporting skill with broad but disclosed access to the Vercel data visible to the configured token.

Install only with a Vercel token whose read scope you are comfortable granting to this skill. Prefer an environment or secret-reference configuration over pasting the token into OpenClaw config, avoid forwarding request-log output because it may contain application secrets or user data, and pin or avoid optional external setup commands such as npx vercel@latest when a token is present.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T08 · Insecure Dependencies

Warning
Location
docs/openclaw-setup.md:76
Finding

Unpinned Remote npm Package Is Downloaded and Executed During Setup

Content
View full analysis
Remediation
View remediation
metrics schema ``` 2. Do not rely on a mutable npm distribution tag in security-sensitive setup instructions. Review and deliberately update the pinned version when required. 3. Where practical, install through a lockfile-backed workflow and verify package integrity or provenance before execution. 4. Explicitly remove unrelated credentials from the command environment. If the diagnostic does not need the token, use: ```bash env -u VERCEL_TOKEN npx --yes vercel@ metrics schema ``` 5. If the diagnostic requires the Vercel token, disclose that the downloaded package receives the credential and advise using a narrowly scoped, short-lived token. 6. Prefer implementing an equivalent diagnostic through this Skill's existing fixed-endpoint, redirect-disabled HTTP client. That would avoid introducing an additional package-execution boundary and preserve the existing credential-redaction controls. 7. Consider changing the documentation to download or install the pinned package separately, verify it, and only then execute it, rather than combining retrieval and execution in one command. ]]>
Vulnerability Patterns
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (144)

Credential Access

High
Category
Privilege Escalation
Confidence
80% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · CHANGELOG.md (reported line 343)May include surrounding context.

md
`extract_zipped_paths()`, fixed in **2.33.0**. The three that a reader is more
  likely to have heard of are all older: the `Proxy-Authorization` leak
  (GHSA-j8r2-6x86-q33q, fixed 2.31.0), a `Session` not honouring `verify=False`
  on later requests (GHSA-9wx4-h78v-vm56, 2.32.0), and the `.netrc` credential
  leak via malicious URLs (GHSA-9hjg-9r4m-mvj7, 2.32.4).

  A floor of 2.32.4 would therefore have looked sufficient and been wrong, which

Tp4

High
Category
MCP Tool Poisoning
Confidence
94% confidence
Finding

The description presents a read-only skill centered on site errors, traffic, speed, logs, failing requests, page views, visitors, referrers, top pages, and Core Web Vitals. The code chunk instead tests a broader 'any metric' capability for the Vercel observability API. It explicitly states the client can query every Vercel metric, not only Speed Insights, and includes real metric IDs for function invocation counts, firewall actions, image transformations, ISR read units, and other observability metrics. That is a materially broader capability than the declared description. While this is still read-only and Vercel-related, the primary behavior shown is generic observability metric querying rather than the narrower reporting scope described, so this should be flagged as a mismatch.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The declared description says the skill reports Vercel site errors, traffic, speed, logs, requests, page views, visitors, top pages, referrers, and Core Web Vitals in a read-only reporting role. The supplied code does not implement that broad reporting behavior. Instead, it is a test module specifically for performance budget handling in CI: parsing NAME=VALUE budget strings, rejecting invalid or duplicate budgets, comparing measured vitals against thresholds, returning a distinct nonzero exit code when a budget is exceeded, and ensuring machine-readable JSON/report output behavior. While it does touch Core Web Vitals data, its primary purpose is budget enforcement/testing, not the declared observability/reporting functionality. This is a material mismatch in purpose and capabilities.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

This chunk does not look like implementation of a read-only Vercel site error/traffic/speed reporting skill; it is primarily automated tests for a CLI. The tested behavior strongly supports read-only Web Analytics reporting (top pages, visitors, referrers, events, trends, filters, overview) and some mention of request logs/Speed Insights as CLI surfaces, but the supplied code itself does not demonstrate the declared breadth of capabilities: runtime error logs, failing requests, and Core Web Vitals. Because the declared purpose centers on reporting errors, traffic, and speed, while the actual code shown is test/wiring code concentrated on analytics queries, the description does not accurately represent this specific code chunk.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The declared purpose is a read-only Vercel site analytics/log reporting skill. The supplied code does not implement or invoke any Vercel API access, log retrieval, traffic analysis, performance reporting, or site diagnostics. Instead, it is a test file concerned with packaging/runtime behavior: launching child processes, setting environment variables, testing module/script entrypoints, and verifying that the package's own http module does not shadow the standard library. This is a materially different purpose and capability set from the declared monitoring/reporting functionality.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The declared description is about read-only reporting of actual Vercel site observability data such as runtime errors, requests, traffic, visitors, top pages, referrers, and Core Web Vitals. The supplied code chunk does not retrieve or summarize any such data. Instead, it tests a --list-metrics command that asks the API what metrics are available to query for an account via the observability schema endpoint. That is a materially different primary purpose: schema discovery/introspection, not site reporting. While it remains read-only and still concerns Vercel observability, the behavior shown is not accurately represented by the declared purpose.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The declared description says the skill reports Vercel site operational and analytics data in a read-only manner. The supplied code chunk does not fetch, analyze, or report any Vercel site data. Instead, it is a Python test file focused on local runtime behavior: simulating absence of the requests package, invoking python -m vercel_insights in subprocesses, inspecting stderr/return codes, and validating traceback behavior. These are materially different behaviors and purposes from the declared skill. While this may be part of the broader project's test suite, this specific code chunk does not implement the stated reporting functionality.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The declared description is for a read-only Vercel observability/analytics skill. The supplied code does not perform that function. Instead, it is a unit test file focused on validating helper behavior in an OData module: escaping quotes, building eq/in clauses, combining filters, ensuring certain operators are not emitted, and formatting JSON dimensions. While such utilities could be supporting pieces of a larger analytics integration, this specific chunk neither accesses Vercel data nor reports any site metrics or logs. Therefore, the code chunk’s actual behavior does not accurately represent the declared purpose.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The declared description says the skill reports operational and analytics data from a Vercel site in a read-only manner. The supplied code does not implement reporting of errors, logs, traffic, visitors, referrers, or web vitals; instead, it is a test file focused on internal CLI scoping mechanics for Speed Insights/Web Analytics requests. It checks how ownerId and projectIds are sourced, whether extra API lookups are made, how dry-run output is formatted, and how team slug/team ID inputs are handled. While this is related to Vercel analytics infrastructure, the chunk’s primary behavior is configuration and request-shape validation, not end-user reporting of site telemetry. Therefore the description does not accurately represent this code chunk.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The declared description focuses on a read-only skill that reports operational metrics and logs for a Vercel site (errors, traffic, speed, web vitals, etc.). The supplied code chunk does not implement those reporting features directly; instead it is a test file centered on project discovery and identifier resolution. It verifies listing projects, parsing project-list responses, mapping names to IDs for speed queries, skipping lookups in certain cases, and error messaging when no project is specified. While these behaviors may support the broader reporting tool, this chunk’s actual purpose is materially different from the declared end-user functionality. There is no code here fetching runtime error logs, traffic summaries, referrers, visitors, or page-speed reports as the primary behavior.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The declared description says the skill reports Vercel site errors, traffic, and speed in a read-only way. The supplied code chunk instead consists entirely of tests for security properties of the package. While the tests reference the same Vercel analytics/logging domains and reinforce read-only access, the actual code's purpose is to verify allowed endpoints, methods, token secrecy, redirect handling, and injection resistance. That is materially different from implementing a user-facing reporting skill. This is therefore a description/behavior mismatch.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The declared description says the skill reports operational and analytics data for a Vercel site in a read-only manner. The supplied code chunk instead is a unit/integration test file for documentation drift. It reads markdown and source files, imports constants such as BASE_URL and OPERATIONS, and asserts that docs correctly describe allowlisted endpoints, hosts, counts, exit codes, and quoted messages. There is no code here that contacts Vercel, fetches runtime logs, aggregates traffic, analyzes failing requests, or reports Core Web Vitals. This is a material purpose mismatch, not merely a supporting implementation detail.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The declared description says the skill reports Vercel operational metrics and logs in a read-only manner. However, the supplied code chunk contains only tests for SKILL.md and packaging/manifest correctness. It inspects documentation text, environment-variable declarations, endpoint listings, version metadata, launcher executability, and setup guidance. There is no code here that queries Vercel for errors, traffic, speed, page views, referrers, or Core Web Vitals. This is a materially different primary purpose, so the description does not accurately represent the behavior shown in the provided code chunk.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The declared description says the skill reports Vercel analytics and error information read-only. The supplied code does not implement fetching or presenting site errors, traffic, speed, top pages, referrers, or Core Web Vitals as its primary function. Instead, it is a test suite focused on defensive handling of untrusted API responses and log content, terminal/CSV injection prevention, credential redaction, and response-validation edge cases. While these behaviors may support a Vercel reporting tool internally, this chunk’s actual purpose is materially different from the declared end-user reporting functionality, so this is a mismatch.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The declared description says the skill is a read-only Vercel analytics and error-reporting tool that surfaces logs, traffic, failing requests, visitors, referrers, and Core Web Vitals. The supplied code does not fetch or report any Vercel data at all. Instead, it defines a Budget model, parses metric=limit inputs, evaluates measured values against thresholds, and determines whether any budget failed, with a special exit code for exceeded budgets in CI. This is a materially different purpose: budget enforcement/gating rather than site observability reporting. While the metrics mentioned overlap with performance data such as Core Web Vitals, the implemented behavior is an undeclared capability and not just a supporting detail.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

The code chunk is read-only and Vercel-related, which aligns at a high level, but the declared description is materially broader than the actual behavior shown. This module only supports the Web Analytics API surface, specifically datasets 'visits' and 'events', with dimensions such as requestPath, referrerHostname, country, browserName, and metrics like pageviews, visitors, and count. It builds requests to a 'web_analytics' operation and normalizes count/aggregate analytics responses. There is no code for runtime error logs, application logs, failing requests, HTTP 500 diagnostics, or Core Web Vitals/speed insights retrieval. Mentions of Speed Insights are only for validating naming differences, not for querying speed data. Therefore the supplied code does not accurately represent the broader declared purpose.

Content

No source excerpt is available for this finding.

Credential Access

High
Category
Privilege Escalation
Confidence
84% confidence
Finding

The skill requires a powerful Vercel access token and the document acknowledges that an account-scoped token can read every project, analytics dataset, and request log visible to that account. This is not malicious by itself, but it is a genuine sensitive-capability issue because compromise or misuse of the skill exposes broad operational data across projects.

Content

Scanner excerpt · SKILL.md (reported line 22)May include surrounding context.

md
envVars:
      - name: VERCEL_TOKEN
        required: true
        description: Vercel access token, read scope is sufficient.
      - name: VERCEL_PROJECT_ID
        required: false
        description: >-

Credential Access

High
Category
Privilege Escalation
Confidence
82% confidence
Finding

The environment-variable interface includes --token override support and documents use of a sensitive access token for broad read access. Allowing credential input through CLI arguments increases the risk of exposure via process listings, shell history, or automation logs, and the account-scoped nature of the token amplifies the impact.

Content

Scanner excerpt · SKILL.md (reported line 840)May include surrounding context.

md
| Variable | Required | Meaning |
| --- | --- | --- |
| `VERCEL_TOKEN` | yes, except for `--dry-run` | Vercel access token, read scope is enough. Overridable with `--token`. |
| `VERCEL_PROJECT_ID` | yes, except on a Speed Insights preset run with `--all` | Project ID or project name. Overridable with `--project`. |
| `VERCEL_TEAM_ID` | no | Team ID for a team-owned project. Overridable with `--team`. |
| `VERCEL_TEAM_SLUG` | no | Team slug instead of the ID. Never set both; it is an error. |

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 1005)May include surrounding context.

md
- `README.md` for setup and worked examples.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 1008)May include surrounding context.

md
- `docs/cli-contract.md` for the authoritative interface.

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · docs/api-notes.md (reported line 32)May include surrounding context.

md
## Authentication

`Authorization: Bearer <token>` using a Vercel access token. Project and team are
passed as query parameters, not headers.

## Query parameters

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · docs/api-notes.md (reported line 692)May include surrounding context.

md
## Authentication

`Authorization: Bearer <token>` using a Vercel access token. Project and team are
passed as query parameters, not headers.

## Query parameters

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · docs/api-notes.md (reported line 712)May include surrounding context.

md
## Authentication

`Authorization: Bearer <token>` using a Vercel access token. Project and team are
passed as query parameters, not headers.

## Query parameters

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · docs/api-notes.md (reported line 961)May include surrounding context.

md
## Authentication

`Authorization: Bearer <token>` using a Vercel access token. Project and team are
passed as query parameters, not headers.

## Query parameters

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · examples/example_outputs.md (reported line 1223)May include surrounding context.

md
## Authentication

`Authorization: Bearer <token>` using a Vercel access token. Project and team are
passed as query parameters, not headers.

## Query parameters