dagger/dagger · error

resolve interface implementation raw id: nil

Error message

resolve interface implementation raw id: nil

What it means

CollectContent on InterfaceType: the value's ID() succeeded but returned a nil *call.ID, so there is no reference to load an implementation from. A degenerate value that claims to be IDable but carries no ID.

Source

Thrown at core/interface.go:199

	loadedImpl := &loadedIfaceImpl{
		val:     objVal,
		valType: modType,
	}
	return loadedImpl, nil
}

func (iface *InterfaceType) CollectContent(ctx context.Context, value dagql.AnyResult, content *CollectedContent) error {
	if value == nil {
		return content.CollectJSONable(nil)
	}

	id, err := value.ID()
	if err != nil {
		return fmt.Errorf("resolve interface implementation raw id: %w", err)
	}
	if id == nil {
		return fmt.Errorf("resolve interface implementation raw id: nil")
	}

	loadedImpl, err := iface.loadImpl(ctx, id)
	if err != nil {
		return fmt.Errorf("load interface implementation: %w", err)
	}

	return loadedImpl.valType.CollectContent(ctx, loadedImpl.val, content)
}

func (iface *InterfaceType) ConvertToSDKInput(ctx context.Context, value dagql.Typed) (any, error) {
	if value == nil {
		return nil, nil
	}
	idable, ok := value.(dagql.IDable)
	if !ok {
		return nil, fmt.Errorf("unexpected interface value type for conversion to sdk input %T", value)
	}

View on GitHub (pinned to 82ba2681db)

Solutions

  1. Collect from a value whose ID is actually populated
  2. Rebuild the result through a real dagql selection so it has a call ID
  3. Treat nil-ID values as unsupported inputs earlier in the pipeline
Defensive patterns

Strategy: type-guard

When it happens

Trigger: Thrown at core/interface.go:199 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of dagger/dagger@82ba2681db (2026-09-05). Data as JSON: /api/errors/ab060a30fcdc42e7. Report an issue: GitHub.