{"data":{"skill":{"slug":"agentspace-so-video-extend","name":"video-extend","icon":"📦","repo":"https://github.com/agentspace-so/runcomfy-agent-skills/tree/main/video-extend/","status":"approved","author":"agentspace-so","authorVersion":null,"skillstoreRevision":2},"audit":{"id":"0e6e3475-53f7-40fb-bf05-db5311a80730","skill_id":"d0bff9ed-44b8-4a87-a6ea-fd6a3ae5aeca","version":5,"content_hash":"v3:181fdefcafd96b041926e61c4b2e306ca7e7820e:241753d4947fda79f782d972b5014cdb34105c661ff31c018f8106e83656f1d2:d7e59a00358183000fb8c525eee8084f47f52de8a4db25e5ac65cbbdcfea26ca:736b696c6c732f6167656e7473706163652d736f2f766964656f2d657874656e64:6635e7fb69c3b4598868af0f55936cb1","risk_level":"high","is_blocked":false,"safe_to_publish":false,"analysis_status":"ok","agent_auto_install_policy":"confirmation_required","manual_install_policy":"allowed","summary":"All 52 static findings are false positives caused by Markdown formatting, expected documentation links, a documented credential path, and unrelated phrase matches. However, the documented command embeds user-controlled URL and prompt values in single-quoted JSON without a shell-safe construction method, creating a plausible command-injection path. The workflow also transfers user media to RunComfy for external processing.","remediation":[{"issue":"User-controlled video URLs and prompts are shown inside a single-quoted shell argument without an escaping procedure.","severity":"high","suggestion":"Construct the input with a structured serializer and pass it without shell interpolation. Document and test apostrophes, newlines, and shell metacharacters."},{"issue":"The source video URL and continuation prompt are processed by an external service.","severity":"low","suggestion":"Disclose the external transfer before execution and require user approval for sensitive, private, or access-controlled media."}],"risk_factor_evidence":[{"factor":"external_commands","evidence":[{"file":"SKILL.md","line_end":7,"line_start":7},{"file":"SKILL.md","line_end":8,"line_start":8},{"file":"SKILL.md","line_end":23,"line_start":23},{"file":"SKILL.md","line_end":40,"line_start":29},{"file":"SKILL.md","line_end":42,"line_start":40},{"file":"SKILL.md","line_end":50,"line_start":42},{"file":"SKILL.md","line_end":55,"line_start":50},{"file":"SKILL.md","line_end":66,"line_start":55},{"file":"SKILL.md","line_end":66,"line_start":66},{"file":"SKILL.md","line_end":71,"line_start":67},{"file":"SKILL.md","line_end":78,"line_start":71},{"file":"SKILL.md","line_end":93,"line_start":78},{"file":"SKILL.md","line_end":97,"line_start":93},{"file":"SKILL.md","line_end":105,"line_start":97},{"file":"SKILL.md","line_end":105,"line_start":105},{"file":"SKILL.md","line_end":107,"line_start":106},{"file":"SKILL.md","line_end":107,"line_start":107},{"file":"SKILL.md","line_end":116,"line_start":116},{"file":"SKILL.md","line_end":135,"line_start":135},{"file":"SKILL.md","line_end":139,"line_start":139},{"file":"SKILL.md","line_end":140,"line_start":140},{"file":"SKILL.md","line_end":141,"line_start":141},{"file":"SKILL.md","line_end":145,"line_start":142},{"file":"SKILL.md","line_end":145,"line_start":145},{"file":"SKILL.md","line_end":147,"line_start":147},{"file":"SKILL.md","line_end":152,"line_start":151},{"file":"SKILL.md","line_end":153,"line_start":152},{"file":"SKILL.md","line_end":154,"line_start":153},{"file":"SKILL.md","line_end":155,"line_start":154}]},{"factor":"network","evidence":[{"file":"SKILL.md","line_end":17,"line_start":17},{"file":"SKILL.md","line_end":25,"line_start":25},{"file":"SKILL.md","line_end":38,"line_start":38},{"file":"SKILL.md","line_end":42,"line_start":42},{"file":"SKILL.md","line_end":55,"line_start":55},{"file":"SKILL.md","line_end":67,"line_start":67},{"file":"SKILL.md","line_end":74,"line_start":74},{"file":"SKILL.md","line_end":105,"line_start":105},{"file":"SKILL.md","line_end":106,"line_start":106},{"file":"SKILL.md","line_end":107,"line_start":107},{"file":"SKILL.md","line_end":113,"line_start":113},{"file":"SKILL.md","line_end":114,"line_start":114},{"file":"SKILL.md","line_end":116,"line_start":116},{"file":"SKILL.md","line_end":131,"line_start":131},{"file":"SKILL.md","line_end":151,"line_start":151},{"file":"SKILL.md","line_end":152,"line_start":152},{"file":"SKILL.md","line_end":153,"line_start":153},{"file":"SKILL.md","line_end":154,"line_start":154},{"file":"SKILL.md","line_end":155,"line_start":155}]},{"factor":"filesystem","evidence":[{"file":"SKILL.md","line_end":140,"line_start":140},{"file":"SKILL.md","line_end":140,"line_start":140}]}],"critical_findings":[],"high_findings":[{"title":"User Input Can Break Shell Quoting","locations":[{"file":"SKILL.md","line_end":77,"line_start":71},{"file":"SKILL.md","line_end":141,"line_start":141}],"confidence":0.88,"description":"The documented invocation embeds the video URL and prompt in a single-quoted shell argument. An apostrophe in either value can terminate the argument and introduce additional shell syntax unless the agent applies escaping that the skill does not define.","review_kind":"security","source_category":"semantic","source_severity":"high","confidence_reasoning":"Lines 71-77 show the values inside single shell quotes, while line 141 claims safety without documenting shell-level escaping. Exploitation depends on how the agent substitutes user values."}],"medium_findings":[],"low_findings":[{"title":"External Processing of User Media","locations":[{"file":"SKILL.md","line_end":135,"line_start":135}],"confidence":0.98,"description":"The CLI sends the source video URL and continuation prompt to the RunComfy Model API, then downloads the generated clip. Sensitive media or signed URLs may be disclosed to an external processor.","review_kind":"security","source_category":"semantic","source_severity":"low","confidence_reasoning":"Line 135 explicitly states that the CLI posts the video URL and prompt to the RunComfy Model API and polls for the result."}],"dangerous_patterns":[],"files_scanned":1,"total_lines":156,"audit_model":"codex","audited_at":"2026-07-23T09:20:35.982+00:00","created_at":"2026-07-24T05:00:25.501048+00:00","static_findings":[{"id":"external_commands:SKILL.md:7:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"`runcomfy` CLI. Routes to Google Veo 3-1's `extend-video` and","category":"external_commands","line_end":7,"severity":"medium","line_start":7},{"id":"external_commands:SKILL.md:8:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"`fast/extend-video` endpoints — pick the source video plus a prompt","category":"external_commands","line_end":8,"severity":"medium","line_start":8},{"id":"external_commands:SKILL.md:23:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Continue an existing video clip past its per-call duration cap, or chain a narrative shot-by-shot fr","category":"external_commands","line_end":23,"severity":"medium","line_start":23},{"id":"external_commands:SKILL.md:29:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":40,"severity":"medium","line_start":29},{"id":"external_commands:SKILL.md:40:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":42,"severity":"medium","line_start":40},{"id":"external_commands:SKILL.md:42:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"CLI deep dive: [`runcomfy-cli`](https://www.skills.sh/agentspace-so/runcomfy-agent-skills/runcomfy-c","category":"external_commands","line_end":50,"severity":"medium","line_start":42},{"id":"external_commands:SKILL.md:50:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"**Veo 3-1 Extend** — `google-deepmind/veo-3-1/extend-video` *(default)*","category":"external_commands","line_end":55,"severity":"medium","line_start":50},{"id":"external_commands:SKILL.md:55:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"**Veo 3-1 Fast Extend** — [`google-deepmind/veo-3-1/fast/extend-video`](https://www.runcomfy.com/mod","category":"external_commands","line_end":66,"severity":"medium","line_start":55},{"id":"external_commands:SKILL.md:66:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"**Model**: `google-deepmind/veo-3-1/extend-video` (or `/fast/extend-video`)","category":"external_commands","line_end":66,"severity":"medium","line_start":66},{"id":"external_commands:SKILL.md:67:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"**Catalog**: [Veo 3-1 extend](https://www.runcomfy.com/models/google-deepmind/veo-3-1/extend-video?u","category":"external_commands","line_end":71,"severity":"medium","line_start":67},{"id":"external_commands:SKILL.md:71:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":78,"severity":"medium","line_start":71},{"id":"external_commands:SKILL.md:78:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":93,"severity":"medium","line_start":78},{"id":"external_commands:SKILL.md:93:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Run `extend-video` once → 16s total. Same prompt rhythm for the second 8s.","category":"external_commands","line_end":97,"severity":"medium","line_start":93},{"id":"external_commands:SKILL.md:97:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Beat 2: feed output to `extend-video` with prompt \"camera cuts to medium close-up; character speak","category":"external_commands","line_end":105,"severity":"medium","line_start":97},{"id":"external_commands:SKILL.md:105:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Image-to-video from scratch**: use [`image-to-video`](https://www.skills.sh/agentspace-so/runcom","category":"external_commands","line_end":105,"severity":"medium","line_start":105},{"id":"external_commands:SKILL.md:106:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Stylized restyle of an existing video**: use [`video-edit`](https://www.skills.sh/agentspace-so/","category":"external_commands","line_end":107,"severity":"medium","line_start":106},{"id":"external_commands:SKILL.md:107:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Talking-head extend with audio sync**: use [`ai-avatar-video`](https://www.skills.sh/agentspace-","category":"external_commands","line_end":107,"severity":"medium","line_start":107},{"id":"external_commands:SKILL.md:116:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Today only Veo exposes a CLI-reachable `extend-video` endpoint. Other vendors' \"video continuation\" ","category":"external_commands","line_end":116,"severity":"medium","line_start":116},{"id":"external_commands:SKILL.md:135:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"The skill picks Veo 3-1 Extend or Fast Extend based on quality vs cost intent, and invokes `runcomfy","category":"external_commands","line_end":135,"severity":"medium","line_start":135},{"id":"external_commands:SKILL.md:139:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Install via verified package manager only.** Use `npm i -g @runcomfy/cli` or `npx -y @runcomfy/c","category":"external_commands","line_end":139,"severity":"medium","line_start":139},{"id":"external_commands:SKILL.md:140:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Token storage**: `runcomfy login` writes the API token to `~/.config/runcomfy/token.json` with m","category":"external_commands","line_end":140,"severity":"medium","line_start":140},{"id":"external_commands:SKILL.md:141:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Input boundary (shell injection)**: prompts and `video_url` are passed as a JSON string via `--i","category":"external_commands","line_end":141,"severity":"medium","line_start":141},{"id":"external_commands:SKILL.md:142:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Indirect prompt injection (third-party content)**: the source `video_url` is **untrusted** — emb","category":"external_commands","line_end":145,"severity":"medium","line_start":142},{"id":"external_commands:SKILL.md:145:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Outbound endpoints (allowlist)**: only `model-api.runcomfy.net` and `*.runcomfy.net` / `*.runcom","category":"external_commands","line_end":145,"severity":"medium","line_start":145},{"id":"external_commands:SKILL.md:147:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Scope of bash usage**: declared `allowed-tools: Bash(runcomfy *)`. The skill never instructs the","category":"external_commands","line_end":147,"severity":"medium","line_start":147},{"id":"external_commands:SKILL.md:151:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- [`runcomfy-cli`](https://www.skills.sh/agentspace-so/runcomfy-agent-skills/runcomfy-cli) — the und","category":"external_commands","line_end":152,"severity":"medium","line_start":151},{"id":"external_commands:SKILL.md:152:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- [`ai-video-generation`](https://www.skills.sh/agentspace-so/runcomfy-agent-skills/ai-video-generat","category":"external_commands","line_end":153,"severity":"medium","line_start":152},{"id":"external_commands:SKILL.md:153:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- [`image-to-video`](https://www.skills.sh/agentspace-so/runcomfy-agent-skills/image-to-video) — ani","category":"external_commands","line_end":154,"severity":"medium","line_start":153},{"id":"external_commands:SKILL.md:154:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- [`video-edit`](https://www.skills.sh/agentspace-so/runcomfy-agent-skills/video-edit) — restyle / m","category":"external_commands","line_end":155,"severity":"medium","line_start":154},{"id":"network:SKILL.md:17:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"homepage: https://www.runcomfy.com","category":"network","line_end":17,"severity":"low","line_start":17},{"id":"network:SKILL.md:25:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"[runcomfy.com](https://www.runcomfy.com/?utm_source=skills.sh&utm_medium=skill&utm_campaign=video-ex","category":"network","line_end":25,"severity":"low","line_start":25},{"id":"network:SKILL.md:38:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"--input '{\"video_url\": \"https://...\", \"prompt\": \"...\"}' \\","category":"network","line_end":38,"severity":"low","line_start":38},{"id":"network:SKILL.md:42:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"CLI deep dive: [`runcomfy-cli`](https://www.skills.sh/agentspace-so/runcomfy-agent-skills/runcomfy-c","category":"network","line_end":42,"severity":"low","line_start":42},{"id":"network:SKILL.md:55:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"**Veo 3-1 Fast Extend** — [`google-deepmind/veo-3-1/fast/extend-video`](https://www.runcomfy.com/mod","category":"network","line_end":55,"severity":"low","line_start":55},{"id":"network:SKILL.md:67:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"**Catalog**: [Veo 3-1 extend](https://www.runcomfy.com/models/google-deepmind/veo-3-1/extend-video?u","category":"network","line_end":67,"severity":"low","line_start":67},{"id":"network:SKILL.md:74:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"\"video_url\": \"https://your-cdn.example/source-clip.mp4\",","category":"network","line_end":74,"severity":"low","line_start":74},{"id":"network:SKILL.md:105:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- **Image-to-video from scratch**: use [`image-to-video`](https://www.skills.sh/agentspace-so/runcom","category":"network","line_end":105,"severity":"low","line_start":105},{"id":"network:SKILL.md:106:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- **Stylized restyle of an existing video**: use [`video-edit`](https://www.skills.sh/agentspace-so/","category":"network","line_end":106,"severity":"low","line_start":106},{"id":"network:SKILL.md:107:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- **Talking-head extend with audio sync**: use [`ai-avatar-video`](https://www.skills.sh/agentspace-","category":"network","line_end":107,"severity":"low","line_start":107},{"id":"network:SKILL.md:113:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [Veo 3-1 collection](https://www.runcomfy.com/models/collections/veo-3?utm_source=skills.sh&utm_me","category":"network","line_end":113,"severity":"low","line_start":113},{"id":"network:SKILL.md:114:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [All video models](https://www.runcomfy.com/models?utm_source=skills.sh&utm_medium=skill&utm_campa","category":"network","line_end":114,"severity":"low","line_start":114},{"id":"network:SKILL.md:116:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"Today only Veo exposes a CLI-reachable `extend-video` endpoint. Other vendors' \"video continuation\" ","category":"network","line_end":116,"severity":"low","line_start":116},{"id":"network:SKILL.md:131:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"Full reference: [docs.runcomfy.com/cli/troubleshooting](https://docs.runcomfy.com/cli/troubleshootin","category":"network","line_end":131,"severity":"low","line_start":131},{"id":"network:SKILL.md:151:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [`runcomfy-cli`](https://www.skills.sh/agentspace-so/runcomfy-agent-skills/runcomfy-cli) — the und","category":"network","line_end":151,"severity":"low","line_start":151},{"id":"network:SKILL.md:152:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [`ai-video-generation`](https://www.skills.sh/agentspace-so/runcomfy-agent-skills/ai-video-generat","category":"network","line_end":152,"severity":"low","line_start":152},{"id":"network:SKILL.md:153:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [`image-to-video`](https://www.skills.sh/agentspace-so/runcomfy-agent-skills/image-to-video) — ani","category":"network","line_end":153,"severity":"low","line_start":153},{"id":"network:SKILL.md:154:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [`video-edit`](https://www.skills.sh/agentspace-so/runcomfy-agent-skills/video-edit) — restyle / m","category":"network","line_end":154,"severity":"low","line_start":154},{"id":"network:SKILL.md:155:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [`ai-avatar-video`](https://www.skills.sh/agentspace-so/runcomfy-agent-skills/ai-avatar-video) — t","category":"network","line_end":155,"severity":"low","line_start":155},{"id":"filesystem:SKILL.md:140:hidden-file-in-home-directory","file":"SKILL.md","pattern":"Hidden file in home directory","snippet":"- **Token storage**: `runcomfy login` writes the API token to `~/.config/runcomfy/token.json` with m","category":"filesystem","line_end":140,"severity":"high","line_start":140},{"id":"filesystem:SKILL.md:140:hidden-file-access","file":"SKILL.md","pattern":"Hidden file access","snippet":"- **Token storage**: `runcomfy login` writes the API token to `~/.config/runcomfy/token.json` with m","category":"filesystem","line_end":140,"severity":"medium","line_start":140},{"id":"blocker:SKILL.md:53:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"> Avoid for: cost-sensitive iteration — drop to **Veo 3-1 Fast Extend**.","category":"blocker","line_end":53,"severity":"low","line_start":53},{"id":"blocker:SKILL.md:58:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"> Avoid for: final delivery — use full **Veo 3-1 Extend**.","category":"blocker","line_end":58,"severity":"low","line_start":58}],"finding_verdicts":[{"id":"external_commands:SKILL.md:7:ruby-shell-backtick-execution","reason":"The backticks are Markdown code formatting around the runcomfy CLI name. They do not perform Ruby or shell command substitution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:8:ruby-shell-backtick-execution","reason":"The backticks format an endpoint name in Markdown. No shell execution construct appears on this line.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:23:ruby-shell-backtick-execution","reason":"The inline backticks identify endpoint and CLI command names in documentation. They are not executable shell backticks.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:29:ruby-shell-backtick-execution","reason":"This range is a fenced Bash usage example for installing and invoking the advertised CLI. It contains no Ruby-style backtick execution or hidden command substitution.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:SKILL.md:40:ruby-shell-backtick-execution","reason":"The detected token is the closing marker for a Markdown code fence. It cannot execute a command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:42:ruby-shell-backtick-execution","reason":"Backticks format a linked skill name in prose. This is a documentation reference, not command execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:50:ruby-shell-backtick-execution","reason":"The endpoint identifier is enclosed in Markdown backticks for readability. There is no executable shell expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:55:ruby-shell-backtick-execution","reason":"The backticks format the linked Fast Extend endpoint. The line is descriptive documentation.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:66:ruby-shell-backtick-execution","reason":"This line presents model identifiers as inline code. It does not invoke a shell.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:67:ruby-shell-backtick-execution","reason":"The backticks format a catalog collection name within Markdown links. No command is evaluated.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:71:ruby-shell-backtick-execution","reason":"This range is a documented runcomfy invocation with a fixed model and structured input. The Markdown code fence is not shell backtick execution.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:SKILL.md:78:ruby-shell-backtick-execution","reason":"The detected token closes a fenced Bash example. It has no command execution semantics.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:93:ruby-shell-backtick-execution","reason":"The endpoint name is formatted as inline code in a workflow example. It is not a shell substitution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:97:ruby-shell-backtick-execution","reason":"Backticks format the endpoint name in a narrative sequence. The surrounding text does not execute commands.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:105:ruby-shell-backtick-execution","reason":"The detected backticks format linked skill names. This line only directs users to related documentation.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:106:ruby-shell-backtick-execution","reason":"The video-edit name is Markdown inline code inside a link. No external process is launched by the text.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:107:ruby-shell-backtick-execution","reason":"Backticks mark related skill and endpoint names in prose. This is not executable syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:116:ruby-shell-backtick-execution","reason":"Inline code formatting identifies an endpoint and another skill. There is no command substitution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:135:ruby-shell-backtick-execution","reason":"The line explains the intended runcomfy command and remote workflow. Backticks only format command names and do not execute them.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:SKILL.md:139:ruby-shell-backtick-execution","reason":"This is operator-facing package installation guidance with an explicit warning against remote shell scripts. The backticks are Markdown formatting, not execution.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:140:ruby-shell-backtick-execution","reason":"Backticks format the login command, token path, and environment variable in security documentation. They do not invoke any command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:141:ruby-shell-backtick-execution","reason":"The line documents structured CLI input and names its fields with inline code. No shell evaluation appears.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:142:ruby-shell-backtick-execution","reason":"The source field name is formatted as inline code while the text discusses untrusted media. There is no executable backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:145:ruby-shell-backtick-execution","reason":"Backticks format the documented outbound domains. The line contains no command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:147:ruby-shell-backtick-execution","reason":"The allowed-tools declaration and command pattern are quoted as inline code. This is a scope restriction, not shell execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:151:ruby-shell-backtick-execution","reason":"Backticks format the linked runcomfy-cli skill name. The line is a reference list entry.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:152:ruby-shell-backtick-execution","reason":"Backticks format a related skill name inside a Markdown link. No executable command is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:153:ruby-shell-backtick-execution","reason":"The image-to-video text is a linked skill identifier formatted as code. It is not shell syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:154:ruby-shell-backtick-execution","reason":"The video-edit name is Markdown inline code within a related-link entry. No command execution occurs.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:17:hardcoded-url","reason":"This is the declared RunComfy homepage in skill metadata. A public project URL is expected and does not itself transmit data.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:25:hardcoded-url","reason":"The URLs link to RunComfy product and CLI documentation. They are visible references to the service used by the skill.","verdict":"false_positive","confidence":0.98},{"id":"network:SKILL.md:38:hardcoded-url","reason":"The URL is an ellipsis placeholder inside an input example. It is not a hardcoded destination or live endpoint.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:42:hardcoded-url","reason":"This visible skills.sh URL links to related CLI documentation. It does not conceal or initiate a network request.","verdict":"false_positive","confidence":0.98},{"id":"network:SKILL.md:55:hardcoded-url","reason":"The URL is a visible catalog link for the documented Fast Extend endpoint. It is consistent with the skill purpose.","verdict":"false_positive","confidence":0.98},{"id":"network:SKILL.md:67:hardcoded-url","reason":"These are visible RunComfy catalog links for the listed Veo models. They are documentation references, not covert destinations.","verdict":"false_positive","confidence":0.98},{"id":"network:SKILL.md:74:hardcoded-url","reason":"The example uses the reserved example domain to show where a user supplies a source video. It is not an operational destination.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:105:hardcoded-url","reason":"The visible skills.sh links identify related generation skills. They are ordinary documentation references.","verdict":"false_positive","confidence":0.98},{"id":"network:SKILL.md:106:hardcoded-url","reason":"This URL points to the related video-edit skill on skills.sh. The link is expected marketplace documentation.","verdict":"false_positive","confidence":0.98},{"id":"network:SKILL.md:107:hardcoded-url","reason":"The URL links to a related avatar-video skill. It is visible and relevant to the documented alternative workflow.","verdict":"false_positive","confidence":0.98},{"id":"network:SKILL.md:113:hardcoded-url","reason":"This is a visible link to the RunComfy Veo model catalog. It does not represent suspicious network behavior.","verdict":"false_positive","confidence":0.98},{"id":"network:SKILL.md:114:hardcoded-url","reason":"The link opens the public RunComfy video model catalog. It is relevant product documentation.","verdict":"false_positive","confidence":0.98},{"id":"network:SKILL.md:116:hardcoded-url","reason":"The URL points to a related skills.sh workflow referenced in explanatory text. There is no covert request or data transfer on this line.","verdict":"false_positive","confidence":0.98},{"id":"network:SKILL.md:131:hardcoded-url","reason":"This is a visible link to official CLI troubleshooting documentation. It is expected support material.","verdict":"false_positive","confidence":0.98},{"id":"network:SKILL.md:151:hardcoded-url","reason":"The URL is a visible skills.sh link to the underlying CLI skill. It is a relevant documentation reference.","verdict":"false_positive","confidence":0.98},{"id":"network:SKILL.md:152:hardcoded-url","reason":"The URL links to the related AI video generation skill on skills.sh. No network action is embedded.","verdict":"false_positive","confidence":0.98},{"id":"network:SKILL.md:153:hardcoded-url","reason":"This is a visible marketplace link to an image-to-video skill. It is not a suspicious endpoint.","verdict":"false_positive","confidence":0.98},{"id":"network:SKILL.md:154:hardcoded-url","reason":"This public skills.sh URL references the related video-edit skill. The context is a documentation list.","verdict":"false_positive","confidence":0.98},{"id":"network:SKILL.md:155:hardcoded-url","reason":"This public skills.sh URL references the related avatar-video skill. It is visible and relevant.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:SKILL.md:140:hidden-file-in-home-directory","reason":"The line documents the CLI credential location and states that it uses mode 0600. The skill does not read, write, or expose that file directly.","verdict":"false_positive","confidence":0.99},{"id":"filesystem:SKILL.md:140:hidden-file-access","reason":"The hidden path appears only in security documentation describing token storage. No file-access instruction targets the credential.","verdict":"false_positive","confidence":0.99},{"id":"blocker:SKILL.md:53:system-reconnaissance","reason":"The phrase describes when to avoid a costly model option. It does not inspect the host system or collect system information.","verdict":"false_positive","confidence":1},{"id":"blocker:SKILL.md:58:system-reconnaissance","reason":"The phrase recommends a model for final delivery. It contains no reconnaissance behavior.","verdict":"false_positive","confidence":1}],"semantic_findings":[{"title":"User Input Can Break Shell Quoting","severity":"high","locations":[{"file":"SKILL.md","line_end":77,"line_start":71},{"file":"SKILL.md","line_end":141,"line_start":141}],"confidence":0.88,"description":"The documented invocation embeds the video URL and prompt in a single-quoted shell argument. An apostrophe in either value can terminate the argument and introduce additional shell syntax unless the agent applies escaping that the skill does not define.","confidence_reasoning":"Lines 71-77 show the values inside single shell quotes, while line 141 claims safety without documenting shell-level escaping. Exploitation depends on how the agent substitutes user values."},{"title":"External Processing of User Media","severity":"low","locations":[{"file":"SKILL.md","line_end":135,"line_start":135}],"confidence":0.98,"description":"The CLI sends the source video URL and continuation prompt to the RunComfy Model API, then downloads the generated clip. Sensitive media or signed URLs may be disclosed to an external processor.","confidence_reasoning":"Line 135 explicitly states that the CLI posts the video URL and prompt to the RunComfy Model API and polls for the result."}],"subject_marketplace_commit_sha":"181fdefcafd96b041926e61c4b2e306ca7e7820e","subject_content_hash":"241753d4947fda79f782d972b5014cdb34105c661ff31c018f8106e83656f1d2","subject_tree_hash":"d7e59a00358183000fb8c525eee8084f47f52de8a4db25e5ac65cbbdcfea26ca","subject_plugin_path":"skills/agentspace-so/video-extend","audit_payload_hash":"6635e7fb69c3b4598868af0f55936cb1","confirmed_risk_level":"high","scanner_version":"3.0.0","policy_version":"skillstore-security-audit-policy-v1","subject":{"marketplaceCommitSha":"181fdefcafd96b041926e61c4b2e306ca7e7820e","contentHash":"241753d4947fda79f782d972b5014cdb34105c661ff31c018f8106e83656f1d2","treeHash":"d7e59a00358183000fb8c525eee8084f47f52de8a4db25e5ac65cbbdcfea26ca","pluginPath":"skills/agentspace-so/video-extend","auditPayloadHash":"6635e7fb69c3b4598868af0f55936cb1"},"scannerVersion":"3.0.0","policyVersion":"skillstore-security-audit-policy-v1"},"auditTranslation":null,"localization":{"requestedLocale":"en","contentLocale":"en","availableLocales":["en"],"fallbackToEnglish":false},"attestation":{"availability":"issued","url":"/api/skills/agentspace-so-video-extend/audits/5/attestation","status":"active"},"trust":{"publicState":"public","auditState":"complete","auditCurrentness":null,"confirmedRiskLevel":"high","confirmedFindingCount":2,"capabilityReviewCount":0,"needsReviewCount":0,"falsePositiveCount":0,"agentAutoInstallPolicy":"confirmation_required","manualInstallPolicy":"allowed","artifactSignatureState":"available","attestationState":"active","verificationState":"not_verified"},"isLatest":true}}