You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I confirm that I am using English to submit this report.
[FOR CHINESE USERS] N/A
Please do not modify this template :) and fill in all the required fields.
Dify version
1.14.1 (Cloud — confirmed via GET https://cloud.dify.ai/console/api/version?current_version=1.0.0).
Self-hosted not yet tested for this specific symptom — happy to add if requested.
Cloud or Self Hosted
Cloud
Steps to reproduce
A Tool plugin parameter declared as type: dynamic-select should populate its dropdown by Dify calling the plugin's _fetch_parameter_options(<parameter_name>) hook when the dropdown is opened. On Cloud, that call never happens: opening the dropdown produces no network request from the browser, no daemon log entry, and no traffic to the plugin runtime. The dropdown stays empty forever.
Minimum reproduction (YAML + Python, both excerpted from a Tool plugin we shipped — full history at ShuntaroOkuma/convoprobe-plugin commit 42528f5^):
tools/<tool>.yaml:
identity:
author: <author>name: run_scenariolabel:
en_US: Run Scenarioextra:
python:
source: tools/run_scenario.pyparameters:
- name: scenario_idtype: dynamic-select # <-- the dropdown that never firesform: formrequired: truelabel:
en_US: Scenariohuman_description:
en_US: Select a scenario you have created in ConvoProbe Web UI.llm_description: ConvoProbe scenario identifier (UUID).
tools/<tool>.py:
fromdify_pluginimportToolfromdify_plugin.entitiesimportI18nObject, ParameterOptionclassRunScenarioTool(Tool):
def_fetch_parameter_options(self, parameter: str) ->list[ParameterOption]:
# This method is never called by Dify Cloud 1.14.1 when the user# opens the `scenario_id` dropdown in the workflow node editor.# Returning a fixed list here for the simplest repro:return [
ParameterOption(value="A", label=I18nObject(en_US="Scenario A")),
ParameterOption(value="B", label=I18nObject(en_US="Scenario B")),
]
Steps:
Build the above as a .difypkg (or use Remote Debug).
Install on Dify Cloud, add it to a workflow node.
Open the node and click the Scenario dropdown.
Observe: the dropdown shows no options, no spinner. Browser DevTools shows zero network requests. Plugin process (in Remote Debug mode) shows no incoming call.
For our plugin specifically the live confirmation came from:
Backend logs at https://convoprobe-production.up.railway.app during the dropdown click: zero hits to the corresponding /api/internal/plugin/scenarios endpoint that _fetch_parameter_options proxies to.
Plugin process running INSTALL_METHOD=remote against debug.dify.ai:5003: zero received dispatches when the dropdown is opened. The TCP connection itself is healthy and the plugin is fine with other operations.
✔️ Expected Behavior
Same behavior as Dify 1.5.1 (per #22147 screenshots from 2025-07-12): opening a dynamic-select dropdown triggers Dify api → plugin daemon → plugin runtime → _fetch_parameter_options(<param>), the returned ParameterOption[] populates the dropdown.
❌ Actual Behavior
Opening the dropdown is a no-op. The hook is never invoked. The dropdown stays empty. The user has no way to know the failure mode without checking three layers (browser network panel, plugin daemon logs, plugin process stderr).
Why this matters
dynamic-select is the standard mechanism for any Tool plugin whose parameter values come from the plugin's own external API (saved scenarios, projects, channels, datasets, lists of records, etc.). With it broken on Cloud, all such plugins must currently fall back to a free-text input (the workaround we shipped in commit 42528f5 — type: string with a human "paste a UUID" instruction), which:
destroys UX (users must copy a UUID from a web page and paste it),
destroys discoverability (no list of available values),
destroys validation (typos surface only at run time, deep in the plugin),
and forces the plugin author to ship docs explaining how to find the value out-of-band.
I would like to be assigned to this issue and attempt the fix PR myself (per CONTRIBUTING.md: "Before you draft a PR, please create an issue to discuss the changes you want to make"). Best guess so far: the workflow node editor's React component that mounts dynamic-select dropdowns may have lost the onOpen → fetchOptions wiring in the 1.6.0 refactor — would appreciate a pointer to the right file from anyone who already knows the area.
Public reproduction code (with full git history of the dynamic-select implementation before we had to remove it): https://github.com/ShuntaroOkuma/convoprobe-plugin — see commit 42528f5 and its parent for the working _fetch_parameter_options implementation and the YAML.
Self Checks
Dify version
1.14.1 (Cloud — confirmed via
GET https://cloud.dify.ai/console/api/version?current_version=1.0.0).Self-hosted not yet tested for this specific symptom — happy to add if requested.
Cloud or Self Hosted
Cloud
Steps to reproduce
A Tool plugin parameter declared as
type: dynamic-selectshould populate its dropdown by Dify calling the plugin's_fetch_parameter_options(<parameter_name>)hook when the dropdown is opened. On Cloud, that call never happens: opening the dropdown produces no network request from the browser, no daemon log entry, and no traffic to the plugin runtime. The dropdown stays empty forever.Minimum reproduction (YAML + Python, both excerpted from a Tool plugin we shipped — full history at
ShuntaroOkuma/convoprobe-plugincommit 42528f5^):tools/<tool>.yaml:tools/<tool>.py:Steps:
.difypkg(or use Remote Debug).Scenariodropdown.For our plugin specifically the live confirmation came from:
https://convoprobe-production.up.railway.appduring the dropdown click: zero hits to the corresponding/api/internal/plugin/scenariosendpoint that_fetch_parameter_optionsproxies to.INSTALL_METHOD=remoteagainstdebug.dify.ai:5003: zero received dispatches when the dropdown is opened. The TCP connection itself is healthy and the plugin is fine with other operations.✔️ Expected Behavior
Same behavior as Dify 1.5.1 (per #22147 screenshots from 2025-07-12): opening a
dynamic-selectdropdown triggers Dify api → plugin daemon → plugin runtime →_fetch_parameter_options(<param>), the returnedParameterOption[]populates the dropdown.❌ Actual Behavior
Opening the dropdown is a no-op. The hook is never invoked. The dropdown stays empty. The user has no way to know the failure mode without checking three layers (browser network panel, plugin daemon logs, plugin process stderr).
Why this matters
dynamic-selectis the standard mechanism for any Tool plugin whose parameter values come from the plugin's own external API (saved scenarios, projects, channels, datasets, lists of records, etc.). With it broken on Cloud, all such plugins must currently fall back to a free-text input (the workaround we shipped in commit 42528f5 —type: stringwith a human "paste a UUID" instruction), which:Additional context
web/app/components/workflow/nodes/_base/components/variable/var-reference-picker.tsxand addressed the "selected value is lost when switching tabs" half. The "dropdown never fires" half was never touched.onOpen→fetchOptionswiring in the 1.6.0 refactor — would appreciate a pointer to the right file from anyone who already knows the area.42528f5and its parent for the working_fetch_parameter_optionsimplementation and the YAML.