hashicorp/nomad · error

Tagged version description must be under 1000 characters, cu

Error message

Tagged version description must be under 1000 characters, currently %d

What it means

Job.Validate() enforces the same 1000-character limit (MaxDescriptionCharacters) on j.VersionTag.Description, appending this error when exceeded. Version tags annotate job versions in the UI, and their descriptions are size-bounded.

Source

Thrown at nomad/structs/structs.go:4820

	} else {
		for idx, spread := range j.Spreads {
			if err := spread.Validate(); err != nil {
				outer := fmt.Errorf("Spread %d validation failed: %s", idx+1, err)
				mErr.Errors = append(mErr.Errors, outer)
			}
		}
	}

	const MaxDescriptionCharacters = 1000
	if j.UI != nil {
		if len(j.UI.Description) > MaxDescriptionCharacters {
			mErr.Errors = append(mErr.Errors, fmt.Errorf("UI description must be under 1000 characters, currently %d", len(j.UI.Description)))
		}
	}

	if j.VersionTag != nil {
		if len(j.VersionTag.Description) > MaxDescriptionCharacters {
			mErr.Errors = append(mErr.Errors, fmt.Errorf("Tagged version description must be under 1000 characters, currently %d", len(j.VersionTag.Description)))
		}
	}

	// Check for duplicate task groups
	taskGroups := make(map[string]int)
	for idx, tg := range j.TaskGroups {
		if tg.Name == "" {
			mErr.Errors = append(mErr.Errors, fmt.Errorf("Job task group %d missing name", idx+1))
		} else if existing, ok := taskGroups[tg.Name]; ok {
			mErr.Errors = append(mErr.Errors, fmt.Errorf("Job task group %d redefines '%s' from group %d", idx+1, tg.Name, existing+1))
		} else {
			taskGroups[tg.Name] = idx
		}

		if tg.ShutdownDelay != nil && *tg.ShutdownDelay < 0 {
			mErr.Errors = append(mErr.Errors, errors.New("ShutdownDelay must be a positive value"))
		}

View on GitHub (pinned to 482b49bf1a)

Solutions

  1. Shorten VersionTag.Description below 1000 characters
  2. Summarize the change and link to full details externally
  3. Truncate programmatically in the CI templating step
  4. Validate the job spec with 'nomad job validate' before submit

Example fix

// before
version_tag {
  description = "<full 1500-char commit message>"
}
// after
version_tag {
  description = "feat: add retry logic (abc1234)"
}
Defensive patterns

Strategy: validation

Validate before calling

const maxDesc = 1000
if job.VersionTag != nil && len(job.VersionTag.Description) > maxDesc {
    return fmt.Errorf("version tag description is %d chars; max %d", len(job.VersionTag.Description), maxDesc)
}
return nil

Try / catch

if err := job.Validate(); err != nil {
    if strings.Contains(err.Error(), "Tagged version description") {
        return ErrVersionTagTooLong
    }
    return err
}

Prevention

When it happens

Trigger: Submitting a job with a version_tag block whose description exceeds 1000 characters.

Common situations: CI pipelines stamping job versions with full commit messages, git notes, or generated build reports as the version tag description.

Related errors


AI-assisted analysis of hashicorp/nomad@482b49bf1a (2026-09-04). Data as JSON: /api/errors/2d51da7faf8841ff. Report an issue: GitHub.