The React strategy in Dify Agent doesn’t support streaming or showing reasoning/tool actions. The Function Calling strategy streams but returns before tools finish, only outputting the tool call content and not the tool’s final results before ending. #775

Closed
opened 2026-02-16 10:20:28 -05:00 by yindo · 3 comments
Owner

Originally created by @bianningtao on GitHub (Nov 4, 2025).

Self Checks

  • This is only for bug report, if you would like to ask a question, please head to Discussions.
  • I have searched for existing issues Dify issues & Dify Official Plugins, including closed ones.
  • I confirm that I am using English to submit this report (我已阅读并同意 Language Policy).
  • [FOR CHINESE USERS] 请务必使用英文提交 Issue,否则会被关闭。谢谢!:)
  • Please do not modify this template :) and fill in all the required fields.

Dify version

Dify CE 1.9.1、Dify EE 3.4.0

Plugin version

0.0.24、0.0.25

Cloud or Self Hosted

Self Hosted (Docker)

Steps to reproduce

The React strategy of the Dify Agent strategy plugin does not support streaming output, nor can it output the thought process or the tool's action process. In addition, the Function Calling strategy supports streaming output, but it does not wait for the tool's call result to return; it simply replies with the tool's content quickly, and does not output the content generated by the tool before ending the entire process.

✔️ Error log

No response

Originally created by @bianningtao on GitHub (Nov 4, 2025). ### Self Checks - [x] This is only for bug report, if you would like to ask a question, please head to [Discussions](https://github.com/langgenius/dify/discussions/categories/general). - [x] I have searched for existing issues [Dify issues](https://github.com/langgenius/dify/issues) & [Dify Official Plugins](https://github.com/langgenius/dify-official-plugins/issues), including closed ones. - [x] I confirm that I am using English to submit this report (我已阅读并同意 [Language Policy](https://github.com/langgenius/dify/issues/1542)). - [x] [FOR CHINESE USERS] 请务必使用英文提交 Issue,否则会被关闭。谢谢!:) - [x] Please do not modify this template :) and fill in all the required fields. ### Dify version Dify CE 1.9.1、Dify EE 3.4.0 ### Plugin version 0.0.24、0.0.25 ### Cloud or Self Hosted Self Hosted (Docker) ### Steps to reproduce The React strategy of the Dify Agent strategy plugin does not support streaming output, nor can it output the thought process or the tool's action process. In addition, the Function Calling strategy supports streaming output, but it does not wait for the tool's call result to return; it simply replies with the tool's content quickly, and does not output the content generated by the tool before ending the entire process. ### ✔️ Error log _No response_
yindo added the bug label 2026-02-16 10:20:28 -05:00
yindo closed this issue 2026-02-16 10:20:28 -05:00
Author
Owner

@dosubot[bot] commented on GitHub (Nov 4, 2025):

These are known limitations in Dify Agent strategies. The React (ReAct) strategy can't stream output or show reasoning/tool actions because it needs to parse the model's full response before displaying anything, so incremental streaming isn't possible in this mode reference. The Function Calling strategy does stream, but it doesn't wait for tool calls to finish—it outputs the tool call content immediately and ends before the tool's final results are available reference.

Streaming output for agent nodes depends on the model/plugin advertising the stream-tool-call feature. If your model or plugin (like Ollama) doesn't declare this in its YAML config, streaming won't work—even if the underlying model supports it elsewhere reference. There is a planned feature to add streaming support for tool calls in a future Dify version, but it will only be available in Function Calling mode, not React mode reference.

Workarounds are limited: you can try restructuring workflows to avoid parallel branches, disabling exception handling, or using models/plugins that explicitly support stream-tool-call (such as Tongyi/Qwen-max in Function Calling mode) reference. Modifying plugin YAML files to add stream-tool-call can sometimes help, but success depends on backend and agent support and may not work for all plugins reference.

There are open pull requests and ongoing development to improve streaming output for workflows and tool calls, but full support is not yet released as of Dify v1.9.1 reference.

To reply, just mention @dosu.


How did I do? Good | Irrelevant | Incorrect | Verbose | Hallucination | Report 🐛 | Other  Join Discord Share on X

