openclaw - ✅(Solved) Fix [Bug]: [Bug] Comfy config path mismatch: plugins.entries.comfy.config accepted, runtime requires models.providers.comfy (keys rejected by validator) [1 pull requests, 1 comments, 2 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openclaw/openclaw#62388Fetched 2026-04-08 03:05:02
View on GitHub
Comments
1
Participants
2
Timeline
3
Reactions
0
Author
Participants
Timeline (top)
labeled ×2commented ×1

ComfyUI plugin config has a path mismatch in 2026.4.5: the onboard writes to plugins.entries.comfy.config, but the runtime reads from models.providers.comfy. The models.providers validator rejects all Comfy-specific keys.

Error Message

function getComfyConfig(cfg) { const raw = cfg?.models?.providers?.comfy; return isRecord(raw) ? raw : {}; } But putting config there fails validation:

Nested format (from docs): models.providers.comfy: Unrecognized keys: "mode", "image" Flat legacy format: models.providers.comfy: Unrecognized keys: "allowPrivateNetwork", "workflowPath", "promptNodeId", "outputNodeId" With models: [] added: models.providers.comfy: Unrecognized keys: "mode", "image" The models.providers validator only accepts standard LLM provider keys (baseUrl, apiKey, models, api). Comfy-specific keys are always rejected.

Config that works (accepted by validator, but runtime can't see it) { "plugins": { "entries": { "comfy": { "enabled": true, "config": { "mode": "local", "baseUrl": "http://192.168.1.112:8188", "allowPrivateNetwork": true, "image": { "workflowPath": "~/.openclaw/workspace/comfy-workflows/flux-schnell.json", "promptNodeId": "6", "outputNodeId": "12" } } } } } } Docs reference

https://docs.openclaw.ai/providers/comfy shows config under models.providers.comfy with nested image/video/music blocks, but this is rejected by the validator in 2026.4.5.

Confirmed by Discord support

Krill confirmed this is a regression — no config-only workaround exists in this version.

Steps to reproduce

  1. Install OpenClaw 2026.4.5
  2. Run npx openclaw onboard --auth-choice comfy — configures plugins.entries.comfy.config with mode, baseUrl, allowPrivateNetwork, image workflow
  3. Set agents.defaults.imageGenerationModel.primary to comfy/workflow
  4. Have ComfyUI running on LAN (e.g. 192.168.1.112:8188)
  5. Call image_generate with model comfy/workflow
  6. Error: models.providers.comfy.<capability>.workflow or workflowPath is required
  7. Move config to models.providers.comfy as documented → validator rejects Comfy-specific keys: "Unrecognized keys: mode, allowPrivateNetwork, workflowPath, promptNodeId, outputNodeId, image"

Expected behavior

image_generate with model comfy/workflow should generate an image via the configured ComfyUI instance, using the workflow JSON, promptNodeId, and outputNodeId from the config.

Actual behavior

Runtime reads config from cfg.models.providers.comfy (getComfyConfig in workflow-runtime), but:

  1. Onboard (--auth-choice comfy) writes config to plugins.entries.comfy.config — runtime never reads from there
  2. Putting config in models.providers.comfy fails validation — all Comfy-specific keys rejected as "Unrecognized keys"
  3. Result: no valid config path exists. image_generate always fails with "models.providers.comfy.<capability>.workflow or workflowPath is required"

OpenClaw version

OpenClaw 2026.4.5 (3e72c03)

Operating system

macOS 25.3.0 ARM64 (Mac Mini M4 Pro)

Install method

npm install -g openclaw Node v22.22.1

Model

anthropic/claude-opus-4-6

Provider / routing chain

Anthropic API direct (api-key auth)

Additional provider/model setup details

Model: anthropic/claude-opus-4-6 Provider/routing: Anthropic API direct (api-key auth) Additional: ComfyUI configured as image generation provider (comfy/workflow), not as LLM provider

Logs, screenshots, and evidence

Root Cause

Runtime reads from cfg.models.providers.comfy (source: getComfyConfig in workflow-runtime-CVir5_fU.js):

function getComfyConfig(cfg) {
    const raw = cfg?.models?.providers?.comfy;
    return isRecord(raw) ? raw : {};
}
But putting config there fails validation:

Nested format (from docs):
models.providers.comfy: Unrecognized keys: "mode", "image"
Flat legacy format:
models.providers.comfy: Unrecognized keys: "allowPrivateNetwork", "workflowPath", "promptNodeId", "outputNodeId"
With models: [] added:
models.providers.comfy: Unrecognized keys: "mode", "image"
The models.providers validator only accepts standard LLM provider keys (baseUrl, apiKey, models, api). Comfy-specific keys are always rejected.

Config that works (accepted by validator, but runtime can't see it)
{
  "plugins": {
    "entries": {
      "comfy": {
        "enabled": true,
        "config": {
          "mode": "local",
          "baseUrl": "http://192.168.1.112:8188",
          "allowPrivateNetwork": true,
          "image": {
            "workflowPath": "~/.openclaw/workspace/comfy-workflows/flux-schnell.json",
            "promptNodeId": "6",
            "outputNodeId": "12"
          }
        }
      }
    }
  }
}
Docs reference

https://docs.openclaw.ai/providers/comfy shows config under models.providers.comfy with nested image/video/music blocks, but this is rejected by the validator in 2026.4.5.

Confirmed by Discord support

Krill confirmed this is a regression — no config-only workaround exists in this version.

Fix Action

Fix / Workaround

Krill confirmed this is a regression — no config-only workaround exists in this version.

Discord support confirmation:

Krill (OpenClaw support bot) confirmed this is a regression — no config-only workaround exists in 2026.4.5.

Medium — ComfyUI image/video/music generation is completely non-functional in 2026.4.5. No config-only workaround exists. Blocks all users attempting to use local ComfyUI with this version.

PR fix notes

PR #63058: fix(comfy): read config from plugins.entries instead of models.providers

Description (problem / solution / changelog)

Summary

  • Move comfy plugin config reads from models.providers.comfy to plugins.entries.comfy.config, the standard plugin config path
  • ModelProviderSchema uses .strict() and requires a models array, so any comfy-specific keys (mode, image, video, music) caused hard validation errors that blocked config loading entirely
  • Add resolveComfyApiKey helper that checks plugin config apiKey, then COMFY_API_KEY, then COMFY_CLOUD_API_KEY env vars, removing the dependency on core resolveProviderConfig (which only looks at models.providers)
  • Update all docs, error messages, and test fixtures to use the new config path

Closes #61915, #62158, #62388, #62567

Test plan

  • Verify plugins.entries.comfy.config.image with workflowPath and promptNodeId passes schema validation
  • Verify COMFY_API_KEY and COMFY_CLOUD_API_KEY env vars are picked up for cloud mode
  • Verify inline apiKey in plugin config works for cloud mode
  • Run pnpm test extensions/comfy/ to confirm all unit tests pass

🤖 Generated with Claude Code

Changed files

  • docs/help/testing.md (modified, +1/-1)
  • docs/providers/comfy.md (modified, +38/-32)
  • docs/tools/music-generation.md (modified, +1/-1)
  • extensions/comfy/image-generation-provider.test.ts (modified, +3/-3)
  • extensions/comfy/music-generation-provider.test.ts (modified, +10/-8)
  • extensions/comfy/video-generation-provider.test.ts (modified, +3/-3)
  • extensions/comfy/workflow-runtime.ts (modified, +35/-18)

Code Example

function getComfyConfig(cfg) {
    const raw = cfg?.models?.providers?.comfy;
    return isRecord(raw) ? raw : {};
}
But putting config there fails validation:

Nested format (from docs):
models.providers.comfy: Unrecognized keys: "mode", "image"
Flat legacy format:
models.providers.comfy: Unrecognized keys: "allowPrivateNetwork", "workflowPath", "promptNodeId", "outputNodeId"
With models: [] added:
models.providers.comfy: Unrecognized keys: "mode", "image"
The models.providers validator only accepts standard LLM provider keys (baseUrl, apiKey, models, api). Comfy-specific keys are always rejected.

Config that works (accepted by validator, but runtime can't see it)
{
  "plugins": {
    "entries": {
      "comfy": {
        "enabled": true,
        "config": {
          "mode": "local",
          "baseUrl": "http://192.168.1.112:8188",
          "allowPrivateNetwork": true,
          "image": {
            "workflowPath": "~/.openclaw/workspace/comfy-workflows/flux-schnell.json",
            "promptNodeId": "6",
            "outputNodeId": "12"
          }
        }
      }
    }
  }
}
Docs reference

https://docs.openclaw.ai/providers/comfy shows config under models.providers.comfy with nested image/video/music blocks, but this is rejected by the validator in 2026.4.5.

Confirmed by Discord support

Krill confirmed this is a regression — no config-only workaround exists in this version.

### Steps to reproduce

1. Install OpenClaw 2026.4.5
2. Run `npx openclaw onboard --auth-choice comfy` — configures plugins.entries.comfy.config with mode, baseUrl, allowPrivateNetwork, image workflow
3. Set `agents.defaults.imageGenerationModel.primary` to `comfy/workflow`
4. Have ComfyUI running on LAN (e.g. 192.168.1.112:8188)
5. Call `image_generate` with model `comfy/workflow`
6. Error: `models.providers.comfy.<capability>.workflow or workflowPath is required`
7. Move config to `models.providers.comfy` as documented → validator rejects Comfy-specific keys: "Unrecognized keys: mode, allowPrivateNetwork, workflowPath, promptNodeId, outputNodeId, image"

### Expected behavior

image_generate with model comfy/workflow should generate an image via the configured ComfyUI instance, using the workflow JSON, promptNodeId, and outputNodeId from the config.

### Actual behavior

Runtime reads config from cfg.models.providers.comfy (getComfyConfig in workflow-runtime), but:

1. Onboard (--auth-choice comfy) writes config to plugins.entries.comfy.config — runtime never reads from there
2. Putting config in models.providers.comfy fails validation — all Comfy-specific keys rejected as "Unrecognized keys"
3. Result: no valid config path exists. image_generate always fails with "models.providers.comfy.<capability>.workflow or workflowPath is required"

### OpenClaw version

OpenClaw 2026.4.5 (3e72c03) 

### Operating system

macOS 25.3.0 ARM64 (Mac Mini M4 Pro) 

### Install method

npm install -g openclaw Node v22.22.1

### Model

anthropic/claude-opus-4-6

### Provider / routing chain

Anthropic API direct (api-key auth)

### Additional provider/model setup details

Model: anthropic/claude-opus-4-6
Provider/routing: Anthropic API direct (api-key auth)
Additional: ComfyUI configured as image generation provider (comfy/workflow), not as LLM provider

### Logs, screenshots, and evidence
RAW_BUFFERClick to expand / collapse

Bug type

Behavior bug (incorrect output/state without crash)

Beta release blocker

No

Summary

Summary

ComfyUI plugin config has a path mismatch in 2026.4.5: the onboard writes to plugins.entries.comfy.config, but the runtime reads from models.providers.comfy. The models.providers validator rejects all Comfy-specific keys.

Version

  • OpenClaw 2026.4.5 (3e72c03)
  • macOS ARM64, Node v22.22.1
  • ComfyUI running on LAN (DGX Spark, 192.168.1.112:8188, verified accessible)

Steps to reproduce

  1. npx openclaw onboard --auth-choice comfy → writes config to plugins.entries.comfy.config
  2. Set agents.defaults.imageGenerationModel.primary to comfy/workflow
  3. Call image_generate with model comfy/workflow

Expected

Image generated via ComfyUI workflow.

Actual[tools] image_generate failed: models.providers.comfy.<capability>.workflow or workflowPath is required

Root cause

Runtime reads from cfg.models.providers.comfy (source: getComfyConfig in workflow-runtime-CVir5_fU.js):

function getComfyConfig(cfg) {
    const raw = cfg?.models?.providers?.comfy;
    return isRecord(raw) ? raw : {};
}
But putting config there fails validation:

Nested format (from docs):
models.providers.comfy: Unrecognized keys: "mode", "image"
Flat legacy format:
models.providers.comfy: Unrecognized keys: "allowPrivateNetwork", "workflowPath", "promptNodeId", "outputNodeId"
With models: [] added:
models.providers.comfy: Unrecognized keys: "mode", "image"
The models.providers validator only accepts standard LLM provider keys (baseUrl, apiKey, models, api). Comfy-specific keys are always rejected.

Config that works (accepted by validator, but runtime can't see it)
{
  "plugins": {
    "entries": {
      "comfy": {
        "enabled": true,
        "config": {
          "mode": "local",
          "baseUrl": "http://192.168.1.112:8188",
          "allowPrivateNetwork": true,
          "image": {
            "workflowPath": "~/.openclaw/workspace/comfy-workflows/flux-schnell.json",
            "promptNodeId": "6",
            "outputNodeId": "12"
          }
        }
      }
    }
  }
}
Docs reference

https://docs.openclaw.ai/providers/comfy shows config under models.providers.comfy with nested image/video/music blocks, but this is rejected by the validator in 2026.4.5.

Confirmed by Discord support

Krill confirmed this is a regression — no config-only workaround exists in this version.

### Steps to reproduce

1. Install OpenClaw 2026.4.5
2. Run `npx openclaw onboard --auth-choice comfy` — configures plugins.entries.comfy.config with mode, baseUrl, allowPrivateNetwork, image workflow
3. Set `agents.defaults.imageGenerationModel.primary` to `comfy/workflow`
4. Have ComfyUI running on LAN (e.g. 192.168.1.112:8188)
5. Call `image_generate` with model `comfy/workflow`
6. Error: `models.providers.comfy.<capability>.workflow or workflowPath is required`
7. Move config to `models.providers.comfy` as documented → validator rejects Comfy-specific keys: "Unrecognized keys: mode, allowPrivateNetwork, workflowPath, promptNodeId, outputNodeId, image"

### Expected behavior

image_generate with model comfy/workflow should generate an image via the configured ComfyUI instance, using the workflow JSON, promptNodeId, and outputNodeId from the config.

### Actual behavior

Runtime reads config from cfg.models.providers.comfy (getComfyConfig in workflow-runtime), but:

1. Onboard (--auth-choice comfy) writes config to plugins.entries.comfy.config — runtime never reads from there
2. Putting config in models.providers.comfy fails validation — all Comfy-specific keys rejected as "Unrecognized keys"
3. Result: no valid config path exists. image_generate always fails with "models.providers.comfy.<capability>.workflow or workflowPath is required"

### OpenClaw version

OpenClaw 2026.4.5 (3e72c03) 

### Operating system

macOS 25.3.0 ARM64 (Mac Mini M4 Pro) 

### Install method

npm install -g openclaw Node v22.22.1

### Model

anthropic/claude-opus-4-6

### Provider / routing chain

Anthropic API direct (api-key auth)

### Additional provider/model setup details

Model: anthropic/claude-opus-4-6
Provider/routing: Anthropic API direct (api-key auth)
Additional: ComfyUI configured as image generation provider (comfy/workflow), not as LLM provider

### Logs, screenshots, and evidence

```shell
## Validation error (models.providers.comfy with nested format):
models.providers.comfy: Unrecognized keys: "mode", "image"

## Validation error (models.providers.comfy with flat legacy format):
models.providers.comfy: Unrecognized keys: "allowPrivateNetwork", "workflowPath", "promptNodeId", "outputNodeId"

## Runtime error when config is only in plugins.entries.comfy.config:
[tools] image_generate failed: models.providers.comfy.<capability>.workflow or workflowPath is required

## Source code confirmation (workflow-runtime-CVir5_fU.js):
function getComfyConfig(cfg) {
    const raw = cfg?.models?.providers?.comfy;
    return isRecord(raw) ? raw : {};
}

## Discord support confirmation:
Krill (OpenClaw support bot) confirmed this is a regression — no config-only workaround exists in 2026.4.5.

## Docs reference:
https://docs.openclaw.ai/providers/comfy shows config under models.providers.comfy with nested image/video/music blocks — rejected by validator in 2026.4.5.

Impact and severity

Medium — ComfyUI image/video/music generation is completely non-functional in 2026.4.5. No config-only workaround exists. Blocks all users attempting to use local ComfyUI with this version.

Additional information

No response

extent analysis

TL;DR

The most likely fix for the ComfyUI plugin configuration issue in OpenClaw 2026.4.5 is to update the configuration reader to accept Comfy-specific keys or modify the validator to allow these keys.

Guidance

  1. Identify the configuration mismatch: The onboard process writes to plugins.entries.comfy.config, but the runtime reads from models.providers.comfy. This mismatch causes the configuration to be unreadable by the runtime.
  2. Modify the configuration reader: Update the getComfyConfig function in workflow-runtime-CVir5_fU.js to read from plugins.entries.comfy.config instead of models.providers.comfy.
  3. Update the validator: Modify the validator to accept Comfy-specific keys, such as "mode", "image", "allowPrivateNetwork", "workflowPath", "promptNodeId", and "outputNodeId".
  4. Test the configuration: After making the necessary changes, test the configuration by running the image_generate command with the model comfy/workflow to ensure that it generates an image via the configured ComfyUI instance.

Example

// Modified getComfyConfig function
function getComfyConfig(cfg) {
    const raw = cfg?.plugins?.entries?.comfy?.config;
    return isRecord(raw) ? raw : {};
}

Notes

The provided solution is based on the information given in the issue and may not be a complete fix. It is recommended to test the changes thoroughly and consult with the OpenClaw support team if issues persist.

Recommendation

Apply a workaround by modifying the configuration reader and validator to accept Comfy-specific keys, as updating to a fixed version is not currently an option. This will allow ComfyUI image/video/music generation to function in OpenClaw 2026.4.5.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

FAQ

Expected behavior

image_generate with model comfy/workflow should generate an image via the configured ComfyUI instance, using the workflow JSON, promptNodeId, and outputNodeId from the config.

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING