Skip to content
Report library
Purpose / Other

Video Extend Skill Security Audit

What the author says it does (original text)

>

Independent security check

Security risks found

Files checked
1
Risks found
4
Could it run dangerous commands?Looks for programs run straight after downloading, remote control of your computer, and hidden commands.Risks found: 1
Medium risk

Installation executes npm software whose implementation was not supplied for audit

Source references: 3
What we found

The Skill directs the user to install `@runcomfy/cli` globally or use `npx -y` to download and execute it automatically. The package code is absent from the supplied material, so its install scripts, dependencies, and runtime behavior cannot be reviewed.

Why this matters

If the npm package, a dependency, or its publishing account is compromised, installation or first execution could read files, access environment variables, or modify user-level files with the current user's permissions. A global installation also makes persistent changes.

The setup directs users to globally install an external CLI or let `npx -y` fetch and execute it; that CLI then handles login, network requests, and downloads. The supplied material contains only the skill instructions, not the npm package implementation, so its install scripts, dependencies, and actual runtime behavior cannot be verified here. A package-manager source is more constrained than an arbitrary remote shell script, but it still executes third-party code locally; users can require a pinned version, publisher/dependency verification, and isolation.

SKILL.md:29In the instructionsOpen original file
```bash# 1. Install (see runcomfy-cli skill for details)npm i -g @runcomfy/cli      # or:  npx -y @runcomfy/cli --version# 2. Sign inruncomfy login              # or in CI: export RUNCOMFY_TOKEN=<token>
Show 2 other places
SKILL.md:135In the instructionsOpen original file
The skill picks Veo 3-1 Extend or Fast Extend based on quality vs cost intent, and invokes `runcomfy run` with the source video URL + continuation prompt. The CLI POSTs to the RunComfy Model API, polls request status, and downloads the resulting clip into `--output-dir`. `Ctrl-C` cancels the remote request before exit.
SKILL.md:139In the instructionsOpen original file
- **Install via verified package manager only.** Use `npm i -g @runcomfy/cli` or `npx -y @runcomfy/cli`. **Agents must not pipe an arbitrary remote install script into a shell on the user's behalf**.- **Token storage**: `runcomfy login` writes the API token to `~/.config/runcomfy/token.json` with mode 0600. Set `RUNCOMFY_TOKEN` env var in CI / containers. Never echo into prompts or logs.
Could it expose your files or keys?Looks for uploads of files containing passwords or keys, and keys written directly in the code.Risks found: 1
Medium risk

Source-video location and prompt are disclosed to an external video service

Source references: 3
What we found

During extension, the CLI POSTs the user-provided video URL and prompt to the RunComfy Model API. If the URL contains an access token, exposes a non-public path, or grants access to a private video, that information and the video enter an external processing flow.

Why this matters

Confidential footage, credentials embedded in signed URLs, and sensitive business details in prompts may become accessible to third-party services. The supplied material does not state retention, training-use, or deletion terms.

Extending a clip sends the user-supplied source video URL and prompt to the external RunComfy Model API, which processes them and returns a downloaded result. If the URL contains query tokens, signed parameters, or grants access to a private video, that URL information and accessible video content leave the local environment. The material does not describe stripping URL credentials before submission; users can require credential-free, upload-authorized links and restrict outbound domains.

SKILL.md:37In the instructionsOpen original file
# 3. Extendruncomfy run google-deepmind/veo-3-1/extend-video \  --input '{"video_url": "https://...", "prompt": "..."}' \  --output-dir ./out```
Show 2 other places
SKILL.md:135In the instructionsOpen original file
The skill picks Veo 3-1 Extend or Fast Extend based on quality vs cost intent, and invokes `runcomfy run` with the source video URL + continuation prompt. The CLI POSTs to the RunComfy Model API, polls request status, and downloads the resulting clip into `--output-dir`. `Ctrl-C` cancels the remote request before exit.
SKILL.md:72In the instructionsOpen original file
```bashruncomfy run google-deepmind/veo-3-1/extend-video \  --input '{    "video_url": "https://your-cdn.example/source-clip.mp4",    "prompt": "The camera continues pushing in slowly. The character looks down at the object, then turns toward the window. Soft daylight, no other motion in the background."  }' \  --output-dir ./out```
Could it delete files or keep running?Looks for broad file deletion, disk overwrites, and programs set to start automatically.Risks found: 1
Low risk