@dosubot[bot] commented on GitHub (Nov 4, 2025): <!-- Answer --> These are known limitations in Dify Agent strategies. The React (ReAct) strategy can't stream output or show reasoning/tool actions because it needs to parse the model's full response before displaying anything, so incremental streaming isn't possible in this mode [reference](https://github.com/langgenius/dify/issues/20952). The Function Calling strategy does stream, but it doesn't wait for tool calls to finish—it outputs the tool call content immediately and ends before the tool's final results are available [reference](https://github.com/langgenius/dify/issues/20952). Streaming output for agent nodes depends on the model/plugin advertising the `stream-tool-call` feature. If your model or plugin (like Ollama) doesn't declare this in its YAML config, streaming won't work—even if the underlying model supports it elsewhere [reference](https://github.com/langgenius/dify/issues/27284). There is a planned feature to add streaming support for tool calls in a future Dify version, but it will only be available in Function Calling mode, not React mode [reference](https://github.com/langgenius/dify/discussions/27249). Workarounds are limited: you can try restructuring workflows to avoid parallel branches, disabling exception handling, or using models/plugins that explicitly support `stream-tool-call` (such as Tongyi/Qwen-max in Function Calling mode) [reference](https://github.com/langgenius/dify/issues/20952). Modifying plugin YAML files to add `stream-tool-call` can sometimes help, but success depends on backend and agent support and may not work for all plugins [reference](https://github.com/langgenius/dify/issues/27284). There are open pull requests and ongoing development to improve streaming output for workflows and tool calls, but full support is not yet released as of Dify v1.9.1 [reference](https://github.com/langgenius/dify/pull/25320). <!-- Dosu Comment Footer --> *To reply, just mention [@dosu](https://go.dosu.dev/dosubot).* --- <sup>How did I do? [Good](https://app.dosu.dev/response-feedback/badc6154-9c7d-43b7-8a3f-3d55154a7a9e?feedback_type=great_response) | [Irrelevant](https://app.dosu.dev/response-feedback/badc6154-9c7d-43b7-8a3f-3d55154a7a9e?feedback_type=irrelevant_answer) | [Incorrect](https://app.dosu.dev/response-feedback/badc6154-9c7d-43b7-8a3f-3d55154a7a9e?feedback_type=incorrect_sources) | [Verbose](https://app.dosu.dev/response-feedback/badc6154-9c7d-43b7-8a3f-3d55154a7a9e?feedback_type=too_verbose) | [Hallucination](https://app.dosu.dev/response-feedback/badc6154-9c7d-43b7-8a3f-3d55154a7a9e?feedback_type=hallucination) | [Report 🐛](https://app.dosu.dev/response-feedback/badc6154-9c7d-43b7-8a3f-3d55154a7a9e?feedback_type=bug_report) | [Other](https://app.dosu.dev/response-feedback/badc6154-9c7d-43b7-8a3f-3d55154a7a9e?feedback_type=other)</sup>&nbsp;&nbsp;[![Join Discord](https://img.shields.io/badge/join-5865F2?logo=discord&logoColor=white&label=)](https://go.dosu.dev/discord-bot)&nbsp;[![Share on X](https://img.shields.io/badge/X-share-black)](https://twitter.com/intent/tweet?text=%40dosu_ai%20helped%20me%20solve%20this%20issue!&url=https%3A//github.com/langgenius/dify-official-plugins/issues/2000)
Author
Owner

@bianningtao commented on GitHub (Nov 4, 2025):

@dosu.

However, the current Function Calling strategy does not wait for the call result of the MCP tool to be returned, but directly ends the process, especially when a time-consuming tool is configured.

In addition, the model I use is qwen3-235b-a3b-instruct-2507, which supports streaming output.

