langgenius / langgenius/dify

Add Multi-select / Checkbox Group Input to Start Node User Input

Open
#40,575 3 comments 1 reaction 0 assignees View on GitHub
πŸ’ͺ enhancement
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.