Back to skill

Security audit

Picsee Short Link

Security checks for vulnerabilities and agentic risk

Overview

This is a coherent PicSee MCP documentation skill, but users should understand it can create, edit, delete, and analyze PicSee links after OAuth authorization.

Install only if you are comfortable connecting your agent to PicSee and granting OAuth user:read/user:write. Prefer the direct Streamable HTTP MCP setup; avoid the npx bridge unless needed, and pin or control the bridge dependency in managed environments. Confirm any edit or delete operation before allowing the agent to change account links, and do not shorten URLs or render charts that contain secrets, private identifiers, signed parameters, or sensitive analytics.

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 (2)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:42
Finding
Unpinned npm Bridge Is Automatically Downloaded and Executed<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:42-47` **Additional Location**: `README.md:153-161` **Vulnerability Type**: Unpinned third-party dependency execution **Risk Level**: Medium ### Vulnerable Code ```json { "mcpServers": { "picsee-short-link": { "command": "npx", "args": ["-y", "mcp-remote", "https://api.picsee.io/mcp"] } } } ``` ### Technical Analysis The recommended configuration invokes `npx` with the `-y` option and references `mcp-remote` without an exact version or integrity constraint. When the MCP client starts this server, npm may download and execute the version currently resolved by the package registry. The effective locally executed code can therefore change after the Skill has been reviewed. Although the bridge is only necessary for clients that do not support Streamable HTTP natively, the instructions do not restrict its use to a reviewed version or require integrity verification. This is a supply-chain weakness rather than evidence that the current `mcp-remote` package is malicious. ### Attack Path 1. An attacker compromises the npm package, a maintainer account, or the relevant package distribution channel. 2. The attacker publishes a malicious release under the package name resolved by `npx`. 3. A user installs or starts the MCP configuration recommended by the Skill. 4. `npx -y` retrieves the mutable package version without an interactive confirmation. 5. The malicious package executes under the operating-system identity of the MCP client. 6. The package can access resources available to that process, potentially including local files, environment variables, MCP configuration, and credentials managed or exposed by the client. ### Impact Assessment Successful exploitation could provide arbitrary local code execution with the privileges of the user running the MCP client. The precise scope depends on the host environment and sandboxing, but it may include access to user-readable f ...[truncated 226 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Prefer native MCP Streamable HTTP support and connect directly to `https://api.picsee.io/mcp`. 2. If a stdio bridge is required, pin an exact reviewed version, for example `mcp-remote@<reviewed-version>`. 3. Install the dependency through a lockfile-controlled project rather than downloading it dynamically on each launch. 4. Verify package integrity and provenance before deployment. 5. Disable automatic dependency updates in production configurations. 6. Run the bridge in a restricted environment with minimal filesystem, environment-variable, credential, and network access. 7. Document the reviewed package version and update process in both `SKILL.md` and `README.md`. ]]>

other

Note
Location
SKILL.md:210
Finding
QR and Chart Recipes Disclose User Data to External Rendering Services<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:210-228` **Additional Location**: `README.md:208` and `Skill Card.md:40` **Vulnerability Type**: Third-party data disclosure **Risk Level**: Low ### Vulnerable Code ```markdown ### Generate a QR code from a short link Construct a URL against [api.qrserver.com](https://goqr.me/api/): ``` https://api.qrserver.com/v1/create-qr-code/?size=300x300&data=<URL-encoded-short-link> ``` Surface the URL inline if your client renders images; otherwise return it as a link. For a larger code, change `size=500x500`. ### Render a daily-clicks chart 1. Call `get_link_daily_clicks` to get the time series. 2. Build a [QuickChart](https://quickchart.io) URL from the data: ``` https://quickchart.io/chart?c={type:'line',data:{labels:['2026-03-01',...],datasets:[{label:'Clicks',data:[12,38,...]}]}} ``` URL-encode the `c` parameter. Display inline if possible; otherwise return the link. ``` ### Technical Analysis The QR recipe embeds the generated short link in a request to `api.qrserver.com`. The chart recipe embeds click dates and counts in a request to `quickchart.io`. These services are separate from PicSee and consequently receive the submitted values along with ordinary request metadata such as source IP address, timestamp, and user-agent information. A short link may expose private destinations or identifiers when resolved. Analytics data may reveal campaign timing, volume, or business activity. Because the values are carried in request URLs, they may also be retained in browser history, intermediary logs, proxy logs, or service logs. The Skill Card discloses this behavior and identifies local rendering as an alternative. The recipes are optional, and the audit found no evidence that they transmit OAuth tokens or execute automatically. ### Attack Path 1. A user asks the agent to generate a QR code or analytics chart. 2. The agent follows the documented client-side recipe. 3. The agent inserts the s ...[truncated 802 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Use local QR-code and chart-rendering libraries by default. 2. Before using an external renderer, disclose the destination service and obtain explicit user confirmation. 3. Inspect links for credentials, session identifiers, personal data, signed query parameters, or other sensitive values. 4. Do not submit sensitive analytics or private links to public rendering services. 5. Prefer request bodies over query strings where supported, although this does not remove the third-party disclosure. 6. Provide a configuration option that disables all external rendering services. 7. Document applicable retention, privacy, and processing policies for each third-party provider. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (46)

