Add Multi-select / Checkbox Group Input to Start Node User Input
- Dominant language
- TypeScript
- Stars
- 156k
- Forks
- 24.6k
- Avg merge
- 22h 9m
- Merged PRs (30d)
- 610
Description
### Self Checks
- [x] I have read the [Contributing Guide](https://github.com/langgenius/dify/blob/main/CONTRIBUTING.md) and [Language Policy](https://github.com/langgenius/dify/issues/1542).
- [x] I have searched for existing issues [search for existing issues](https://github.com/langgenius/dify/issues), including closed ones.
- [x] I confirm that I am using English to submit this report, otherwise it will be closed.
- [x] Please do not modify this template :) and fill in all the required fields.
### 1. Is this request related to a challenge you're experiencing? Tell me about your story.
### Expectation of the new feature
Dify's Start Node User Input currently provides input types such as text, number, select, and file, but does not provide a native multi-select / checkbox group input.
This makes it difficult to build workflows where users need to select multiple predefined options before the workflow starts.
For example, a workflow may require users to select one or more machines:
Machine A
Machine B
Machine C
Machine D
Currently, using Markdown checkbox syntax such as:
- [ ] Machine A
- [ ] Machine B
- [ ] Machine C
- [ ] Machine D
only renders static checkbox-like UI and does not provide an interactive input that can be submitted to the workflow.
Using HTML is also not a viable workaround because the relevant HTML rendering is restricted.
Therefore, there is currently no straightforward native way to collect multiple selections from the user at the Start Node.
### Expected Behavior
Add a native Multi-select or Checkbox Group input type to Start Node β User Input.
Users should be able to:
Define a list of predefined options.
Allow the user to select zero, one, or multiple options.
Optionally configure whether at least one option is required.
Receive the selected options as an array/list variable in the workflow.
For example:
Input name: machines
Options:
- Machine A
- Machine B
- Machine C
- Machine D
The user could select:
Machine A
Machine C
and the workflow would receive:
["Machine A", "Machine C"]
### Use Case
A common use case is allowing users to select multiple machines, products, processes, categories, or other predefined entities before executing a workflow.
For example:
User
β
Start Node
β
Select Machines
βββ β Machine A
βββ β Machine B
βββ β Machine C
βββ β Machine D
β
LLM / Agent / Workflow
β
Process only the selected machines
This is particularly useful for workflows where downstream nodes need to iterate over the selected items or use them as conditions for branching.
Without a native multi-select input, users have to rely on free-text input and implement their own parsing/validation logic.
### Proposed UI
Add a new input type under Start Node β User Input:
User Input Type
ββββββββββββββββββββββββ
β Text
β Paragraph
β Number
β Select
β Multi-select
β File
...
When Multi-select is selected:
**Variable Name**
machines
**Label**
Select machines
**Options**
ββββββββββββββββββββββββ
β Machine A
β Machine B
β Machine C
β Machine D
β Allow multiple selections
β Required
The selected values should be exposed as an array/list variable to downstream nodes.
An alternative UI implementation would be a multi-select dropdown:
Select machines
βββββββββββββββββββββββββββββββ
β Machine A, Machine C βΌ β
βββββββββββββββββββββββββββββββ
Both approaches would solve the underlying requirement.
### Example Output
If the user selects:
β Machine A
β Machine B
β Machine C
β Machine D
the Start Node should provide:
{
"machines": [
"Machine A",
"Machine C"
]
}
This array should be available to downstream nodes, including LLM, Code, If/Else, Iteration, and other workflow nodes.
### Additional Notes
This feature would be different from Markdown checkbox rendering.
The requested functionality is a native workflow input type, rather than rendering Markdown task-list syntax as an interactive checkbox.
A native Multi-select input would also provide proper type information and validation, making it significantly more reliable than asking users to enter comma-separated values manually.
### 2. Additional context or comments
_No response_
### 3. Can you help us with this feature?
- [ ] I am interested in contributing to this feature.
Contributor guide
Research direction
Start by locating the Start Node User Input implementation and the existing select input, then trace how input values are validated and exposed to downstream workflow nodes. Done means users can configure predefined multi-select options, optionally require one selection, and receive the selected values as an array usable by the listed downstream nodes.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- full-stack
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100