helm/helm · error
must either provide a name or specify --generate-name
Error message
must either provide a name or specify --generate-name
What it means
Helm's install action failed to derive a release name. Name resolution in pkg/action/install.go tries, in order: a name template (TemplateName), an explicit ReleaseName, and only then auto-generation. When all three are absent (NameTemplate empty, ReleaseName empty, GenerateName false) the install is rejected because Kubernetes objects need a release name to key stored state on.
Source
Thrown at pkg/action/install.go:794
if len(args) > 2 {
return args[0], args[1], fmt.Errorf("expected at most two arguments, unexpected arguments: %v", strings.Join(args[2:], ", "))
}
if len(args) == 2 {
return args[0], args[1], flagsNotSet()
}
if i.NameTemplate != "" {
name, err := TemplateName(i.NameTemplate)
return name, args[0], err
}
if i.ReleaseName != "" {
return i.ReleaseName, args[0], nil
}
if !i.GenerateName {
return "", args[0], errors.New("must either provide a name or specify --generate-name")
}
base := filepath.Base(args[0])
if base == "." || base == "" {
base = "chart"
}
// if present, strip out the file extension from the name
if idx := strings.Index(base, "."); idx != -1 {
base = base[0:idx]
}
return fmt.Sprintf("%s-%d", base, time.Now().Unix()), args[0], nil
}
// TemplateName renders a name template, returning the name or an error.
func TemplateName(nameTemplate string) (string, error) {
if nameTemplate == "" {
return "", nilView on GitHub (pinned to 2a29f1770b)
Solutions
- Pass a release name as the first positional argument: helm install my-release ./mychart
- Or opt into auto-generation: helm install --generate-name ./mychart
- SDK: set inst.ReleaseName = "my-release" or inst.GenerateName = true before RunWithContext
- SDK: or set inst.NameTemplate to a Go template like "{{ .Name }}-{{ randAlphaNum 6 | lower }}"
Example fix
# before helm install ./mychart # after helm install my-release ./mychart # or helm install --generate-name ./mychart
Defensive patterns
Strategy: validation
Validate before calling
// before running the install action
if client.NameTemplate == "" && client.ReleaseName == "" && !client.GenerateName {
return errors.New("set ReleaseName, NameTemplate, or GenerateName before install")
} Try / catch
if err != nil && err.Error() == "must either provide a name or specify --generate-name" { /* prompt user for a name or set GenerateName and retry once */ } Prevention
- Always pass an explicit release name in scripts; never rely on implicit naming
- Wrap helm invocations in a helper that fails fast when no name flag is present
- In SDK code, assert one of ReleaseName/NameTemplate/GenerateName is set before RunWithContext
When it happens
Trigger: Running `helm install ./mychart` with no positional release name and no --generate-name/--name-template (Helm 4 CLI no longer implies a name). SDK: calling action.Install.RunWithContext without setting inst.ReleaseName, inst.NameTemplate, or inst.GenerateName=true.
Common situations: Scripts migrated from Helm 3 automation that relied on older flag behavior; CI pipelines calling helm install with only a chart ref; SDK code that constructs action.Install but forgets the name fields; wrap-around tooling that passes empty string for release name.
Related errors
- release name check failed: %w
- error parsing jsonpath %s: %w
- uninstall: Release name is invalid: %s
- release name is invalid: %s
- description must be %d characters or less, got %d
AI-assisted analysis of helm/helm@2a29f1770b (2026-08-15).
Data as JSON: /api/errors/1edf44cc3580339e.
Report an issue: GitHub.