Agent Config Directory Access

High
Category
Agent Snooping
Content
### Antigravity

Antigravity speaks MCP Streamable HTTP **natively**. Edit `~/.gemini/config/mcp_config.json` (it shares Gemini's config dir, and uses the key `serverUrl`):

```json
{
Confidence
90% confidence
Finding
Skill reads from agent configuration directories (.claude/, .codex/, .gemini/). These directories may contain API keys, personal settings, and other credentials that the skill has no legitimate need to access.

MCP Config Access

High
Category
Agent Snooping
Content
### Antigravity

Antigravity speaks MCP Streamable HTTP **natively**. Edit `~/.gemini/config/mcp_config.json` (it shares Gemini's config dir, and uses the key `serverUrl`):

```json
{
Confidence
90% confidence
Finding
Skill accesses MCP server configuration files (mcp.json). MCP configs contain server URLs, authentication tokens, and tool definitions — reading them allows the skill to discover and potentially abuse other tool integrations.

Agent Config Directory Access

High
Category
Agent Snooping
Content
codex mcp add picsee-short-link --url https://api.picsee.io/mcp
```

Or add it directly to `~/.codex/config.toml`:

```toml
[mcp_servers.picsee-short-link]
Confidence
90% confidence
Finding
Skill reads from agent configuration directories (.claude/, .codex/, .gemini/). These directories may contain API keys, personal settings, and other credentials that the skill has no legitimate need to access.

Tool Parameter Abuse

High
Category
Tool Misuse
Content
```bash
# 1. Remove the old encrypted token + salt files
rm -f ~/.openclaw/.picsee_token ~/.openclaw/.picsee_salt

# 2. Remove the old CLI build artifacts wherever the skill was installed
rm -rf ~/.claude/skills/picsee-short-link/cli
Confidence
85% confidence
Finding
The command removes local token and salt files. Although the paths are specific, it still permanently deletes local credential material and could disrupt user environments if executed blindly or in the wrong account context.

Tool Parameter Abuse

High
Category
Tool Misuse
Content
rm -f ~/.openclaw/.picsee_token ~/.openclaw/.picsee_salt

# 2. Remove the old CLI build artifacts wherever the skill was installed
rm -rf ~/.claude/skills/picsee-short-link/cli
rm -rf ~/.openclaw/workspace/skills/picsee-short-link/cli
rm -rf .cursor/skills/picsee-short-link/cli
Confidence
90% confidence
Finding
The command recursively deletes a directory under ~/.claude/skills. In a human-only README this is moderate risk, but in an agent skill ecosystem destructive instructions can be operationalized, increasing the chance of unintended deletion if path expansion or directory assumptions are wrong.

Tool Parameter Abuse

High
Category
Tool Misuse
Content
rm -f ~/.openclaw/.picsee_token ~/.openclaw/.picsee_salt

# 2. Remove the old CLI build artifacts wherever the skill was installed
rm -rf ~/.claude/skills/picsee-short-link/cli
rm -rf ~/.openclaw/workspace/skills/picsee-short-link/cli
rm -rf .cursor/skills/picsee-short-link/cli
Confidence
90% confidence
Finding
The command recursively deletes a directory under ~/.claude/skills. In a human-only README this is moderate risk, but in an agent skill ecosystem destructive instructions can be operationalized, increasing the chance of unintended deletion if path expansion or directory assumptions are wrong.

Tool Parameter Abuse

High
Category
Tool Misuse
Content
# 2. Remove the old CLI build artifacts wherever the skill was installed
rm -rf ~/.claude/skills/picsee-short-link/cli
rm -rf ~/.openclaw/workspace/skills/picsee-short-link/cli
rm -rf .cursor/skills/picsee-short-link/cli

# 3. Reinstall the v3 skill (see Installation above) and register the MCP server.
Confidence
90% confidence
Finding
This command recursively deletes the OpenClaw workspace copy of the old CLI. It is narrowly scoped, but recursive deletion in documentation remains dangerous when copied into terminals or executed by agents because mistakes can irreversibly remove data.

Tool Parameter Abuse

High
Category
Tool Misuse
Content
# 2. Remove the old CLI build artifacts wherever the skill was installed
rm -rf ~/.claude/skills/picsee-short-link/cli
rm -rf ~/.openclaw/workspace/skills/picsee-short-link/cli
rm -rf .cursor/skills/picsee-short-link/cli

# 3. Reinstall the v3 skill (see Installation above) and register the MCP server.
Confidence
90% confidence
Finding
This command recursively deletes the OpenClaw workspace copy of the old CLI. It is narrowly scoped, but recursive deletion in documentation remains dangerous when copied into terminals or executed by agents because mistakes can irreversibly remove data.

Tool Parameter Abuse

High
Category
Tool Misuse
Content
# 2. Remove the old CLI build artifacts wherever the skill was installed
rm -rf ~/.claude/skills/picsee-short-link/cli
rm -rf ~/.openclaw/workspace/skills/picsee-short-link/cli
rm -rf .cursor/skills/picsee-short-link/cli

# 3. Reinstall the v3 skill (see Installation above) and register the MCP server.
# 4. Ask the agent to do something authenticated — sign in via browser when prompted.
Confidence
85% confidence
Finding
The command deletes a relative .cursor path recursively. Relative destructive paths are especially error-prone because the effect depends on the current working directory, making accidental deletion more plausible in automated or user copy-paste scenarios.

Tool Parameter Abuse

High
Category
Tool Misuse
Content
```bash
# Clean up v2 artifacts
rm -f ~/.openclaw/.picsee_token ~/.openclaw/.picsee_salt
rm -rf ~/.claude/skills/picsee-short-link/cli
rm -rf ~/.openclaw/workspace/skills/picsee-short-link/cli
```
Confidence
85% confidence
Finding
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Tool Parameter Abuse

High
Category
Tool Misuse
Content
```bash
# Clean up v2 artifacts
rm -f ~/.openclaw/.picsee_token ~/.openclaw/.picsee_salt
rm -rf ~/.claude/skills/picsee-short-link/cli
rm -rf ~/.openclaw/workspace/skills/picsee-short-link/cli
```
Confidence
90% confidence
Finding
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Tool Parameter Abuse

High
Category
Tool Misuse
Content
```bash
# Clean up v2 artifacts
rm -f ~/.openclaw/.picsee_token ~/.openclaw/.picsee_salt
rm -rf ~/.claude/skills/picsee-short-link/cli
rm -rf ~/.openclaw/workspace/skills/picsee-short-link/cli
```
Confidence
90% confidence
Finding
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Tool Parameter Abuse

High
Category
Tool Misuse
Content
```bash
# Clean up v2 artifacts
rm -f ~/.openclaw/.picsee_token ~/.openclaw/.picsee_salt
rm -rf ~/.claude/skills/picsee-short-link/cli
rm -rf ~/.openclaw/workspace/skills/picsee-short-link/cli
```
Confidence
90% confidence
Finding
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Tool Parameter Abuse

High
Category
Tool Misuse
Content
# Clean up v2 artifacts
rm -f ~/.openclaw/.picsee_token ~/.openclaw/.picsee_salt
rm -rf ~/.claude/skills/picsee-short-link/cli
rm -rf ~/.openclaw/workspace/skills/picsee-short-link/cli
```

Behavioral changes:
Confidence
90% confidence
Finding
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

External Transmission

Medium
Category
Data Exfiltration
Content
An **MCP-based [Agent Skill](https://agentskills.io)** for [PicSee](https://picsee.io) — URL shortening, QR code generation, click analytics, and link management.

The skill is just documentation: it points your AI agent at the public PicSee MCP server (`https://api.picsee.io/mcp`) and explains how to use the tools. No Node.js install, no CLI, no local token files — authentication is handled by **OAuth 2.1 + PKCE** via the MCP client.

---
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
An **MCP-based [Agent Skill](https://agentskills.io)** for [PicSee](https://picsee.io) — URL shortening, QR code generation, click analytics, and link management.

The skill is just documentation: it points your AI agent at the public PicSee MCP server (`https://api.picsee.io/mcp`) and explains how to use the tools. No Node.js install, no CLI, no local token files — authentication is handled by **OAuth 2.1 + PKCE** via the MCP client.

---
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
An **MCP-based [Agent Skill](https://agentskills.io)** for [PicSee](https://picsee.io) — URL shortening, QR code generation, click analytics, and link management.

The skill is just documentation: it points your AI agent at the public PicSee MCP server (`https://api.picsee.io/mcp`) and explains how to use the tools. No Node.js install, no CLI, no local token files — authentication is handled by **OAuth 2.1 + PKCE** via the MCP client.

---
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
An **MCP-based [Agent Skill](https://agentskills.io)** for [PicSee](https://picsee.io) — URL shortening, QR code generation, click analytics, and link management.

The skill is just documentation: it points your AI agent at the public PicSee MCP server (`https://api.picsee.io/mcp`) and explains how to use the tools. No Node.js install, no CLI, no local token files — authentication is handled by **OAuth 2.1 + PKCE** via the MCP client.

---
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
An **MCP-based [Agent Skill](https://agentskills.io)** for [PicSee](https://picsee.io) — URL shortening, QR code generation, click analytics, and link management.

The skill is just documentation: it points your AI agent at the public PicSee MCP server (`https://api.picsee.io/mcp`) and explains how to use the tools. No Node.js install, no CLI, no local token files — authentication is handled by **OAuth 2.1 + PKCE** via the MCP client.

---
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
An **MCP-based [Agent Skill](https://agentskills.io)** for [PicSee](https://picsee.io) — URL shortening, QR code generation, click analytics, and link management.

The skill is just documentation: it points your AI agent at the public PicSee MCP server (`https://api.picsee.io/mcp`) and explains how to use the tools. No Node.js install, no CLI, no local token files — authentication is handled by **OAuth 2.1 + PKCE** via the MCP client.

---
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
An **MCP-based [Agent Skill](https://agentskills.io)** for [PicSee](https://picsee.io) — URL shortening, QR code generation, click analytics, and link management.

The skill is just documentation: it points your AI agent at the public PicSee MCP server (`https://api.picsee.io/mcp`) and explains how to use the tools. No Node.js install, no CLI, no local token files — authentication is handled by **OAuth 2.1 + PKCE** via the MCP client.

---
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
An **MCP-based [Agent Skill](https://agentskills.io)** for [PicSee](https://picsee.io) — URL shortening, QR code generation, click analytics, and link management.

The skill is just documentation: it points your AI agent at the public PicSee MCP server (`https://api.picsee.io/mcp`) and explains how to use the tools. No Node.js install, no CLI, no local token files — authentication is handled by **OAuth 2.1 + PKCE** via the MCP client.

---
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
An **MCP-based [Agent Skill](https://agentskills.io)** for [PicSee](https://picsee.io) — URL shortening, QR code generation, click analytics, and link management.

The skill is just documentation: it points your AI agent at the public PicSee MCP server (`https://api.picsee.io/mcp`) and explains how to use the tools. No Node.js install, no CLI, no local token files — authentication is handled by **OAuth 2.1 + PKCE** via the MCP client.

---
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
An **MCP-based [Agent Skill](https://agentskills.io)** for [PicSee](https://picsee.io) — URL shortening, QR code generation, click analytics, and link management.

The skill is just documentation: it points your AI agent at the public PicSee MCP server (`https://api.picsee.io/mcp`) and explains how to use the tools. No Node.js install, no CLI, no local token files — authentication is handled by **OAuth 2.1 + PKCE** via the MCP client.

---
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
An **MCP-based [Agent Skill](https://agentskills.io)** for [PicSee](https://picsee.io) — URL shortening, QR code generation, click analytics, and link management.

The skill is just documentation: it points your AI agent at the public PicSee MCP server (`https://api.picsee.io/mcp`) and explains how to use the tools. No Node.js install, no CLI, no local token files — authentication is handled by **OAuth 2.1 + PKCE** via the MCP client.

---
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Static analysis

Detected: suspicious.destructive_delete_command

Documentation contains a destructive delete command without an explicit confirmation gate.

Warn
Code
suspicious.destructive_delete_command
Location
README.md:271