LykosAI/StabilityMatrix · error · ValidationException

No Clip2 Selected

Error message

No Clip2 Selected

What it means

Identical mechanism to the Clip1 check: Flux mode's DualCLIPLoader requires a second text encoder, and SelectedClip2 being null makes clipName2 unresolvable, so the builder throws ValidationException before wiring the CLIP connection.

Solutions

  1. Select the second CLIP/text-encoder file (e.g. t5xxl_fp16.safetensors or its GGUF variant) in the Clip2 slot
  2. Confirm both CLIP files exist in the Model Manager and re-select them if paths changed
  3. Ensure disk space for the T5 encoder — a failed download can leave the slot empty

Example fix

// before
var clipName2 = SelectedClip2?.RelativePath ?? throw new ValidationException("No Clip2 Selected");
// after
if (SelectedClip2 is null)
{
    NotificationHelper.Warn("Select the second CLIP model (T5)");
    return;
}
var clipName2 = SelectedClip2.RelativePath;
Defensive patterns

Strategy: validation

Validate before calling

if (vm.SelectedClipType == "flux" && vm.SelectedClip2 is null)
    throw new InvalidOperationException("Flux requires Clip2 (e.g. t5xxl) to be selected");

Type guard

bool HasClip2(ModelCardViewModel vm) => vm.SelectedClip2 is { RelativePath.Length: > 0 };

Try / catch

try { builder.ApplyStep(e); } catch (ValidationException ex) when (ex.Message == "No Clip2 Selected") { NotifyUser("Select the T5 CLIP model for Flux"); }

Prevention

When it happens

Trigger: Building a Flux workflow (SelectedClipType == "flux") with Clip1 selected but the second CLIP slot (e.g. t5xxl) empty: SelectedClip2 is null.

Common situations: User picks clip_l but forgets the large T5 encoder file; T5 GGUF/safetensors file deleted or renamed after saving a workflow; templates copied between machines missing the second encoder.

Understand the failure class

Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.

Related errors


AI-assisted analysis of LykosAI/StabilityMatrix@af93d6ef57 (2026-09-12). Data as JSON: /api/errors/d3fa2f072ad1a965. Report an issue: GitHub.

Appendix: source

Thrown at StabilityMatrix.Avalonia/ViewModels/Inference/ModelCardViewModel.cs:1691

            );

            e.Builder.Connections.Base.Model = modelSamplingSd3.Output;
        }

        var vaeLoader = e.Nodes.AddTypedNode(
            new ComfyNodeBuilder.VAELoader
            {
                Name = e.Nodes.GetUniqueName(nameof(ComfyNodeBuilder.VAELoader)),
                VaeName = SelectedVae?.RelativePath ?? throw new ValidationException("No VAE Selected"),
            }
        );
        e.Builder.Connections.Base.VAE = vaeLoader.Output;

        if (SelectedClipType == "flux")
        {
            // DualCLIPLoader (GGUF variant can also load .safetensors, so any gguf pick routes there)
            var clipName1 = SelectedClip1?.RelativePath ?? throw new ValidationException("No Clip1 Selected");
            var clipName2 = SelectedClip2?.RelativePath ?? throw new ValidationException("No Clip2 Selected");
            var clipType = SelectedClipType ?? throw new ValidationException("No Clip Type Selected");

            e.Builder.Connections.Base.Clip = AnyClipIsGguf(SelectedClip1, SelectedClip2)
                ? e
                    .Nodes.AddTypedNode(
                        new ComfyNodeBuilder.DualCLIPLoaderGGUF
                        {
                            Name = e.Nodes.GetUniqueName(nameof(ComfyNodeBuilder.DualCLIPLoaderGGUF)),
                            ClipName1 = clipName1,
                            ClipName2 = clipName2,
                            Type = clipType,
                        }
                    )
                    .Output
                : e
                    .Nodes.AddTypedNode(
                        new ComfyNodeBuilder.DualCLIPLoader
                        {

View on GitHub (pinned to af93d6ef57)