hashicorp/nomad · error
Missing task name
Error message
Missing task name
What it means
Task.Validate requires every task in a group to have a non-empty Name. The name is used for allocation directories, logs, and task lookup, so an unnamed task is invalid. This fires during job validation before submission.
Source
Thrown at nomad/structs/structs.go:8231
}
// If there was no default identity, always create one.
if t.Identity == nil {
t.Identity = DefaultWorkloadIdentity()
} else {
t.Identity.Canonicalize()
}
}
func (t *Task) GoString() string {
return fmt.Sprintf("*%#v", *t)
}
// Validate is used to check a task for reasonable configuration
func (t *Task) Validate(jobType string, tg *TaskGroup) error {
var mErr multierror.Error
if t.Name == "" {
mErr.Errors = append(mErr.Errors, errors.New("Missing task name"))
}
// Tasks cannot be named "alloc" as this conflicts with and breaks task
// filesystem isolation features.
if t.Name == "alloc" {
mErr.Errors = append(mErr.Errors, errors.New("Task cannot be named \"alloc\""))
}
if strings.ContainsAny(t.Name, `/\`) {
// We enforce this so that when creating the directory on disk it will
// not have any slashes.
mErr.Errors = append(mErr.Errors, errors.New("Task name cannot include slashes"))
} else if strings.Contains(t.Name, "\000") {
mErr.Errors = append(mErr.Errors, errors.New("Task name cannot include null characters"))
}
if t.Driver == "" {
mErr.Errors = append(mErr.Errors, errors.New("Missing task driver"))
}
if t.KillTimeout < 0 {View on GitHub (pinned to 482b49bf1a)
Solutions
- Give every task a unique, non-empty name, e.g. task "server".
- Check template rendering so the task name variable is populated.
- Run `nomad job validate` to catch it before submit.
Example fix
// before
task "" {
driver = "docker"
}
// after
task "server" {
driver = "docker"
} Defensive patterns
Strategy: validation
Validate before calling
for _, t := range tg.Tasks {
if t.Name == "" {
return fmt.Errorf("task in group %q has no name", tg.Name)
}
} Type guard
func hasValidName(t *structs.Task) bool {
return t != nil && t.Name != ""
} Prevention
- Always name tasks explicitly in HCL.
- Check template variables feeding task labels.
- Run `nomad job validate` in CI.
- Use descriptive, unique task names per group.
When it happens
Trigger: A task block (HCL `task "" { ... }` or JSON task with empty name) or a programmatically built structs.Task with Name left unset.
Common situations: Templated job generation where the name variable was empty; hand-edited HCL removing the label; JSON job specs missing the Name key.
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
- Task cannot be named "alloc"
- Task name cannot include slashes
- Task name cannot include null characters
- Missing task driver
- KillTimeout must be a positive value
AI-assisted analysis of hashicorp/nomad@482b49bf1a (2026-09-04).
Data as JSON: /api/errors/9bb29045ec206a93.
Report an issue: GitHub.