dagger/dagger · error

encode persisted address: nil address

Error message

encode persisted address: nil address

What it means

Sentinel-style guard in Address.EncodePersistedObject: the receiver Address pointer is nil, so there is no address data to encode into a persisted object ID. Fires on an internal state bug — persisted objects should never be nil when encoded.

Source

Thrown at core/address.go:34

var _ dagql.PersistedObject = (*Address)(nil)
var _ dagql.PersistedObjectDecoder = (*Address)(nil)

func (*Address) Type() *ast.Type {
	return &ast.Type{
		NamedType: "Address",
		NonNull:   true,
	}
}

func (*Address) TypeDescription() string {
	return `A standardized address to load containers, directories, secrets, and other object types. Address format depends on the type, and is validated at type selection.`
}

func (addr *Address) EncodePersistedObject(ctx context.Context, cache dagql.PersistedObjectCache) (dagql.PersistedObjectEncoding, error) {
	_ = ctx
	_ = cache
	if addr == nil {
		return dagql.PersistedObjectEncoding{}, fmt.Errorf("encode persisted address: nil address")
	}
	return encodePersistedObjectPayload(addr)
}

func (*Address) DecodePersistedObject(ctx context.Context, dag *dagql.Server, _ uint64, _ *dagql.ResultCall, payload json.RawMessage) (dagql.Typed, error) {
	_ = ctx
	_ = dag
	var addr Address
	if err := json.Unmarshal(payload, &addr); err != nil {
		return nil, fmt.Errorf("decode persisted address payload: %w", err)
	}
	return &addr, nil
}

View on GitHub (pinned to 82ba2681db)

Solutions

  1. Investigate why a nil *Address reached persistence (likely an engine/core bug)
  2. Ensure Address results are constructed before being returned via dagql
Defensive patterns

Strategy: type-guard

When it happens

Trigger: Thrown at core/address.go:34 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/2f5480f7b790238a. Report an issue: GitHub.