go-task/task · error
no options provided
Error message
no options provided
What it means
Prompter.Select refuses to start a selection prompt when the options slice is empty, since there is nothing to render or choose from. It is a programming/API-misuse guard, raised before any terminal I/O.
Source
Thrown at internal/input/input.go:56
)
result, err := prog.Run()
if err != nil {
return "", err
}
model := result.(textModel)
if model.cancelled {
return "", ErrCancelled
}
return model.value, nil
}
// Select prompts the user to select from a list of options
func (p *Prompter) Select(varName string, options []string) (string, error) {
if len(options) == 0 {
return "", errors.New("no options provided")
}
m := newSelectModel(varName, options)
prog := tea.NewProgram(m,
tea.WithInput(p.Stdin),
tea.WithOutput(p.Stderr),
)
result, err := prog.Run()
if err != nil {
return "", err
}
model := result.(selectModel)
if model.cancelled {
return "", ErrCancelled
}View on GitHub (pinned to 385e5ad92a)
Solutions
- Ensure the options source (var enum, dynamic command output) returns at least one entry before prompting
- Skip the Select call and use a default when the list is empty
- Check len(options) > 0 at the call site
Example fix
// before
choice, _ := p.Select("env", opts) // opts may be empty
// after
if len(opts) == 0 {
opts = []string{"default"}
}
choice, _ := p.Select("env", opts) Defensive patterns
Strategy: validation
Validate before calling
if len(options) == 0 {
options = []string{fallback}
}
choice, err := p.Select("name", options) Type guard
func hasOptions(opts []string) bool {
return len(opts) > 0
} Try / catch
choice, err := p.Select("name", options)
if err != nil {
return fmt.Errorf("select prompt failed: %w", err)
} Prevention
- Validate dynamic option sources (enum vars, command output) before prompting
- Provide a sensible default option list for every Select call
- Unit-test var resolution so empty lists are caught early
When it happens
Trigger: Calling Prompter.Select(varName, options) where len(options)==0, typically because the caller computed choices from data that turned out empty.
Common situations: Task generates select options from vars/enums that resolved to an empty list (e.g. a dynamic var command returned nothing), then attempts to prompt.
Related errors
- prompt cancelled
- prompt cancelled
- no continue values provided
- enum reference %q must resolve to a list
- enum reference %q must contain only strings
AI-assisted analysis of go-task/task@385e5ad92a (2026-09-05).
Data as JSON: /api/errors/b0d0767ececc8bc7.
Report an issue: GitHub.