dagger/dagger · error
failed to resolve canonical typedef for arg %q: %w
Error message
failed to resolve canonical typedef for arg %q: %w
What it means
Raised in Function.FieldSpec (core/typedef.go:257). After obtaining a module type (modType), calling its TypeDef(ctx) to get the canonical TypeDef failed. This wraps the underlying error, prefixed with the argument name.
Source
Thrown at core/typedef.go:257
}
spec.Module = module
if fn.SourceMap.Valid && fn.SourceMap.Value.Self() != nil {
spec.Directives = append(spec.Directives, fn.SourceMap.Value.Self().TypeDirective())
}
spec.Directives = append(spec.Directives, fn.Directives()...)
for _, arg := range fn.Args {
argSelf := arg.Self()
modType, ok, err := mod.ModTypeFor(ctx, argSelf.TypeDef.Self(), true)
if err != nil {
return spec, fmt.Errorf("failed to get typedef for arg %q: %w", argSelf.Name, err)
}
if !ok {
return spec, fmt.Errorf("failed to get typedef for arg %q", argSelf.Name)
}
argTypeDef, err := modType.TypeDef(ctx)
if err != nil {
return spec, fmt.Errorf("failed to resolve canonical typedef for arg %q: %w", argSelf.Name, err)
}
input := argTypeDef.Self().ToInput()
var defaultVal dagql.Input
if argSelf.DefaultValue != nil {
var val any
dec := json.NewDecoder(bytes.NewReader(argSelf.DefaultValue.Bytes()))
dec.UseNumber()
if err := dec.Decode(&val); err != nil {
return spec, fmt.Errorf("failed to decode default value for arg %q: %w", argSelf.Name, err)
}
var err error
defaultVal, err = input.Decoder().DecodeInput(val)
if err != nil {
return spec, fmt.Errorf("failed to decode dagql default value for arg %q: %w", argSelf.Name, err)
}
}View on GitHub (pinned to 82ba2681db)
Solutions
- Read the wrapped error for the root cause
- Re-sync module dependencies (dagger mod sync / dagger develop)
- Check the dependency module loads standalone (dagger functions in that module)
- Clear engine cache if stale state persists (dagger engine prune)
Defensive patterns
Strategy: try-catch
Validate before calling
// verify the dependency module loads before calling functions with its types
_, err := dag.Module(ctx, "other-module")
if err != nil { /* resolve module first */ } Try / catch
spec, err := fn.FieldSpec(ctx, mod)
if err != nil {
var inner error
if errors.As(err, &inner) {
log.Printf("root cause: %v", inner)
}
return err
} Prevention
- Test dependency modules load standalone (dagger functions)
- Avoid circular module references
- Pin matching module dependency versions
When it happens
Trigger: modType.TypeDef(ctx) errors during schema construction, typically when the module type's definition lazily resolves to something unavailable (dependent module's type graph not loaded/corrupt).
Common situations: Dependency module's functions referenced as argument types while that module fails to load; engine cache corruption after upgrade; circular module references.
Related errors
- failed to get typedef for arg %q: %w
- failed to get typedef for arg %q
- schema: %w
- load dependency schema: %w
- build object type def for %q: %w
AI-assisted analysis of dagger/dagger@82ba2681db (2026-09-05).
Data as JSON: /api/errors/b522a4ce6debdd38.
Report an issue: GitHub.