lima-vm/lima · error
field `probe[%d].file.digest` support is not yet implemented
Error message
field `probe[%d].file.digest` support is not yet implemented
What it means
A probe entry declares a `file.digest`, which is parsed but not yet implemented; probe file verification is currently unsupported.
Source
Thrown at pkg/limayaml/validate.go:295
needsContainerdArchives := (y.Containerd.User != nil && *y.Containerd.User) || (y.Containerd.System != nil && *y.Containerd.System)
if needsContainerdArchives {
if len(y.Containerd.Archives) == 0 {
errs = errors.Join(errs, errors.New("field `containerd.archives` must be provided"))
}
for i, f := range y.Containerd.Archives {
err := validateFileObject(f, fmt.Sprintf("containerd.archives[%d]", i))
if err != nil {
errs = errors.Join(errs, err)
}
}
}
for i, p := range y.Probes {
if p.File != nil {
if p.File.URL != "" {
errs = errors.Join(errs, fmt.Errorf("field `probe[%d].file.url` must be empty during validation (script should already be embedded)", i))
}
if p.File.Digest != nil {
errs = errors.Join(errs, fmt.Errorf("field `probe[%d].file.digest` support is not yet implemented", i))
}
}
if p.Script != nil && !strings.HasPrefix(*p.Script, "#!") {
errs = errors.Join(errs, fmt.Errorf("field `probe[%d].script` must start with a '#!' line", i))
}
switch p.Mode {
case limatype.ProbeModeReadiness:
default:
errs = errors.Join(errs, fmt.Errorf("field `probe[%d].mode` can only be %#q", i, limatype.ProbeModeReadiness))
}
}
for i, rule := range y.PortForwards {
field := fmt.Sprintf("portForwards[%d]", i)
if *rule.GuestIPMustBeZero && !rule.GuestIP.Equal(net.IPv4zero) {
errs = errors.Join(errs, fmt.Errorf("field `%s.guestIPMustBeZero` can only be true when field `%s.guestIP` is 0.0.0.0", field, field))
}
if rule.GuestPort != 0 {
if rule.GuestSocket != "" {View on GitHub (pinned to dd909d0973)
Solutions
- Remove the `digest:` field from the probe's `file` entry
- Embed the script inline via `script:` with a `#!` shebang instead of using file+digest
Example fix
// before
probes:
- file:
url: https://example.com/check.sh
digest: sha256:abc...
// after
probes:
- script: |
#!/bin/sh
echo ok Defensive patterns
Strategy: validation
Validate before calling
for i, p := range cfg.Probes {
if p.File != nil && p.File.Digest != nil {
return fmt.Errorf("probe[%d].file.digest is unsupported; remove it", i)
}
} Type guard
func probeHasDigest(p limatype.Probe) bool {
return p.File != nil && p.File.Digest != nil
} Prevention
- Do not add digest to probe.file entries; the feature is unimplemented
- Check the lima version's schema docs before using newer fields
- Keep probes as inline scripts to avoid file/digest handling entirely
When it happens
Trigger: Calling limactl validate/start/etc. with a probe entry whose `file:` object includes a `digest:` field.
Common situations: Copying a file object with digest from `containerd.archives` or `additionalDisks`-style examples into a probe; hoping to verify an integrity-checked probe script.
Related errors
- field `probe[%d].file.url` must be empty during validation (
- field `probe[%d].script` must start with a '#!' line
- errors inspecting instance: %+v
- unknown provision mode %#q
- invalid network spec %+v
AI-assisted analysis of lima-vm/lima@dd909d0973 (2026-09-01).
Data as JSON: /api/errors/049678732c8c4d7d.
Report an issue: GitHub.