{"data":{"skill":{"slug":"agentspace-so-seedance-v2","name":"seedance-v2","icon":"📦","repo":"https://github.com/agentspace-so/runcomfy-agent-skills/tree/main/seedance-v2/","status":"approved","author":"agentspace-so","authorVersion":null,"skillstoreRevision":null},"audit":{"id":"1890b266-3353-4eef-855d-24ba61e336d8","skill_id":"886310c3-3b7e-425d-8f1c-170949d8017d","version":4,"content_hash":"1abead63848fe00697a175eb0a62e90c","risk_level":"medium","is_blocked":false,"safe_to_publish":true,"analysis_status":"ok","agent_auto_install_policy":"allowed","manual_install_policy":"allowed","summary":"Most static detections are Markdown formatting false positives, including placeholder URLs and code-fence markers. Confirmed risks are the intended RunComfy CLI workflow, outbound RunComfy API submission, global CLI installation guidance, and disclosed token storage in a hidden config file. No prompt injection or deceptive override language was found.","remediation":[{"issue":"External CLI execution and network submission","severity":"medium","suggestion":"Require user confirmation before running RunComfy commands, and show the endpoint, prompt summary, reference URLs, and output directory first."},{"issue":"Global CLI installation guidance","severity":"medium","suggestion":"Pin or recommend a verified @runcomfy/cli version, and avoid automated global installs without explicit user approval."},{"issue":"API token stored in a hidden home directory file","severity":"high","suggestion":"Prefer RUNCOMFY_TOKEN for CI, document token revocation, and never read, print, or transmit the token outside RunComfy authentication."},{"issue":"Third-party processing of prompts and media references","severity":"medium","suggestion":"Warn users not to submit confidential prompts or private media URLs unless their RunComfy data handling policy permits it."}],"risk_factor_evidence":[{"factor":"external_commands","evidence":[{"file":"SKILL.md","line_end":10,"line_start":10},{"file":"SKILL.md","line_end":26,"line_start":24},{"file":"SKILL.md","line_end":38,"line_start":26},{"file":"SKILL.md","line_end":46,"line_start":38},{"file":"SKILL.md","line_end":47,"line_start":46},{"file":"SKILL.md","line_end":48,"line_start":47},{"file":"SKILL.md","line_end":48,"line_start":48},{"file":"SKILL.md","line_end":56,"line_start":52},{"file":"SKILL.md","line_end":57,"line_start":56},{"file":"SKILL.md","line_end":57,"line_start":57},{"file":"SKILL.md","line_end":58,"line_start":58},{"file":"SKILL.md","line_end":59,"line_start":59},{"file":"SKILL.md","line_end":60,"line_start":60},{"file":"SKILL.md","line_end":62,"line_start":61},{"file":"SKILL.md","line_end":62,"line_start":62},{"file":"SKILL.md","line_end":64,"line_start":63},{"file":"SKILL.md","line_end":70,"line_start":64},{"file":"SKILL.md","line_end":74,"line_start":70},{"file":"SKILL.md","line_end":78,"line_start":74},{"file":"SKILL.md","line_end":87,"line_start":78},{"file":"SKILL.md","line_end":91,"line_start":87},{"file":"SKILL.md","line_end":100,"line_start":91},{"file":"SKILL.md","line_end":102,"line_start":100},{"file":"SKILL.md","line_end":102,"line_start":102},{"file":"SKILL.md","line_end":106,"line_start":106},{"file":"SKILL.md","line_end":110,"line_start":108},{"file":"SKILL.md","line_end":110,"line_start":110},{"file":"SKILL.md","line_end":134,"line_start":117},{"file":"SKILL.md","line_end":139,"line_start":134},{"file":"SKILL.md","line_end":143,"line_start":139},{"file":"SKILL.md","line_end":148,"line_start":143},{"file":"SKILL.md","line_end":156,"line_start":148},{"file":"SKILL.md","line_end":173,"line_start":156},{"file":"SKILL.md","line_end":173,"line_start":173},{"file":"SKILL.md","line_end":177,"line_start":177},{"file":"SKILL.md","line_end":180,"line_start":178},{"file":"SKILL.md","line_end":180,"line_start":180}]},{"factor":"network","evidence":[{"file":"SKILL.md","line_end":14,"line_start":14},{"file":"SKILL.md","line_end":20,"line_start":20},{"file":"SKILL.md","line_end":82,"line_start":82},{"file":"SKILL.md","line_end":95,"line_start":95},{"file":"SKILL.md","line_end":96,"line_start":96},{"file":"SKILL.md","line_end":97,"line_start":97},{"file":"SKILL.md","line_end":169,"line_start":169},{"file":"SKILL.md","line_end":173,"line_start":173}]},{"factor":"filesystem","evidence":[{"file":"SKILL.md","line_end":82,"line_start":82},{"file":"SKILL.md","line_end":95,"line_start":95},{"file":"SKILL.md","line_end":96,"line_start":96},{"file":"SKILL.md","line_end":97,"line_start":97},{"file":"SKILL.md","line_end":177,"line_start":177},{"file":"SKILL.md","line_end":177,"line_start":177}]}],"critical_findings":[],"high_findings":[{"title":"Hidden file in home directory","locations":[{"file":"SKILL.md","line_end":177,"line_start":177}],"confidence":0.82,"description":"- **Token storage**: `runcomfy login` writes the API token to `~/.config/runcomfy/token.json` with m","review_kind":"capability","source_category":"filesystem","source_severity":"high","confidence_reasoning":"The skill documents token storage at ~/.config/runcomfy/token.json. The storage is disclosed and permission-restricted, but it is real hidden-file credential handling."}],"medium_findings":[{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":10,"line_start":10}],"confidence":0.78,"description":"Calls `runcomfy run bytedance/seedance-v2/pro` through the local","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The line documents use of the runcomfy CLI as part of the skill workflow. This is an intended external command path rather than hidden execution."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":26,"line_start":24}],"confidence":0.76,"description":"```bash","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The fenced example includes an npx command that installs a community skill globally. This is explicit external command execution and can modify the local tool environment."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":47,"line_start":46}],"confidence":0.78,"description":"1. **RunComfy CLI** — `npm i -g @runcomfy/cli`","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The prerequisite tells users to install the RunComfy CLI globally with npm. Global package installation is an external command with supply-chain and local environment impact."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":48,"line_start":47}],"confidence":0.74,"description":"2. **RunComfy account** — `runcomfy login` opens a browser device-code flow.","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The skill instructs authentication through the RunComfy CLI and discusses token use. This is legitimate setup, but it involves external command execution and credential handling."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":48,"line_start":48}],"confidence":0.74,"description":"3. **CI / containers** — set `RUNCOMFY_TOKEN=<token>` instead of `runcomfy login`.","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The skill instructs authentication through the RunComfy CLI and discusses token use. This is legitimate setup, but it involves external command execution and credential handling."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":74,"line_start":70}],"confidence":0.84,"description":"```bash","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The code block shows the agent or user running runcomfy with user-controlled prompt and media inputs. The command is intended, but it executes a local CLI and writes generated output."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":87,"line_start":78}],"confidence":0.84,"description":"```bash","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The code block shows the agent or user running runcomfy with user-controlled prompt and media inputs. The command is intended, but it executes a local CLI and writes generated output."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":100,"line_start":91}],"confidence":0.84,"description":"```bash","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The code block shows the agent or user running runcomfy with user-controlled prompt and media inputs. The command is intended, but it executes a local CLI and writes generated output."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":102,"line_start":102}],"confidence":0.7,"description":"The CLI submits, polls, fetches the result, downloads `*.runcomfy.net`/`*.runcomfy.com` URLs into `-","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The text describes the CLI submitting, polling, fetching, and downloading results into an output directory. These are real side effects from the external command workflow."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":173,"line_start":173}],"confidence":0.88,"description":"The skill invokes `runcomfy run bytedance/seedance-v2/pro` with a JSON body matching the schema. The","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The skill explicitly states that it invokes the runcomfy CLI and posts requests to the model API. This confirms intentional external command execution with network side effects."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":177,"line_start":177}],"confidence":0.74,"description":"- **Token storage**: `runcomfy login` writes the API token to `~/.config/runcomfy/token.json` with m","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The skill instructs authentication through the RunComfy CLI and discusses token use. This is legitimate setup, but it involves external command execution and credential handling."},{"title":"Hidden file access","locations":[{"file":"SKILL.md","line_end":177,"line_start":177}],"confidence":0.82,"description":"- **Token storage**: `runcomfy login` writes the API token to `~/.config/runcomfy/token.json` with m","review_kind":"capability","source_category":"filesystem","source_severity":"medium","confidence_reasoning":"The skill documents token storage at ~/.config/runcomfy/token.json. The storage is disclosed and permission-restricted, but it is real hidden-file credential handling."},{"title":"User Content Sent to Third-Party Model API","locations":[{"file":"SKILL.md","line_end":173,"line_start":173},{"file":"SKILL.md","line_end":179,"line_start":179}],"confidence":0.88,"description":"The skill states that prompts are POSTed to RunComfy and that referenced media URLs are fetched by the RunComfy model server. This creates a disclosed third-party data exposure risk for prompts and media references.","review_kind":"security","source_category":"semantic","source_severity":"medium","confidence_reasoning":"The source explicitly describes the model API POST and remote fetching of reference media. No evidence indicates covert exfiltration, so the finding is limited to disclosed privacy exposure."}],"low_findings":[{"title":"Hardcoded URL","locations":[{"file":"SKILL.md","line_end":173,"line_start":173}],"confidence":0.9,"description":"The skill invokes `runcomfy run bytedance/seedance-v2/pro` with a JSON body matching the schema. The","review_kind":"capability","source_category":"network","source_severity":"low","confidence_reasoning":"The line documents an outbound POST to the RunComfy model API and downloads from RunComfy domains. The network access is intentional and disclosed, not covert."}],"dangerous_patterns":[],"files_scanned":1,"total_lines":182,"audit_model":"codex","audited_at":"2026-07-08T00:37:15.013+00:00","created_at":"2026-07-08T01:28:59.438067+00:00","static_findings":[{"id":"external_commands:SKILL.md:10:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Calls `runcomfy run bytedance/seedance-v2/pro` through the local","category":"external_commands","line_end":10,"severity":"medium","line_start":10},{"id":"external_commands:SKILL.md:24:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":26,"severity":"medium","line_start":24},{"id":"external_commands:SKILL.md:26:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":38,"severity":"medium","line_start":26},{"id":"external_commands:SKILL.md:38:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Audio-driven lip-sync from your own track | Wan 2.7 (`audio_url`) |","category":"external_commands","line_end":46,"severity":"medium","line_start":38},{"id":"external_commands:SKILL.md:46:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"1. **RunComfy CLI** — `npm i -g @runcomfy/cli`","category":"external_commands","line_end":47,"severity":"medium","line_start":46},{"id":"external_commands:SKILL.md:47:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"2. **RunComfy account** — `runcomfy login` opens a browser device-code flow.","category":"external_commands","line_end":48,"severity":"medium","line_start":47},{"id":"external_commands:SKILL.md:48:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"3. **CI / containers** — set `RUNCOMFY_TOKEN=<token>` instead of `runcomfy login`.","category":"external_commands","line_end":48,"severity":"medium","line_start":48},{"id":"external_commands:SKILL.md:52:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"### `bytedance/seedance-v2/pro`","category":"external_commands","line_end":56,"severity":"medium","line_start":52},{"id":"external_commands:SKILL.md:56:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `prompt` | string | yes | — | CN ≤ 500 chars OR EN ≤ 1000 words. |","category":"external_commands","line_end":57,"severity":"medium","line_start":56},{"id":"external_commands:SKILL.md:57:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `image_url` | array | no | `[]` | 0–9 references (JPEG/PNG/WebP/BMP/TIFF/GIF). |","category":"external_commands","line_end":57,"severity":"medium","line_start":57},{"id":"external_commands:SKILL.md:58:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `video_url` | array | no | `[]` | 0–3 clips (MP4/MOV), 2–15s each. |","category":"external_commands","line_end":58,"severity":"medium","line_start":58},{"id":"external_commands:SKILL.md:59:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `audio_url` | array | no | `[]` | 0–3 audio refs (WAV/MP3), 2–15s, < 15MB each. |","category":"external_commands","line_end":59,"severity":"medium","line_start":59},{"id":"external_commands:SKILL.md:60:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `aspect_ratio` | enum | no | `adaptive` | `adaptive`, `16:9`, `9:16`, `4:3`, `3:4`, `1:1`, `21:9`.","category":"external_commands","line_end":60,"severity":"medium","line_start":60},{"id":"external_commands:SKILL.md:61:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `duration` | int | no | 5 | 4–15 (whole seconds). |","category":"external_commands","line_end":62,"severity":"medium","line_start":61},{"id":"external_commands:SKILL.md:62:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `resolution` | enum | no | `720p` | `480p` or `720p`. |","category":"external_commands","line_end":62,"severity":"medium","line_start":62},{"id":"external_commands:SKILL.md:63:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `generate_audio` | bool | no | true | In-pass synchronized speech / SFX / music. |","category":"external_commands","line_end":64,"severity":"medium","line_start":63},{"id":"external_commands:SKILL.md:64:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `seed` | int | no | — | Reproducibility. |","category":"external_commands","line_end":70,"severity":"medium","line_start":64},{"id":"external_commands:SKILL.md:70:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":74,"severity":"medium","line_start":70},{"id":"external_commands:SKILL.md:74:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":78,"severity":"medium","line_start":74},{"id":"external_commands:SKILL.md:78:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":87,"severity":"medium","line_start":78},{"id":"external_commands:SKILL.md:87:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":91,"severity":"medium","line_start":87},{"id":"external_commands:SKILL.md:91:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":100,"severity":"medium","line_start":91},{"id":"external_commands:SKILL.md:100:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":102,"severity":"medium","line_start":100},{"id":"external_commands:SKILL.md:102:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"The CLI submits, polls, fetches the result, downloads `*.runcomfy.net`/`*.runcomfy.com` URLs into `-","category":"external_commands","line_end":102,"severity":"medium","line_start":102},{"id":"external_commands:SKILL.md:106:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"**Image vs text division.** This is the single most important rule. Stable identity (face, costume, ","category":"external_commands","line_end":106,"severity":"medium","line_start":106},{"id":"external_commands:SKILL.md:108:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"**Camera + motion in plain language.** \"Medium close-up\", \"slow push-in\", \"handheld follow\", \"locked","category":"external_commands","line_end":110,"severity":"medium","line_start":108},{"id":"external_commands:SKILL.md:110:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"**Audio direction with `generate_audio: true`** — say the tone: `\"warm friendly conversational\"`, `\"","category":"external_commands","line_end":110,"severity":"medium","line_start":110},{"id":"external_commands:SKILL.md:117:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Trying to describe stable identity verbally → use `image_url` instead.","category":"external_commands","line_end":134,"severity":"medium","line_start":117},{"id":"external_commands:SKILL.md:134:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":139,"severity":"medium","line_start":134},{"id":"external_commands:SKILL.md:139:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":143,"severity":"medium","line_start":139},{"id":"external_commands:SKILL.md:143:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":148,"severity":"medium","line_start":143},{"id":"external_commands:SKILL.md:148:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":156,"severity":"medium","line_start":148},{"id":"external_commands:SKILL.md:156:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **No `@`-syntax for character binding** — relies on image refs + prompt alignment.","category":"external_commands","line_end":173,"severity":"medium","line_start":156},{"id":"external_commands:SKILL.md:173:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"The skill invokes `runcomfy run bytedance/seedance-v2/pro` with a JSON body matching the schema. The","category":"external_commands","line_end":173,"severity":"medium","line_start":173},{"id":"external_commands:SKILL.md:177: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":177,"severity":"medium","line_start":177},{"id":"external_commands:SKILL.md:178:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Input boundary**: the user prompt is passed as a JSON string to the CLI via `--input`. The CLI d","category":"external_commands","line_end":180,"severity":"medium","line_start":178},{"id":"external_commands:SKILL.md:180:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Outbound endpoints**: only `model-api.runcomfy.net` (request submission) and `*.runcomfy.net` / ","category":"external_commands","line_end":180,"severity":"medium","line_start":180},{"id":"network:SKILL.md:14:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"homepage: https://www.runcomfy.com","category":"network","line_end":14,"severity":"low","line_start":14},{"id":"network:SKILL.md:20:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"[runcomfy.com](https://www.runcomfy.com/?utm_source=skills.sh&utm_medium=skill&utm_campaign=seedance","category":"network","line_end":20,"severity":"low","line_start":20},{"id":"network:SKILL.md:82:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"\"image_url\": [\"https://.../barista-headshot.jpg\"],","category":"network","line_end":82,"severity":"low","line_start":82},{"id":"network:SKILL.md:95:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"\"image_url\": [\"https://.../subject.jpg\"],","category":"network","line_end":95,"severity":"low","line_start":95},{"id":"network:SKILL.md:96:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"\"video_url\": [\"https://.../cafe-locked-shot.mp4\"],","category":"network","line_end":96,"severity":"low","line_start":96},{"id":"network:SKILL.md:97:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"\"audio_url\": [\"https://.../voice-ref.mp3\"]","category":"network","line_end":97,"severity":"low","line_start":97},{"id":"network:SKILL.md:169: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":169,"severity":"low","line_start":169},{"id":"network:SKILL.md:173:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"The skill invokes `runcomfy run bytedance/seedance-v2/pro` with a JSON body matching the schema. The","category":"network","line_end":173,"severity":"low","line_start":173},{"id":"filesystem:SKILL.md:82:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"\"image_url\": [\"https://.../barista-headshot.jpg\"],","category":"filesystem","line_end":82,"severity":"high","line_start":82},{"id":"filesystem:SKILL.md:95:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"\"image_url\": [\"https://.../subject.jpg\"],","category":"filesystem","line_end":95,"severity":"high","line_start":95},{"id":"filesystem:SKILL.md:96:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"\"video_url\": [\"https://.../cafe-locked-shot.mp4\"],","category":"filesystem","line_end":96,"severity":"high","line_start":96},{"id":"filesystem:SKILL.md:97:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"\"audio_url\": [\"https://.../voice-ref.mp3\"]","category":"filesystem","line_end":97,"severity":"high","line_start":97},{"id":"filesystem:SKILL.md:177: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":177,"severity":"high","line_start":177},{"id":"filesystem:SKILL.md:177: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":177,"severity":"medium","line_start":177},{"id":"blocker:SKILL.md:42:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"If the user said \"Seedance\" / \"Seedance 2\" / \"ByteDance video\" explicitly, route here regardless.","category":"blocker","line_end":42,"severity":"low","line_start":42},{"id":"blocker:SKILL.md:112:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"**Reference media specs** — videos must be 2–15s; audio must be ≤15MB and 2–15s. Out-of-range files ","category":"blocker","line_end":112,"severity":"low","line_start":112}],"finding_verdicts":[{"id":"external_commands:SKILL.md:10:ruby-shell-backtick-execution","reason":"The line documents use of the runcomfy CLI as part of the skill workflow. This is an intended external command path rather than hidden execution.","verdict":"confirmed","severity":"medium","confidence":0.78},{"id":"external_commands:SKILL.md:24:ruby-shell-backtick-execution","reason":"The fenced example includes an npx command that installs a community skill globally. This is explicit external command execution and can modify the local tool environment.","verdict":"confirmed","severity":"medium","confidence":0.76},{"id":"external_commands:SKILL.md:26:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown formatting for field names, examples, code fences, or plain text. This location does not introduce command execution or command injection.","verdict":"false_positive","confidence":0.93},{"id":"external_commands:SKILL.md:38:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown formatting for field names, examples, code fences, or plain text. This location does not introduce command execution or command injection.","verdict":"false_positive","confidence":0.93},{"id":"external_commands:SKILL.md:46:ruby-shell-backtick-execution","reason":"The prerequisite tells users to install the RunComfy CLI globally with npm. Global package installation is an external command with supply-chain and local environment impact.","verdict":"confirmed","severity":"medium","confidence":0.78},{"id":"external_commands:SKILL.md:47:ruby-shell-backtick-execution","reason":"The skill instructs authentication through the RunComfy CLI and discusses token use. This is legitimate setup, but it involves external command execution and credential handling.","verdict":"confirmed","severity":"medium","confidence":0.74},{"id":"external_commands:SKILL.md:48:ruby-shell-backtick-execution","reason":"The skill instructs authentication through the RunComfy CLI and discusses token use. This is legitimate setup, but it involves external command execution and credential handling.","verdict":"confirmed","severity":"medium","confidence":0.74},{"id":"external_commands:SKILL.md:52:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown formatting for field names, examples, code fences, or plain text. This location does not introduce command execution or command injection.","verdict":"false_positive","confidence":0.93},{"id":"external_commands:SKILL.md:56:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown formatting for field names, examples, code fences, or plain text. This location does not introduce command execution or command injection.","verdict":"false_positive","confidence":0.93},{"id":"external_commands:SKILL.md:57:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown formatting for field names, examples, code fences, or plain text. This location does not introduce command execution or command injection.","verdict":"false_positive","confidence":0.93},{"id":"external_commands:SKILL.md:58:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown formatting for field names, examples, code fences, or plain text. This location does not introduce command execution or command injection.","verdict":"false_positive","confidence":0.93},{"id":"external_commands:SKILL.md:59:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown formatting for field names, examples, code fences, or plain text. This location does not introduce command execution or command injection.","verdict":"false_positive","confidence":0.93},{"id":"external_commands:SKILL.md:60:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown formatting for field names, examples, code fences, or plain text. This location does not introduce command execution or command injection.","verdict":"false_positive","confidence":0.93},{"id":"external_commands:SKILL.md:61:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown formatting for field names, examples, code fences, or plain text. This location does not introduce command execution or command injection.","verdict":"false_positive","confidence":0.93},{"id":"external_commands:SKILL.md:62:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown formatting for field names, examples, code fences, or plain text. This location does not introduce command execution or command injection.","verdict":"false_positive","confidence":0.93},{"id":"external_commands:SKILL.md:63:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown formatting for field names, examples, code fences, or plain text. This location does not introduce command execution or command injection.","verdict":"false_positive","confidence":0.93},{"id":"external_commands:SKILL.md:64:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown formatting for field names, examples, code fences, or plain text. This location does not introduce command execution or command injection.","verdict":"false_positive","confidence":0.93},{"id":"external_commands:SKILL.md:70:ruby-shell-backtick-execution","reason":"The code block shows the agent or user running runcomfy with user-controlled prompt and media inputs. The command is intended, but it executes a local CLI and writes generated output.","verdict":"confirmed","severity":"medium","confidence":0.84},{"id":"external_commands:SKILL.md:74:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown formatting for field names, examples, code fences, or plain text. This location does not introduce command execution or command injection.","verdict":"false_positive","confidence":0.93},{"id":"external_commands:SKILL.md:78:ruby-shell-backtick-execution","reason":"The code block shows the agent or user running runcomfy with user-controlled prompt and media inputs. The command is intended, but it executes a local CLI and writes generated output.","verdict":"confirmed","severity":"medium","confidence":0.84},{"id":"external_commands:SKILL.md:87:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown formatting for field names, examples, code fences, or plain text. This location does not introduce command execution or command injection.","verdict":"false_positive","confidence":0.93},{"id":"external_commands:SKILL.md:91:ruby-shell-backtick-execution","reason":"The code block shows the agent or user running runcomfy with user-controlled prompt and media inputs. The command is intended, but it executes a local CLI and writes generated output.","verdict":"confirmed","severity":"medium","confidence":0.84},{"id":"external_commands:SKILL.md:100:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown formatting for field names, examples, code fences, or plain text. This location does not introduce command execution or command injection.","verdict":"false_positive","confidence":0.93},{"id":"external_commands:SKILL.md:102:ruby-shell-backtick-execution","reason":"The text describes the CLI submitting, polling, fetching, and downloading results into an output directory. These are real side effects from the external command workflow.","verdict":"confirmed","severity":"medium","confidence":0.7},{"id":"external_commands:SKILL.md:106:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown formatting for field names, examples, code fences, or plain text. This location does not introduce command execution or command injection.","verdict":"false_positive","confidence":0.93},{"id":"external_commands:SKILL.md:108:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown formatting for field names, examples, code fences, or plain text. This location does not introduce command execution or command injection.","verdict":"false_positive","confidence":0.93},{"id":"external_commands:SKILL.md:110:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown formatting for field names, examples, code fences, or plain text. This location does not introduce command execution or command injection.","verdict":"false_positive","confidence":0.93},{"id":"external_commands:SKILL.md:117:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown formatting for field names, examples, code fences, or plain text. This location does not introduce command execution or command injection.","verdict":"false_positive","confidence":0.93},{"id":"external_commands:SKILL.md:134:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown formatting for field names, examples, code fences, or plain text. This location does not introduce command execution or command injection.","verdict":"false_positive","confidence":0.93},{"id":"external_commands:SKILL.md:139:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown formatting for field names, examples, code fences, or plain text. This location does not introduce command execution or command injection.","verdict":"false_positive","confidence":0.93},{"id":"external_commands:SKILL.md:143:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown formatting for field names, examples, code fences, or plain text. This location does not introduce command execution or command injection.","verdict":"false_positive","confidence":0.93},{"id":"external_commands:SKILL.md:148:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown formatting for field names, examples, code fences, or plain text. This location does not introduce command execution or command injection.","verdict":"false_positive","confidence":0.93},{"id":"external_commands:SKILL.md:156:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown formatting for field names, examples, code fences, or plain text. This location does not introduce command execution or command injection.","verdict":"false_positive","confidence":0.93},{"id":"external_commands:SKILL.md:173:ruby-shell-backtick-execution","reason":"The skill explicitly states that it invokes the runcomfy CLI and posts requests to the model API. This confirms intentional external command execution with network side effects.","verdict":"confirmed","severity":"medium","confidence":0.88},{"id":"external_commands:SKILL.md:177:ruby-shell-backtick-execution","reason":"The skill instructs authentication through the RunComfy CLI and discusses token use. This is legitimate setup, but it involves external command execution and credential handling.","verdict":"confirmed","severity":"medium","confidence":0.74},{"id":"external_commands:SKILL.md:178:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown formatting for field names, examples, code fences, or plain text. This location does not introduce command execution or command injection.","verdict":"false_positive","confidence":0.93},{"id":"external_commands:SKILL.md:180:ruby-shell-backtick-execution","reason":"The detected backticks are Markdown formatting for field names, examples, code fences, or plain text. This location does not introduce command execution or command injection.","verdict":"false_positive","confidence":0.93},{"id":"network:SKILL.md:14:hardcoded-url","reason":"The URL is a homepage, documentation link, or repository link in Markdown. It does not represent automatic network access by the skill.","verdict":"false_positive","confidence":0.91},{"id":"network:SKILL.md:20:hardcoded-url","reason":"The URL is a homepage, documentation link, or repository link in Markdown. It does not represent automatic network access by the skill.","verdict":"false_positive","confidence":0.91},{"id":"network:SKILL.md:82:hardcoded-url","reason":"The URL is a placeholder example using https://... for user-supplied reference media. It is not a hardcoded destination controlled by the skill.","verdict":"false_positive","confidence":0.96},{"id":"network:SKILL.md:95:hardcoded-url","reason":"The URL is a placeholder example using https://... for user-supplied reference media. It is not a hardcoded destination controlled by the skill.","verdict":"false_positive","confidence":0.96},{"id":"network:SKILL.md:96:hardcoded-url","reason":"The URL is a placeholder example using https://... for user-supplied reference media. It is not a hardcoded destination controlled by the skill.","verdict":"false_positive","confidence":0.96},{"id":"network:SKILL.md:97:hardcoded-url","reason":"The URL is a placeholder example using https://... for user-supplied reference media. It is not a hardcoded destination controlled by the skill.","verdict":"false_positive","confidence":0.96},{"id":"network:SKILL.md:169:hardcoded-url","reason":"The URL is a homepage, documentation link, or repository link in Markdown. It does not represent automatic network access by the skill.","verdict":"false_positive","confidence":0.91},{"id":"network:SKILL.md:173:hardcoded-url","reason":"The line documents an outbound POST to the RunComfy model API and downloads from RunComfy domains. The network access is intentional and disclosed, not covert.","verdict":"confirmed","severity":"low","confidence":0.9},{"id":"filesystem:SKILL.md:82:path-traversal-sequence","reason":"The sequence appears in placeholder URLs such as https://... and is not a filesystem path. There is no path traversal operation at this location.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:SKILL.md:95:path-traversal-sequence","reason":"The sequence appears in placeholder URLs such as https://... and is not a filesystem path. There is no path traversal operation at this location.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:SKILL.md:96:path-traversal-sequence","reason":"The sequence appears in placeholder URLs such as https://... and is not a filesystem path. There is no path traversal operation at this location.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:SKILL.md:97:path-traversal-sequence","reason":"The sequence appears in placeholder URLs such as https://... and is not a filesystem path. There is no path traversal operation at this location.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:SKILL.md:177:hidden-file-in-home-directory","reason":"The skill documents token storage at ~/.config/runcomfy/token.json. The storage is disclosed and permission-restricted, but it is real hidden-file credential handling.","verdict":"confirmed","severity":"high","confidence":0.82},{"id":"filesystem:SKILL.md:177:hidden-file-access","reason":"The skill documents token storage at ~/.config/runcomfy/token.json. The storage is disclosed and permission-restricted, but it is real hidden-file credential handling.","verdict":"confirmed","severity":"medium","confidence":0.82},{"id":"blocker:SKILL.md:42:system-reconnaissance","reason":"The line provides model-routing or media-spec guidance, not system reconnaissance. It does not request host details, secrets, or environment inspection.","verdict":"false_positive","confidence":0.94},{"id":"blocker:SKILL.md:112:system-reconnaissance","reason":"The line provides model-routing or media-spec guidance, not system reconnaissance. It does not request host details, secrets, or environment inspection.","verdict":"false_positive","confidence":0.94}],"semantic_findings":[{"title":"User Content Sent to Third-Party Model API","severity":"medium","locations":[{"file":"SKILL.md","line_end":173,"line_start":173},{"file":"SKILL.md","line_end":179,"line_start":179}],"confidence":0.88,"description":"The skill states that prompts are POSTed to RunComfy and that referenced media URLs are fetched by the RunComfy model server. This creates a disclosed third-party data exposure risk for prompts and media references.","confidence_reasoning":"The source explicitly describes the model API POST and remote fetching of reference media. No evidence indicates covert exfiltration, so the finding is limited to disclosed privacy exposure."}],"subject_marketplace_commit_sha":null,"subject_content_hash":null,"subject_tree_hash":null,"subject_plugin_path":null,"audit_payload_hash":null,"confirmed_risk_level":null,"scanner_version":null,"policy_version":null,"subject":{"marketplaceCommitSha":null,"contentHash":null,"treeHash":null,"pluginPath":null,"auditPayloadHash":null},"scannerVersion":null,"policyVersion":null},"auditTranslation":null,"localization":{"requestedLocale":"en","contentLocale":"en","availableLocales":["en"],"fallbackToEnglish":false},"attestation":{"availability":"not_attestable","url":null,"status":null,"reason":"confirmed_risk_level does not match the canonical trust resolver"},"trust":{"publicState":"public","auditState":"complete","auditCurrentness":null,"confirmedRiskLevel":"medium","confirmedFindingCount":1,"capabilityReviewCount":14,"needsReviewCount":0,"falsePositiveCount":0,"agentAutoInstallPolicy":"allowed","manualInstallPolicy":"allowed","artifactSignatureState":"available","attestationState":"not_attestable","verificationState":"not_verified"},"isLatest":false}}