Skip to content

v0.9.0 — seven P1 fixes, and operator-set consent for clients that cannot prompt

Choose a tag to compare

@skishore23 skishore23 released this 08 Aug 10:11
· 34 commits to main since this release
99c61c2

Seven P1 defects found by two independent QA passes (Claude Code and Codex CLI). Both clients hitting the same failures is what established them as server-side rather than client quirks.

First release published to PyPIpip install comfy-mcp.

Fixed

  • generate_image was dead. It shelled out to comfy run-template default, but default had left the gallery, so every call failed. CI never caught it because the tests asserted the same dead constant. The on-ramp now runs image_z_image_turbo; a template going missing in future yields an error naming templates that exist.
  • search_templates answered the wrong rows. query was a raw substring test — MiniMax Text to Video returned nothing while MiniMax H3: Text to Video existed, and ext to imag matched 91 rows. Now a word-anchored phrase pass with an all-words fallback.
  • Consent gates blamed the user for refusals nobody made. Every non-accept answer collapsed into "the user declined", including clients that never showed a prompt. Gates still fail closed.
  • discover could not be called at its own default — ~63 KB from the CLI, ~109 KB pretty-printed, over a typical 25,000-token cap.
  • Mis-paired workflow slots were relayed as fact. set_workflow_slot would have written into the wrong field while reporting success, with validate_workflow still reporting valid.
  • update_comfyui leaked a traceback on a detached HEAD — a normal state for a version-pinned install.
  • Emitted partner workflows carried no cost provenance, though the file is what gets handed to run_workflow, where billing happens.

Added

  • COMFY_MCP_ASSUME_CONSENT — pre-authorize specific confirmation gates from the server's environment, for clients that cannot display a prompt. Set by whoever configures the server, in a file the model cannot edit. Spending is excluded by construction: no value, including all, reaches the credit gates.

Changed — check before upgrading

  • discover() returns a schema_index instead of every schema body. Use command="<name>" for one, or schemas_only=False for the full surface.
  • generate_image runs a different template and refuses checkpoint= on split-loader graphs, which are now the gallery norm.
  • search_templates may return match: "all-words", flagging a widened result.

Known issues — upstream in comfy-cli

Progress streaming delivers nothing (comfy jobs watch emits one envelope at the end), nodes(action="path") ignores from_type/max_depth while claiming "exact": true, and the slot mis-pairing above originates in comfy workflow slots — this release detects and refuses it but cannot repair the pairing.

Full notes in CHANGELOG.md.