Agent skill · Audited from source

comfyui-mcp

skill · artokun/comfyui-mcpMIT licenceAudited 25 Oct 2026 · source a1f0ff69c3a7

★ 861pushed today
✕BLOCKGrade F · 26/100 · 25 findings · a1f0ff6
861repo stars · whole artokun/comfyui-mcp

Is it safe? No — BLOCK, grade F (26/100). We read this skill's source at commit a1f0ff69c3a7 and observed network and shell access and a hard-coded secret (see the findings). The audit raised 25 findings, 8 critical or high. What it does: Train custom LoRAs with ostris AI-Toolkit. Covers WAN 2.2/2.1 (people, styles, video motion) and Z-Image (Turbo & Base, low-VRAM image LoRAs). Use when the user wants to train a WAN or Z-Image LoRA; covers local +…

Ask an AI about this pageGChatGPTCClaudePPerplexityGeGeminiXGrok
More
Cite

Cite this page

ModelsAtlas. “comfyui-mcp (artokun/comfyui-mcp)”. Retrieved 25 Oct 2026. https://modelsatlas.com/skills/artokun/comfyui-mcp

Blocked. The page stays public so you can check this skill if someone recommended it to you. The audit found 8 critical or high findings, starting with “Network egress” in src/orchestrator/index.ts:1486. Do not install it without reading them.

Trust audit

Audit 0.4.1 · source read 25 Oct 2026

Trust score26/100✕BLOCK F
0 critical8 high12 medium35 low6 info

BLOCK means the audit found something that could harm you or your machine. Grade F is shared by 105 of 14,816 audited skills.

What the source does

  • FilesystemNone observedNo reads or writes in the source
  • NetworkDeclared11 observations
  • ShellDeclared5 observations
  • DependenciesNot pinnedSome versions float
  • SecretsFoundSee the findings; values are never shown

Five audit layers

LayerWhat we checkResultFindings
L0 ProvenanceRepo owner, licence, archive status, activityPASS2
L1 Static sourceSecrets, path traversal, supply chain, hidden codeFAIL17
L2 InstructionsPrompt injection, authority framing, hidden directivesFAIL6
L3 InventoryThe files and declarations match the sourcePASS0
L4 SandboxRun in isolation and watch behaviourSKIPPED why0

Gates applied: no behavioural pass.

Findings (25)

HIGHNetwork egressnet.tls_off · src/orchestrator/index.ts:1486
F-04 Network egressCWE-200 · CWE-319Layer L1
`Install cloudflared (npm i -g cloudflared), or re-run with --insecure-bridge and open the pod through an ` +
Why
certificate verification is disabled
Fix
leave verification on
HIGHNetwork egressnet.tls_off · src/orchestrator/index.ts:7118
F-04 Network egressCWE-200 · CWE-319Layer L1
`Install cloudflared (npm i -g cloudflared), or re-run with --insecure-bridge and open the pod through an ` +
Why
certificate verification is disabled
Fix
leave verification on
HIGHPrompt injectionprompt.credential_read · plugin/skills/ai-toolkit-trainer/SKILL.md:137
F-01 Prompt injectionCWE-94 · CWE-1427Layer L2
- **RunPod UI won't load / asks for a password.** Confirm `AI_TOOLKIT_AUTH` is set and you're on the 8675 proxy URL.
Why
asks the agent to read credentials
Fix
—
HIGHPrompt injectionprompt.zero_width · docs/fa/index.mdx:3
F-01 Prompt injectionCWE-94 · CWE-1427Layer L2
description: "سطح کنترلِ محلیمحور و بومیِ عامل برای ComfyUI — یک سرور MCP بههمراه افزونهٔ Claude Code که با زبان طبیعی تصویر، ویدیو و صدا تولید میکند، گردشکار مینویسد و اجرا میکند، و مدلها و گرههای سف
Why
invisible characters in instruction text
Fix
strip non-printing characters
HIGHPrompt injectionprompt.zero_width · docs/fa/index.mdx:7
F-01 Prompt injectionCWE-94 · CWE-1427Layer L2
**ComfyUI MCP** همان **سطح کنترلِ محلیمحور و بومیِ عامل** برای
Why
invisible characters in instruction text
Fix
strip non-printing characters
HIGHPrompt injectionprompt.zero_width · docs/fa/index.mdx:10
F-01 Prompt injectionCWE-94 · CWE-1427Layer L2
در حال اجرای ComfyUI وصل میکند — **محلی**، **از راه دور**، یا
Why
invisible characters in instruction text
Fix
strip non-printing characters
HIGHPrompt injectionprompt.zero_width · docs/fa/index.mdx:11
F-01 Prompt injectionCWE-94 · CWE-1427Layer L2
**[Comfy Cloud](https://cloud.comfy.org)** — تا بتوانید تصویر، ویدیو و صدا تولید کنید، گردشکارها را
Why
invisible characters in instruction text
Fix
strip non-printing characters
HIGHPrompt injectionprompt.zero_width · docs/fa/index.mdx:12
F-01 Prompt injectionCWE-94 · CWE-1427Layer L2
اجرا و تألیف کنید، مدلها و گرههای سفارشی را مدیریت کنید و سرور را کنترل کنید؛ همهٔ اینها با زبان
Why
invisible characters in instruction text
Fix
strip non-printing characters
MEDIUMInformation disclosuredisclose.log_secret · src/orchestrator/grok-backend.ts:1628
F-12 Information disclosureCWE-209 · CWE-532Layer L1
logger.warn(`[grok-backend] direct-token turn failed: ${msgOf(err)}`);
Why
No further detail recorded for this rule.
Fix
—
MEDIUMInformation disclosuredisclose.log_secret · src/orchestrator/index.ts:5163
F-12 Information disclosureCWE-209 · CWE-532Layer L1
logger.info(`[panel-orchestrator] secret set from panel Settings: ${key} (redacted)`);
Why
No further detail recorded for this rule.
Fix
—
MEDIUMInformation disclosuredisclose.log_secret · src/services/ui-bridge.ts:3276
F-12 Information disclosureCWE-209 · CWE-532Layer L1
logger.info(`[ui-bridge] pairing listener on ws://${host}:${port} (token-gated)`);
Why
No further detail recorded for this rule.
Fix
—
MEDIUMObfuscation / stealthobf.base64_blob · packs/wan-animate/workflow.json:4748
F-07 Obfuscation / stealthCWE-506 · CWE-94Layer L1
"/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI
Why
No further detail recorded for this rule.
Fix
—
MEDIUMObfuscation / stealthobf.zero_width · scripts/sync-agents.mjs:20
F-07 Obfuscation / stealthCWE-506 · CWE-94Layer L1
const normalized = content.replace(/^/, '').replace(/\r\n/g, '\n');
Why
No further detail recorded for this rule.
Fix
—
MEDIUMHard-coded secretssecret.aws · src/__tests__/services/respawn-orphans-downloads.test.ts:96
F-03 Hard-coded secretsCWE-798 · CWE-321Layer L1
{ filename: "…", status: "…", trayId: "a" },
Why
No further detail recorded for this rule.
Fix
—
MEDIUMHard-coded secretssecret.generic · src/__tests__/comfyui/enqueue-error-redaction.test.ts:15
F-03 Hard-coded secretsCWE-798 · CWE-321Layer L1
const TOKEN = "…";
Why
No further detail recorded for this rule.
Fix
—
MEDIUMHard-coded secretssecret.generic · src/__tests__/comfyui/json-guard-base-url-redaction.test.ts:21
F-03 Hard-coded secretsCWE-798 · CWE-321Layer L1
const { TOKEN } = vi.hoisted(() => ({ TOKEN: "…" }));
Why
No further detail recorded for this rule.
Fix
—
MEDIUMHard-coded secretssecret.generic · src/__tests__/comfyui/json-guard.test.ts:746
F-03 Hard-coded secretsCWE-798 · CWE-321Layer L1
const token = "…";
Why
No further detail recorded for this rule.
Fix
—
MEDIUMHard-coded secretssecret.generic · src/__tests__/comfyui/log-overredaction.test.ts:146
F-03 Hard-coded secretsCWE-798 · CWE-321Layer L1
const token = "…";
Why
No further detail recorded for this rule.
Fix
—
MEDIUMHard-coded secretssecret.generic · src/__tests__/comfyui/log-overredaction.test.ts:158
F-03 Hard-coded secretsCWE-798 · CWE-321Layer L1
const token = "…";
Why
No further detail recorded for this rule.
Fix
—
MEDIUMHard-coded secretssecret.github · src/__tests__/services/manager-error-body.test.ts:164
F-03 Hard-coded secretsCWE-798 · CWE-321Layer L1
"…";
Why
No further detail recorded for this rule.
Fix
—
LOWInventory / provenanceinv.suspicious_name · src/__tests__/orchestrator/ollama-image-payload-budget.test.ts
F-13 Inventory / provenanceCWE-1104Layer L0
ollama-image-payload-budget.test.ts
Why
member named after an attack tool
Fix
remove or justify
LOWInventory / provenanceinv.suspicious_name · src/__tests__/services/remote-payload-probe.test.ts
F-13 Inventory / provenanceCWE-1104Layer L0
remote-payload-probe.test.ts
Why
member named after an attack tool
Fix
remove or justify
LOWCode injectioncode.eval_exec · src/__tests__/orchestrator/panel-console-http.test.ts:196
F-02 Code injectionCWE-78 · CWE-94 · CWE-95Layer L1
for (const body of scripts) expect(() => new Function(body)).not.toThrow();
Why
evaluates text as code
Fix
remove; use a parser or a dispatch table
LOWCode injectioncode.eval_exec · src/__tests__/orchestrator/panel-console-i18n.test.ts:177
F-02 Code injectionCWE-78 · CWE-94 · CWE-95Layer L1
for (const body of scripts) expect(() => new Function(body)).not.toThrow();
Why
evaluates text as code
Fix
remove; use a parser or a dispatch table
LOWCode injectioncode.eval_exec · src/__tests__/orchestrator/probeok-hoisting.test.ts:66
F-02 Code injectionCWE-78 · CWE-94 · CWE-95Layer L1
return new Function(
Why
evaluates text as code
Fix
remove; use a parser or a dispatch table

Audit 0.4.1 · source sha a1f0ff69c3a7 · 25 Oct 2026Report an issue or request a re-scan

Provenance

Who published it, and what the verdict is pinned to

  • Publisherartokun GitHub userOwner of the repository this skill is read from
  • Source folderartokun/comfyui-mcpThe exact folder we audited
  • LicenceMITAs the repository states it
  • Commit pinned for this verdicta1f0ff69c3a7A new audit runs when the source changes
  • Repository statusNot archivedPushed today
  • Sandboxed runNot runSkills are read, not executed; layer L4 is skipped

What it tells the agent

Full source on GitHub ↗

Its description: Train custom LoRAs with ostris AI-Toolkit. Covers WAN 2.2/2.1 (people, styles, video motion) and Z-Image (Turbo & Base, low-VRAM image LoRAs). Use when the user wants to train a WAN or Z-Image LoRA; covers local +…

---
name: ai-toolkit-trainer
description: Train custom LoRAs with ostris AI-Toolkit. Covers WAN 2.2/2.1 (people, styles, video motion) and Z-Image (Turbo & Base, low-VRAM image LoRAs). Use when the user wants to train a WAN or Z-Image LoRA; covers local + RunPod setup, dataset prep, key params, and using the result in a ComfyUI workflow.
globs:
  - "**/*.json"
---

# AI-Toolkit LoRA Trainer (WAN 2.2 & Z-Image)

## Overview

AI-Toolkit by ostris is an MIT-licensed trainer for finetuning diffusion models. It is a standalone trainer with its own web UI, not a ComfyUI custom node. It runs a Node.js UI front end over a Python (`run.py`) training backend and trains LoRAs for many model families. This skill covers the WAN 2.2 / 2.1 video models and Z-Image (Turbo & Base).

- Repo: `https://github.com/ostris/ai-toolkit` (cloned by the installers).
- Backend: `python run.py config/<job>.yml`. UI: a Node.js app under `ui/` that schedules and monitors jobs. You do not have to keep the UI open while a job runs.
- Output: a standard `.safetensors` LoRA you drop into ComfyUI `models/loras/` and load with `LoraLoaderModelOnly`.

Best for:
- WAN LoRAs. A person or character, an art style, or a specific camera or video motion, trained from image or video clip datasets. For *using* WAN see wan-t2v-video / wan-flf-video.
- Z-Image LoRAs. Fast, very low-VRAM image LoRAs (faces, characters, outfits, styles) on the 6B Z-Image base/turbo. For *using* Z-Image see z-image-base / z-image-turbo, and the z-image-xy-plot pack to compare trained LoRAs.

For low-VRAM anime image LoRAs on a different stack (kohya `sd-scripts`), see the sibling anima-lora-trainer.

> Two LoRA kinds for WAN. A WAN image LoRA trains on still images; it is cheaper (~24GB-class) and suits identity or style. A WAN video LoRA trains on short clips; it is heavier, best run on cloud, and suits *motion*. Z-Image is image-only.

## Install

The installer comes in two generations. Both clone `ostris/ai-toolkit`, set up Torch for your GPU, and launch the web UI. Put it in a folder whose full path has no spaces (e.g. `C:\AI-Toolkit`).

- V1, `AI-TOOLKIT_AUTO_INSTALL.bat`, expects Git, Python 3.10.x, and Node 18+ already in PATH.
- V2, `AI-TOOLKIT_AUTO_INSTALL-V2.bat` (recommended), uses an embedded Python 3.10.11, auto-installs Git and Node, builds a clean PATH without your system Python, and adds aggressive pip/curl retries. It has far fewer prerequisites and fails less often. The Z-Image Turbo LoRA training release used it.

Both are CUDA-aware and select the Torch wheel by GPU generation:

| Choice | GPU | CUDA | Torch index | Torch packages |
|--------|-----|------|-------------|----------------|
| 1 | RTX 50-series (Blackwell) | **12.8** | `https://download.pytorch.org/whl/cu128` | `torch==2.7.0 torchvision==0.22.0` |
| 2 | RTX 40 / 30 / 20 and older | **12.6** | `https://download.pytorch.org/whl/cu126` | `torch==2.7.0 torchvision==0.22.0` |

Each then clones `ostris/ai-toolkit`, downloads two launcher scripts (`LAUNCHER-TOOLKIT.bat`, `SECURE_LAUNCHER-TOOLKIT.bat`, from `https://huggingface.co/Aitrepreneur/FLX/resolve/main/`), makes the venv, installs Torch from the chosen index, runs `pip install -r requirements.txt`, then `cd ui && npm run build_and_start`.

### RunPod / Linux — `AI-TOOLKIT_AUTO_INSTALL-RUNPOD.sh` (and `-V2.sh`)

Installs into the persistent volume `/workspace/ai-toolkit`. It is idempotent; a re-run just relaunches the UI. Use RunPod's PyTorch 2.8.0 template and a 100GB disk. It installs apt deps, clones the repo, makes a venv, installs Torch (`torchaudio` included), installs nvm + Node 22, then builds and starts the UI.

| Choice | GPU | Stream | Torch spec |
|--------|-----|--------|-----------|
| 1 | RTX 5000-series (Blackwell) | `cu128` | `torch==2.7.0+cu128 torchvision==0.22.0+cu128 torchaudio==2.7.0+cu128` |
| 2 | Ada / Hopper / Ampere, older | `cu126` | `torch==2.7.0 torchvision==0.22.0 torchaudio==2.7.0` |

The UI listens on 8675 and Jupyter on 8888. Set `AI_TOOLKIT_AUTH` (UI password) before launch. Reach it at `https://${RUNPOD_POD_ID}-8675.proxy.runpod.net`. Use an RTX 4090/5090 for image (WAN t2i/t2v, Z-Image) LoRAs and an RTX 6000 Pro (Blackwell) for heavy WAN video, high-res, or high-rank jobs.

## Launching the web UI

- On Windows, run `LAUNCHER-TOOLKIT.bat` (local) or `SECURE_LAUNCHER-TOOLKIT.bat` (password-protected) from the `ai-toolkit` folder.
- On RunPod, rerun the `.sh`. It detects the install and starts the UI on :8675.

In the UI, create a Job, point it at a dataset folder, pick the model (WAN variant or Z-Image), set params, and start. Jobs run in the Python backend, so you can close the browser. To bypass the UI, copy a `config/examples/*.yml`, edit it, and run `python run.py config/<job>.yml`.

## Dataset preparation

AI-Toolkit pairs each sample with a same-basename `.txt` caption and auto-resizes/buckets aspect ratios (no pre-cropping).

### Image LoRA (WAN identity/style, or Z-Image)
```
my_dataset/
  001.png  001.txt
  002.jpg  002.txt
```
- Captions are natural language. Include a unique trigger word for a person or character.
- Use about 15 to 40 varied images for a person, more for a broad style.

### Video LoRA (WAN motion only)
Short clips plus a `.txt` per clip; caption the motion or camera move. Set per-clip frames via the job's `num_frames` (e.g. 81). This is markedly heavier, so prefer cloud GPUs.

## Key training params

### WAN 2.2
WAN 2.2 14B is a Mixture-of-Experts with a high-noise expert (structure/motion) and a low-noise expert (detail). AI-Toolkit trains both via Multi-stage.

| Param | Default | Notes |
|-------|---------|-------|
| Linear rank / dim | **16** | 16 simple; 16–32 complex/cinematic |
| Learning rate | **5e-5** (identity) | 7e-5–1e-4 style; high LR → plasticky skin |
| Steps | **1500–2500** | stop before overbaking |
| Resolution | **512** (or 768) | bucketed; 768 costs more VRAM |
| `num_frames` (video) | **81** | per-clip frame count |
| Multi-stage | **High + L

Excerpt, first 6,000 characters of SKILL.md, verbatim from the audited commit. It is text from someone else’s repository, quoted so you can judge it before your agent reads it.

Install

Pinned to the audited commit a1f0ff6

npm install --no-optional comfyui-mcp
git clone https://github.com/artokun/comfyui-mcp
npm install        # builds native deps (better-sqlite3, sharp)
git clone https://github.com/artokun/comfyui-mcp.git
npm install
claude mcp add

Commands as the repository documents them: shown, never run by us. Our verdict covers commit a1f0ff69c3a7 only.

Works in which agents?

What its own text says, not a test

AgentStatusMore
Claude CodeMentioned in its text, not testedSkills for Claude Code · About Claude Code
Claude DesktopMentioned in its text, not testedSkills for Claude Desktop · About Claude Desktop
CodexMentioned in its text, not testedSkills for Codex · About Codex
GitHub CopilotMentioned in its text, not testedSkills for GitHub Copilot · About GitHub Copilot
CursorMentioned in its text, not testedSkills for Cursor · About Cursor
Gemini CLIMentioned in its text, not testedSkills for Gemini CLI · About Gemini CLI
OpenClawMentioned in its text, not testedSkills for OpenClaw · About OpenClaw
“Mentioned” means the skill’s text names the agent. We have not run it there.

Audit history

Every audit, every source change

  1. ✕BLOCK F 26 / 100

    first audit · source a1f0ff69c3a7

Similar skills

Questions about comfyui-mcp

What does the comfyui-mcp skill do?
Local-first, agent-native control plane for ComfyUI — MCP server + sidebar agent that generates images, video & audio, authors and runs workflows, and edits your live graph in natural language on ANY LLM (Claude, ChatGPT, Gemini, offline Ollama, or any hosted model). 178 tools, 36 AI skills, 55 inst
Is comfyui-mcp safe to install?
No — not without reading the findings first. The audit graded it F (26/100) and found 8 critical or high issues in the source. Each one is listed on this page with the file and line it is on.
What can comfyui-mcp access on my machine?
The audit observed that it reaches the network and runs shell commands. Each of those is consistent with what it says it does. Secrets in the source: found — see the findings.
Which assistants does comfyui-mcp work with?
Its documentation mentions claude-code, claude-desktop, codex, copilot, cursor, gemini-cli and openclaw. That is what the text claims, not a compatibility test we ran.
How current is this page?
The grade is for one exact copy of the source (a1f0ff69c3a7), read on 2026-10-25. The repository is watched, and a new audit runs when it changes — this is the first audit.

Sources

Spotted something wrong? Report a correction · Methodology

Keep going in your AI

Opens with this page as the source. We add nothing else to the prompt.