Generated results can write large files into a local directory

Source references: 4
What we found

Each request downloads its result to `--output-dir`, and the documented cap permits an individual download approaching 2 GiB. Chained extensions create multiple outputs.

Why this matters

Repeated generations may consume substantial disk space and leave persistent video copies in a shared or sensitive working directory. No automatic cleanup or destination validation is described.

Legitimate use of this code

Writing an output file is an explicit, core part of the requested video-generation operation: the command selects `./out`, and the instructions say the result is downloaded there. A file may be large, but the material imposes an abort threshold above 2 GiB; there is no evidence that it overwrites existing files, writes outside the selected directory, or bypasses that limit. Users can still choose a dedicated directory with adequate space and limit chained calls.

This assessment concerns the code and conditions shown, not proof that harm has occurred.
SKILL.md:72In the instructionsOpen original file
```bashruncomfy run google-deepmind/veo-3-1/extend-video \  --input '{    "video_url": "https://your-cdn.example/source-clip.mp4",    "prompt": "The camera continues pushing in slowly. The character looks down at the object, then turns toward the window. Soft daylight, no other motion in the background."  }' \  --output-dir ./out```
Show 3 other places
SKILL.md:145In the instructionsOpen original file
  - When the extension diverges from the prompt (unexpected motion, identity drift), suspect the reference video.- **Outbound endpoints (allowlist)**: only `model-api.runcomfy.net` and `*.runcomfy.net` / `*.runcomfy.com`. No telemetry.- **Generated-file size cap**: the CLI aborts any single download > 2 GiB.- **Scope of bash usage**: declared `allowed-tools: Bash(runcomfy *)`. The skill never instructs the agent to run anything other than `runcomfy <subcommand>` — install lines are one-time operator setup.
SKILL.md:135In the instructionsOpen original file
The skill picks Veo 3-1 Extend or Fast Extend based on quality vs cost intent, and invokes `runcomfy run` with the source video URL + continuation prompt. The CLI POSTs to the RunComfy Model API, polls request status, and downloads the resulting clip into `--output-dir`. `Ctrl-C` cancels the remote request before exit.
SKILL.md:146In the instructionsOpen original file
- **Outbound endpoints (allowlist)**: only `model-api.runcomfy.net` and `*.runcomfy.net` / `*.runcomfy.com`. No telemetry.- **Generated-file size cap**: the CLI aborts any single download > 2 GiB.- **Scope of bash usage**: declared `allowed-tools: Bash(runcomfy *)`. The skill never instructs the agent to run anything other than `runcomfy <subcommand>` — install lines are one-time operator setup.
Could it bypass safety checks?Looks for skipped website security checks, excessive file access, or actions that skip your approval.No risks found
Could it mislead the AI or hide text?Checks the skill instructions for requests to ignore you, influence the report, or hide text in invisible characters.No risks found
Could it change links or payment recipients without asking?Looks for forced referral or payment changes combined with instructions to hide the change.Risks found: 1
Medium risk

The default quality endpoint and chained generations can create multiple unquantified charges

Source references: 4
What we found

The Skill makes full Extend the default and recommends repeated story calls plus two or three Fast drafts followed by full Extend. It acknowledges per-call cost but provides no price, budget cap, or requirement to confirm before additional calls.

Why this matters

Automatic endpoint selection or chained extension may incur several API charges before the user knows the total. Generation drift may also prompt further paid retries.