@bianningtao commented on GitHub (Nov 4, 2025): [@dosu](https://go.dosu.dev/dosubot). However, the current Function Calling strategy does not wait for the call result of the MCP tool to be returned, but directly ends the process, especially when a time-consuming tool is configured. In addition, the model I use is qwen3-235b-a3b-instruct-2507, which supports streaming output.
Author
Owner

@dosubot[bot] commented on GitHub (Nov 4, 2025):

This is a known limitation in Dify's Function Calling strategy: it streams tool call content but does not wait for the final result of MCP tools before ending, especially with long-running operations reference. The agent aggregates and returns only the initial tool call output, not the completed result, because the workflow engine and plugin architecture are designed to return the final summary, not intermediate streaming chunks—even if the underlying MCP or plugin supports streaming reference.

There is ongoing development to add streaming support for tool calls via the stream-tool-call feature, which will be available in Function Calling mode in future Dify releases reference. For now, workarounds are limited: you can try using models/plugins that explicitly support stream-tool-call (like Tongyi/Qwen-max), restructure workflows to avoid parallel branches, or redesign long-running logic as workflow tools instead of MCP tools reference.

Timeouts for MCP tool calls are often hardcoded (e.g., 10 minutes by default) and must be overridden in the .env file and Docker containers to allow longer tool runs reference. There is no UI or API configuration for this in some versions; only code-level changes to MCPTool, MCPClient, or session classes allow timeout adjustments reference.

Streaming output for MCP tool calls is planned but not yet fully supported as of Dify v1.9.1. You can track progress in the related issues and pull requests reference.

To reply, just mention @dosu.


How did I do? Good | Irrelevant | Incorrect | Verbose | Hallucination | Report 🐛 | Other  Join Discord Share on X

@dosubot[bot] commented on GitHub (Nov 4, 2025): <!-- Answer --> This is a known limitation in Dify's Function Calling strategy: it streams tool call content but does not wait for the final result of MCP tools before ending, especially with long-running operations [reference](https://github.com/langgenius/dify/discussions/27249). The agent aggregates and returns only the initial tool call output, not the completed result, because the workflow engine and plugin architecture are designed to return the final summary, not intermediate streaming chunks—even if the underlying MCP or plugin supports streaming [reference](https://github.com/langgenius/dify/issues/20952). There is ongoing development to add streaming support for tool calls via the `stream-tool-call` feature, which will be available in Function Calling mode in future Dify releases [reference](https://github.com/langgenius/dify-official-plugins/issues/1703). For now, workarounds are limited: you can try using models/plugins that explicitly support `stream-tool-call` (like Tongyi/Qwen-max), restructure workflows to avoid parallel branches, or redesign long-running logic as workflow tools instead of MCP tools [reference](https://github.com/langgenius/dify/issues/24238). Timeouts for MCP tool calls are often hardcoded (e.g., 10 minutes by default) and must be overridden in the `.env` file and Docker containers to allow longer tool runs [reference](https://github.com/langgenius/dify/issues/27790). There is no UI or API configuration for this in some versions; only code-level changes to MCPTool, MCPClient, or session classes allow timeout adjustments [reference](https://github.com/langgenius/dify/issues/24238). Streaming output for MCP tool calls is planned but not yet fully supported as of Dify v1.9.1. You can track progress in the related issues and pull requests [reference](https://github.com/langgenius/dify/pull/25320). <!-- Dosu Comment Footer --> *To reply, just mention [@dosu](https://go.dosu.dev/dosubot).* --- <sup>How did I do? [Good](https://app.dosu.dev/response-feedback/18df1134-8a28-4a8e-837c-3f494c51b31c?feedback_type=great_response) | [Irrelevant](https://app.dosu.dev/response-feedback/18df1134-8a28-4a8e-837c-3f494c51b31c?feedback_type=irrelevant_answer) | [Incorrect](https://app.dosu.dev/response-feedback/18df1134-8a28-4a8e-837c-3f494c51b31c?feedback_type=incorrect_sources) | [Verbose](https://app.dosu.dev/response-feedback/18df1134-8a28-4a8e-837c-3f494c51b31c?feedback_type=too_verbose) | [Hallucination](https://app.dosu.dev/response-feedback/18df1134-8a28-4a8e-837c-3f494c51b31c?feedback_type=hallucination) | [Report 🐛](https://app.dosu.dev/response-feedback/18df1134-8a28-4a8e-837c-3f494c51b31c?feedback_type=bug_report) | [Other](https://app.dosu.dev/response-feedback/18df1134-8a28-4a8e-837c-3f494c51b31c?feedback_type=other)</sup>&nbsp;&nbsp;[![Join Discord](https://img.shields.io/badge/join-5865F2?logo=discord&logoColor=white&label=)](https://go.dosu.dev/discord-bot)&nbsp;[![Share on X](https://img.shields.io/badge/X-share-black)](https://twitter.com/intent/tweet?text=%40dosu_ai%20helped%20me%20solve%20this%20issue!&url=https%3A//github.com/langgenius/dify-official-plugins/issues/2000)
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: langgenius/dify-official-plugins#775