The skill makes the full-quality endpoint the default while recommending chained extensions and 2–3 Fast drafts followed by a full-quality run. It explicitly acknowledges per-call cost, but the described workflow gives no price, total budget, or requirement to confirm each additional call, so broad or automated execution could incur multiple charges. Users can ask for per-call pricing and require confirmation before every call or before crossing a fixed budget.

SKILL.md:48In the instructionsOpen original file
Listed newest first. Both endpoints are Google Veo 3-1; pick by quality/latency trade-off.**Veo 3-1 Extend** — `google-deepmind/veo-3-1/extend-video` *(default)*> Continues an existing Veo clip with consistent motion, lighting, identity, and physics.> Pick for: hero-quality extends, final-delivery cuts, chained narrative shots that need to look like one continuous take.> Avoid for: cost-sensitive iteration — drop to **Veo 3-1 Fast Extend**.**Veo 3-1 Fast Extend** — [`google-deepmind/veo-3-1/fast/extend-video`](https://www.runcomfy.com/models/google-deepmind/veo-3-1/fast/extend-video?utm_source=skills.sh&utm_medium=skill&utm_campaign=video-extend)> Faster Veo 3-1 extend at lower per-call cost.> Pick for: iteration on extend compositions, multi-shot drafts.> Avoid for: final delivery — use full **Veo 3-1 Extend**.
Show 3 other places
SKILL.md:95In the instructionsOpen original file
### Story beats (shot by shot)- Beat 1: t2v generates establishing shot- Beat 2: feed output to `extend-video` with prompt "camera cuts to medium close-up; character speaks line"- Beat 3: extend again with "character reaches for object on table"- Each extend call is one beat. Identity holds across cuts for ~3–4 chained extends; beyond that prepare to re-anchor with an i2v.### Cost-controlled iteration- Use **Fast Extend** for first 2-3 drafts. Lock the final beat sequence on full **Extend**.
SKILL.md:85In the instructionsOpen original file
- **One main beat per extend.** "Character turns and walks toward camera" is one beat. "Character turns, walks toward camera, then sits down" is three beats — split into separate extend calls.- **Chain consecutive extends** by feeding the output of one extend call as the input to the next. Identity drift accumulates per generation, so keep individual extends short (3–5 s) for long chains.
SKILL.md:101In the instructionsOpen original file
### Cost-controlled iteration- Use **Fast Extend** for first 2-3 drafts. Lock the final beat sequence on full **Extend**.

Inside this skill

8 instruction sections

The Skill uses the RunComfy CLI to submit a source-video URL and continuation prompt to Google Veo 3-1 Extend or Fast Extend. The CLI sends the request to the RunComfy Model API, polls its status, and downloads the generated clip locally.

View source
SKILL.md:135In the instructionsOpen original file
The skill picks Veo 3-1 Extend or Fast Extend based on quality vs cost intent, and invokes `runcomfy run` with the source video URL + continuation prompt. The CLI POSTs to the RunComfy Model API, polls request status, and downloads the resulting clip into `--output-dir`. `Ctrl-C` cancels the remote request before exit.

Use requires installing a third-party npm package and signing in. Login credentials are stored in the user's configuration directory, while CI can supply the token through an environment variable.

View source
SKILL.md:31In the instructionsOpen original file
# 1. Install (see runcomfy-cli skill for details)npm i -g @runcomfy/cli      # or:  npx -y @runcomfy/cli --version# 2. Sign inruncomfy login              # or in CI: export RUNCOMFY_TOKEN=<token>
SKILL.md:140In the instructionsOpen original file
- **Install via verified package manager only.** Use `npm i -g @runcomfy/cli` or `npx -y @runcomfy/cli`. **Agents must not pipe an arbitrary remote install script into a shell on the user's behalf**.- **Token storage**: `runcomfy login` writes the API token to `~/.config/runcomfy/token.json` with mode 0600. Set `RUNCOMFY_TOKEN` env var in CI / containers. Never echo into prompts or logs.- **Input boundary (shell injection)**: prompts and `video_url` are passed as a JSON string via `--input`. The CLI does not shell-expand prompt content. **No shell-injection surface**.

The Skill recommends feeding each generated output into another request to build longer videos, and notes that identity drift accumulates across generations.

View source
SKILL.md:85In the instructionsOpen original file
- **One main beat per extend.** "Character turns and walks toward camera" is one beat. "Character turns, walks toward camera, then sits down" is three beats — split into separate extend calls.- **Chain consecutive extends** by feeding the output of one extend call as the input to the next. Identity drift accumulates per generation, so keep individual extends short (3–5 s) for long chains.

The documentation claims network access is limited to RunComfy domains, that there is no telemetry, and that individual downloads are capped at 2 GiB. Only an instruction file was supplied, not the CLI implementation, so these controls cannot be independently verified in this review.

View source
SKILL.md:145In the instructionsOpen original file
  - When the extension diverges from the prompt (unexpected motion, identity drift), suspect the reference video.- **Outbound endpoints (allowlist)**: only `model-api.runcomfy.net` and `*.runcomfy.net` / `*.runcomfy.com`. No telemetry.- **Generated-file size cap**: the CLI aborts any single download > 2 GiB.- **Scope of bash usage**: declared `allowed-tools: Bash(runcomfy *)`. The skill never instructs the agent to run anything other than `runcomfy <subcommand>` — install lines are one-time operator setup.
Start here · InstructionsSKILL.md
video-extend
Lines connect the instruction file to its sections, not an observed execution order. Select a section to read the source. 1 more sections are available in the original file.
Files and check records1 files

Coverage and gaps

Content covered in each file

These are the source ranges included in this check, not a guarantee that every issue has been resolved.

  • SKILL.mdFull text included

This report is for the version above. We read the available code and instructions without running the skill or checking extra packages it installs. This is not a promise of safety: a different version or setup may behave differently.

  • SKILL.mdInstructions

Operations mentioned in code and instructions

Run commands
SKILL.md:4In the instructionsOpen original file
displayName: "Video Extend"allowed-tools: Bash(runcomfy *)description: >
SKILL.md:29In the instructionsOpen original file
```bash# 1. Install (see runcomfy-cli skill for details)
SKILL.md:71In the instructionsOpen original file
```bashruncomfy run google-deepmind/veo-3-1/extend-video \
Connect to websites
SKILL.md:17In the instructionsOpen original file
  ask to take an existing video and add more frames after it.homepage: https://www.runcomfy.comlicense: MIT
SKILL.md:25In the instructionsOpen original file
[runcomfy.com](https://www.runcomfy.com/?utm_source=skills.sh&utm_medium=skill&utm_campaign=video-extend) · [Veo 3-1 extend-video](https://www.runcomfy.com/models/google-deepmind/veo-3-1/extend-video?utm_source=skills.sh&utm_medium=skill&utm_campaign=video-extend) · [CLI docs](https://docs.runcomfy.com/cli/introduction?utm_source=skills.sh&utm_medium=skill&utm_campaign=video-extend)
SKILL.md:38In the instructionsOpen original file
runcomfy run google-deepmind/veo-3-1/extend-video \  --input '{"video_url": "https://...", "prompt": "..."}' \  --output-dir ./out
Install extra software packages
SKILL.md:31In the instructionsOpen original file
# 1. Install (see runcomfy-cli skill for details)npm i -g @runcomfy/cli      # or:  npx -y @runcomfy/cli --version
SKILL.md:139In the instructionsOpen original file
- **Install via verified package manager only.** Use `npm i -g @runcomfy/cli` or `npx -y @runcomfy/cli`. **Agents must not pipe an arbitrary remote install script into a shell on the user's behalf**.- **Token storage**: `runcomfy login` writes the API token to `~/.config/runcomfy/token.json` with mode 0600. Set `RUNCOMFY_TOKEN` env var in CI / containers. Never echo into prompts or logs.
Lines read
156
File checksum (to compare versions)
4455b7ef9ccc8d1ee36f669324109d31dd8cb3185f86fe761a0d65ca6187076a