Bug: Plugin load/install error when importing DSL with plugins (self-hosted Docker) #21412

Closed
opened 2026-02-21 20:12:26 -05:00 by yindo · 4 comments
Owner

Originally created by @erbanku on GitHub (Jan 3, 2026).

Self Checks

  • I have read the Contributing Guide and Language Policy.
  • This is only for bug report, if you would like to ask a question, please head to Discussions.
  • I have searched for existing issues search for existing issues, including closed ones.
  • I confirm that I am using English to submit this report, otherwise it will be closed.
  • 【中文用户 & Non English User】请使用英语提交,否则会被关闭 :)
  • Please do not modify this template :) and fill in all the required fields.

Dify version

1.11.1

Cloud or Self Hosted

Self Hosted (Docker)

Steps to reproduce

Important

@crazywoola Please DO NOT mark this as a duplicate or close it right away. I’ve searched extensively, and while similar issues exist, this one is different.

  1. Importing a DSL file with plugins included
  2. Plugins are not installed automatically
  3. UI shows 'Plugin load error' for each plugin (see screenshot)
  4. Checked history issues and can't find any issue to solve this

Bug log in API container:

[GIN] 2026/01/03 - 15:36:39 | 200 |    2.041321ms |      172.18.0.2 | POST     "/plugin/526cbb9c-ffec-4d93-812a-6b4f81c917b9/dispatch/model/schema"

2026/01/03 15:37:03 /app/internal/db/executor.go:259 record not found
[0.800ms] [rows:0] SELECT * FROM "tool_installations" WHERE tenant_id = '526cbb9c-ffec-4d93-812a-6b4f81c917b9' AND plugin_id = 'langgenius/tavily' ORDER BY "tool_installations"."id" LIMIT 1
[GIN] 2026/01/03 - 15:37:03 | 200 |    1.023592ms |      172.18.0.2 | GET      "/plugin/526cbb9c-ffec-4d93-812a-6b4f81c917b9/management/tool?provider=tavily&plugin_id=langgenius%2Ftavily"

2026/01/03 15:37:03 /app/internal/db/executor.go:259 record not found
[0.397ms] [rows:0] SELECT * FROM "tool_installations" WHERE tenant_id = '526cbb9c-ffec-4d93-812a-6b4f81c917b9' AND plugin_id = 'langgenius/json_process' ORDER BY "tool_installations"."id" LIMIT 1
[GIN] 2026/01/03 - 15:37:03 | 200 |     557.369µs |      172.18.0.2 | GET      "/plugin/526cbb9c-ffec-4d93-812a-6b4f81c917b9/management/tool?provider=json_process&plugin_id=langgenius%2Fjson_process"

2026/01/03 15:37:04 /app/internal/db/executor.go:259 record not found
[0.348ms] [rows:0] SELECT * FROM "tool_installations" WHERE tenant_id = '526cbb9c-ffec-4d93-812a-6b4f81c917b9' AND plugin_id = 'langgenius/json_process' ORDER BY "tool_installations"."id" LIMIT 1
Plugin load error screenshot

✔️ Expected Behavior

Plugins in imported DSL files should be installed automatically, without manual intervention or errors.

Actual Behavior

Plugins are not installed, and a modal shows repeated 'Plugin load error' messages for each plugin when importing DSL files that contain plugins.

Originally created by @erbanku on GitHub (Jan 3, 2026). ### 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] 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 [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] 【中文用户 & Non English User】请使用英语提交,否则会被关闭 :) - [x] Please do not modify this template :) and fill in all the required fields. ### Dify version 1.11.1 ### Cloud or Self Hosted Self Hosted (Docker) ### Steps to reproduce > [!IMPORTANT] > > @crazywoola Please DO NOT mark this as a duplicate or close it right away. I’ve searched extensively, and while similar issues exist, this one is different. 1. Importing a DSL file with plugins included 2. Plugins are not installed automatically 3. UI shows 'Plugin load error' for each plugin (see screenshot) 4. Checked history issues and can't find any issue to solve this Bug log in API container: ``` [GIN] 2026/01/03 - 15:36:39 | 200 | 2.041321ms | 172.18.0.2 | POST "/plugin/526cbb9c-ffec-4d93-812a-6b4f81c917b9/dispatch/model/schema" 2026/01/03 15:37:03 /app/internal/db/executor.go:259 record not found [0.800ms] [rows:0] SELECT * FROM "tool_installations" WHERE tenant_id = '526cbb9c-ffec-4d93-812a-6b4f81c917b9' AND plugin_id = 'langgenius/tavily' ORDER BY "tool_installations"."id" LIMIT 1 [GIN] 2026/01/03 - 15:37:03 | 200 | 1.023592ms | 172.18.0.2 | GET "/plugin/526cbb9c-ffec-4d93-812a-6b4f81c917b9/management/tool?provider=tavily&plugin_id=langgenius%2Ftavily" 2026/01/03 15:37:03 /app/internal/db/executor.go:259 record not found [0.397ms] [rows:0] SELECT * FROM "tool_installations" WHERE tenant_id = '526cbb9c-ffec-4d93-812a-6b4f81c917b9' AND plugin_id = 'langgenius/json_process' ORDER BY "tool_installations"."id" LIMIT 1 [GIN] 2026/01/03 - 15:37:03 | 200 | 557.369µs | 172.18.0.2 | GET "/plugin/526cbb9c-ffec-4d93-812a-6b4f81c917b9/management/tool?provider=json_process&plugin_id=langgenius%2Fjson_process" 2026/01/03 15:37:04 /app/internal/db/executor.go:259 record not found [0.348ms] [rows:0] SELECT * FROM "tool_installations" WHERE tenant_id = '526cbb9c-ffec-4d93-812a-6b4f81c917b9' AND plugin_id = 'langgenius/json_process' ORDER BY "tool_installations"."id" LIMIT 1 ``` <img alt="Plugin load error screenshot" width="2471" src="https://github.com/user-attachments/assets/0b0418ba-4911-437a-b4d5-8bd0fa1b4084" /> ### ✔️ Expected Behavior Plugins in imported DSL files should be installed automatically, without manual intervention or errors. ### ❌ Actual Behavior Plugins are not installed, and a modal shows repeated 'Plugin load error' messages for each plugin when importing DSL files that contain plugins.
yindo added the 🐞 bug label 2026-02-21 20:12:26 -05:00
yindo closed this issue 2026-02-21 20:12:26 -05:00
Author
Owner

@erbanku commented on GitHub (Jan 3, 2026):

I am not sure what is causing this (setting signature-related settings to false, changing PIP mirrors, etc., as suggested by previous issues) not to work.

Not sure if the tool_installations table schema has an issue (I think this may not be the cause):

-- Generated by the database client.
CREATE TABLE tool_installations(
    id uuid NOT NULL DEFAULT uuid_generate_v4(),
    created_at timestamp with time zone,
    updated_at timestamp with time zone,
    tenant_id uuid NOT NULL,
    provider varchar(127) NOT NULL,
    plugin_unique_identifier varchar(255),
    plugin_id varchar(255),
    PRIMARY KEY(id)
);
CREATE INDEX idx_tool_installations_plugin_id ON public.tool_installations USING btree (plugin_id);
CREATE INDEX idx_tool_installations_plugin_unique_identifier ON public.tool_installations USING btree (plugin_unique_identifier);
CREATE INDEX idx_tool_installations_provider ON public.tool_installations USING btree (provider);
CREATE INDEX idx_tool_installations_tenant_id ON public.tool_installations USING btree (tenant_id);
@erbanku commented on GitHub (Jan 3, 2026): I am not sure what is causing this (setting signature-related settings to false, changing PIP mirrors, etc., as suggested by previous issues) not to work. Not sure if the `tool_installations` table schema has an issue (I think this may not be the cause): ``` -- Generated by the database client. CREATE TABLE tool_installations( id uuid NOT NULL DEFAULT uuid_generate_v4(), created_at timestamp with time zone, updated_at timestamp with time zone, tenant_id uuid NOT NULL, provider varchar(127) NOT NULL, plugin_unique_identifier varchar(255), plugin_id varchar(255), PRIMARY KEY(id) ); CREATE INDEX idx_tool_installations_plugin_id ON public.tool_installations USING btree (plugin_id); CREATE INDEX idx_tool_installations_plugin_unique_identifier ON public.tool_installations USING btree (plugin_unique_identifier); CREATE INDEX idx_tool_installations_provider ON public.tool_installations USING btree (provider); CREATE INDEX idx_tool_installations_tenant_id ON public.tool_installations USING btree (tenant_id); ```
Author
Owner

@dosubot[bot] commented on GitHub (Jan 3, 2026):

The usual fixes like disabling signature checks or changing PIP mirrors help only if the root cause is Python package download or verification failures. In your case, the persistent "record not found" errors and plugin load failures point to deeper issues—most often with database state, Docker networking, or plugin daemon communication.

Here’s what’s most likely going wrong and what you can check next:

  • If the plugin daemon and API containers aren’t on the same Docker network, or if environment variables like PLUGIN_DAEMON_URL and SANDBOX_ENABLE_NETWORK aren’t set correctly, plugin installation can silently fail—even if PIP and signature settings are fine. Make sure your containers can talk to each other and to the internet on port 443. Reference
  • If the dify_plugin database or its tool_installations table is missing, corrupted, or out of sync, plugin install records won’t be created, leading to the errors you see. Sometimes, leftover or broken records from previous installs block new ones. Cleaning up the relevant records in tool_installations for your tenant, flushing Redis cache, and removing stale plugin files from Docker volumes can resolve this. Reference
  • If your plugins are missing required manifest fields (like use_template, template, or scope), or are incompatible with Dify 1.11.x, installation can fail without clear error messages. Try updating your plugins to the latest versions. Reference
  • Network/firewall issues or proxy misconfigurations can block the backend from fetching plugin manifests from the Dify marketplace, which is required during DSL import. Check for any outbound restrictions or SSL/proxy issues. Reference
  • After Docker volume resets or environment changes, you may need to run migration commands inside your containers to sync plugin state:
    uv run flask extract-plugins --workers=20
    uv run flask install-plugins --workers=2
    uv run flask migrate-data-for-plugin
    
    Skipping these can leave the backend in an incomplete state. Reference

If you’ve checked all of the above and still see the issue, collect detailed logs from both the plugin_daemon and API containers during a failed import—look for errors beyond just "record not found" (like schema mismatches or permission errors). This will help pinpoint where the process is breaking down.

Let me know if you want step-by-step instructions for any of these checks or cleanups.

To reply, just mention @dosu.


How did I do? Good | Irrelevant | Incorrect | Verbose | Hallucination | Report 🐛 | Other

Chat with Dosu Open in Cursor Join Discord Share on X

@dosubot[bot] commented on GitHub (Jan 3, 2026): <!-- Answer --> The usual fixes like disabling signature checks or changing PIP mirrors help only if the root cause is Python package download or verification failures. In your case, the persistent "record not found" errors and plugin load failures point to deeper issues—most often with database state, Docker networking, or plugin daemon communication. Here’s what’s most likely going wrong and what you can check next: - If the plugin daemon and API containers aren’t on the same Docker network, or if environment variables like `PLUGIN_DAEMON_URL` and `SANDBOX_ENABLE_NETWORK` aren’t set correctly, plugin installation can silently fail—even if PIP and signature settings are fine. Make sure your containers can talk to each other and to the internet on port 443. [Reference](https://github.com/langgenius/dify/issues/29988) - If the `dify_plugin` database or its `tool_installations` table is missing, corrupted, or out of sync, plugin install records won’t be created, leading to the errors you see. Sometimes, leftover or broken records from previous installs block new ones. Cleaning up the relevant records in `tool_installations` for your tenant, flushing Redis cache, and removing stale plugin files from Docker volumes can resolve this. [Reference](https://github.com/langgenius/dify/issues/22397) - If your plugins are missing required manifest fields (like `use_template`, `template`, or `scope`), or are incompatible with Dify 1.11.x, installation can fail without clear error messages. Try updating your plugins to the latest versions. [Reference](https://github.com/langgenius/dify/issues/29988) - Network/firewall issues or proxy misconfigurations can block the backend from fetching plugin manifests from the Dify marketplace, which is required during DSL import. Check for any outbound restrictions or SSL/proxy issues. [Reference](https://github.com/langgenius/dify/issues/16198) - After Docker volume resets or environment changes, you may need to run migration commands inside your containers to sync plugin state: ``` uv run flask extract-plugins --workers=20 uv run flask install-plugins --workers=2 uv run flask migrate-data-for-plugin ``` Skipping these can leave the backend in an incomplete state. [Reference](https://github.com/langgenius/dify/issues/29988) If you’ve checked all of the above and still see the issue, collect detailed logs from both the plugin_daemon and API containers during a failed import—look for errors beyond just "record not found" (like schema mismatches or permission errors). This will help pinpoint where the process is breaking down. Let me know if you want step-by-step instructions for any of these checks or cleanups. <!-- 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/1a4714b8-1599-4853-9681-4177fb166d04?feedback_type=great_response) | [Irrelevant](https://app.dosu.dev/response-feedback/1a4714b8-1599-4853-9681-4177fb166d04?feedback_type=irrelevant_answer) | [Incorrect](https://app.dosu.dev/response-feedback/1a4714b8-1599-4853-9681-4177fb166d04?feedback_type=incorrect_sources) | [Verbose](https://app.dosu.dev/response-feedback/1a4714b8-1599-4853-9681-4177fb166d04?feedback_type=too_verbose) | [Hallucination](https://app.dosu.dev/response-feedback/1a4714b8-1599-4853-9681-4177fb166d04?feedback_type=hallucination) | [Report 🐛](https://app.dosu.dev/response-feedback/1a4714b8-1599-4853-9681-4177fb166d04?feedback_type=bug_report) | [Other](https://app.dosu.dev/response-feedback/1a4714b8-1599-4853-9681-4177fb166d04?feedback_type=other)</sup> [![Chat with Dosu](https://dosu.dev/dosu-chat-badge.svg)](https://app.dosu.dev/6088a4f4-073a-43f3-b3d4-4f06fb0c05a0/ask?utm_source=github)&nbsp;[![Open in Cursor](https://dosu.dev/dosu-in-cursor.svg)](https://cursor.com/link/prompt?text=The%20usual%20fixes%20like%20disabling%20signature%20checks%20or%20changing%20PIP%20mirrors%20help%20only%20if%20the%20root%20cause%20is%20Python%20package%20download%20or%20verification%20failures.%20In%20your%20case%2C%20the%20persistent%20%22record%20not%20found%22%20errors%20and%20plugin%20load%20failures%20point%20to%20deeper%20issues%E2%80%94most%20often%20with%20database%20state%2C%20Docker%20networking%2C%20or%20plugin%20daemon%20communication.%0A%0AHere%E2%80%99s%20what%E2%80%99s%20most%20likely%20going%20wrong%20and%20what%20you%20can%20check%20next%3A%0A%0A-%20If%20the%20plugin%20daemon%20and%20API%20containers%20aren%E2%80%99t%20on%20the%20same%20Docker%20network%2C%20or%20if%20environment%20variables%20like%20%60PLUGIN_DAEMON_URL%60%20and%20%60SANDBOX_ENABLE_NETWORK%60%20aren%E2%80%99t%20set%20correctly%2C%20plugin%20installation%20can%20silently%20fail%E2%80%94even%20if%20PIP%20and%20signature%20settings%20are%20fine.%20Make%20sure%20your%20containers%20can%20talk%20to%20each%20other%20and%20to%20the%20internet%20on%20port%20443.%20%5BReference%5D%28https%3A//github.com/langgenius/dify/issues/29988%29%0A-%20If%20the%20%60dify_plugin%60%20database%20or%20its%20%60tool_installations%60%20table%20is%20missing%2C%20corrupted%2C%20or%20out%20of%20sync%2C%20plugin%20install%20records%20won%E2%80%99t%20be%20created%2C%20leading%20to%20the%20errors%20you%20see.%20Sometimes%2C%20leftover%20or%20broken%20records%20from%20previous%20installs%20block%20new%20ones.%20Cleaning%20up%20the%20relevant%20records%20in%20%60tool_installations%60%20for%20your%20tenant%2C%20flushing%20Redis%20cache%2C%20and%20removing%20stale%20plugin%20files%20from%20Docker%20volumes%20can%20resolve%20this.%20%5BReference%5D%28https%3A//github.com/langgenius/dify/issues/22397%29%0A-%20If%20your%20plugins%20are%20missing%20required%20manifest%20fields%20%28like%20%60use_template%60%2C%20%60template%60%2C%20or%20%60scope%60%29%2C%20or%20are%20incompatible%20with%20Dify%201.11.x%2C%20installation%20can%20fail%20without%20clear%20error%20messages.%20Try%20updating%20your%20plugins%20to%20the%20latest%20versions.%20%5BReference%5D%28https%3A//github.com/langgenius/dify/issues/29988%29%0A-%20Network/firewall%20issues%20or%20proxy%20misconfigurations%20can%20block%20the%20backend%20from%20fetching%20plugin%20manifests%20from%20the%20Dify%20marketplace%2C%20which%20is%20required%20during%20DSL%20import.%20Check%20for%20any%20outbound%20restrictions%20or%20SSL/proxy%20issues.%20%5BReference%5D%28https%3A//github.com/langgenius/dify/issues/16198%29%0A-%20After%20Docker%20volume%20resets%20or%20environment%20changes%2C%20you%20may%20need%20to%20run%20migration%20commands%20inside%20your%20containers%20to%20sync%20plugin%20state%3A%0A%20%20%60%60%60%0A%20%20uv%20run%20flask%20extract-plugins%20--workers%3D20%0A%20%20uv%20run%20flask%20install-plugins%20--workers%3D2%0A%20%20uv%20run%20flask%20migrate-data-for-plugin%0A%20%20%60%60%60%0A%20%20Skipping%20these%20can%20leave%20the%20backend%20in%20an%20incomplete%20state.%20%5BReference%5D%28https%3A//github.com/langgenius/dify/issues/29988%29%0A%0AIf%20you%E2%80%99ve%20checked%20all%20of%20the%20above%20and%20still%20see%20the%20issue%2C%20collect%20detailed%20logs%20from%20both%20the%20plugin_daemon%20and%20API%20containers%20during%20a%20failed%20import%E2%80%94look%20for%20errors%20beyond%20just%20%22record%20not%20found%22%20%28like%20schema%20mismatches%20or%20permission%20errors%29.%20This%20will%20help%20pinpoint%20where%20the%20process%20is%20breaking%20down.%0A%0ALet%20me%20know%20if%20you%20want%20step-by-step%20instructions%20for%20any%20of%20these%20checks%20or%20cleanups.)&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/issues/30483)
Author
Owner

@erbanku commented on GitHub (Jan 3, 2026):

@dosubot Your answer is useless; try again.

@erbanku commented on GitHub (Jan 3, 2026): @dosubot Your answer is useless; try again.
Author
Owner

@dosubot[bot] commented on GitHub (Jan 3, 2026):

Here's what's actually happening under the hood: when you import a DSL file with plugins, Dify is supposed to call its PluginService, which checks permissions, fetches or downloads the plugin package, and then tells the plugin daemon to install it. If any step fails—like a permission check, a network error, or the plugin daemon not responding—no record gets created in the tool_installations table, and you get the "Plugin load error" in the UI. This is not just a UI bug; it means the backend install process never finished or never started for those plugins (source, source).

To debug this for your case:

  1. Check the plugin_daemon logs (not just the API logs) right when you import the DSL. Look for permission errors, signature errors, or network failures—anything besides "record not found".
  2. Make sure your system features (plugin installation scope, marketplace-only flags) allow installing the plugins referenced in your DSL. If your config restricts installs to "official only" or "marketplace only", and your plugin doesn't qualify, the install will silently fail (source).
  3. Confirm that the plugin_daemon and API containers are on the same Docker network and can reach each other. If the POST to /management/install/identifiers fails, nothing gets installed (source).
  4. As a test, try manually installing one of the same plugins from the Dify UI or via PluginService.install_from_marketplace_pkg. If that works, the problem is in the DSL import logic; if it fails, it's a global install/config issue.

If you see any errors in the plugin_daemon logs during the import, that's your smoking gun. If not, double-check your feature flags and permissions. This is almost always a backend install failure, not a frontend bug.

To reply, just mention @dosu.


How did I do? Good | Irrelevant | Incorrect | Verbose | Hallucination | Report 🐛 | Other

Chat with Dosu Open in Cursor Join Discord Share on X

@dosubot[bot] commented on GitHub (Jan 3, 2026): <!-- Answer --> Here's what's actually happening under the hood: when you import a DSL file with plugins, Dify is supposed to call its PluginService, which checks permissions, fetches or downloads the plugin package, and then tells the plugin daemon to install it. If any step fails—like a permission check, a network error, or the plugin daemon not responding—no record gets created in the tool_installations table, and you get the "Plugin load error" in the UI. This is not just a UI bug; it means the backend install process never finished or never started for those plugins ([source](https://github.com/langgenius/dify/blob/9a22baf57d69785938fcf7be4a85e37286619c6c/api/services/plugin/plugin_service.py#L36-L526), [source](https://github.com/langgenius/dify/blob/9a22baf57d69785938fcf7be4a85e37286619c6c/api/core/plugin/impl/plugin.py#L24-L301)). To debug this for your case: 1. Check the plugin_daemon logs (not just the API logs) right when you import the DSL. Look for permission errors, signature errors, or network failures—anything besides "record not found". 2. Make sure your system features (plugin installation scope, marketplace-only flags) allow installing the plugins referenced in your DSL. If your config restricts installs to "official only" or "marketplace only", and your plugin doesn't qualify, the install will silently fail ([source](https://github.com/langgenius/dify/blob/9a22baf57d69785938fcf7be4a85e37286619c6c/api/services/plugin/plugin_service.py#L36-L526)). 3. Confirm that the plugin_daemon and API containers are on the same Docker network and can reach each other. If the POST to /management/install/identifiers fails, nothing gets installed ([source](https://github.com/langgenius/dify/blob/9a22baf57d69785938fcf7be4a85e37286619c6c/api/core/plugin/impl/plugin.py#L24-L301)). 4. As a test, try manually installing one of the same plugins from the Dify UI or via PluginService.install_from_marketplace_pkg. If that works, the problem is in the DSL import logic; if it fails, it's a global install/config issue. If you see any errors in the plugin_daemon logs during the import, that's your smoking gun. If not, double-check your feature flags and permissions. This is almost always a backend install failure, not a frontend bug. <!-- 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/0d8cf7e9-2f65-4771-ae99-0f26f5da18af?feedback_type=great_response) | [Irrelevant](https://app.dosu.dev/response-feedback/0d8cf7e9-2f65-4771-ae99-0f26f5da18af?feedback_type=irrelevant_answer) | [Incorrect](https://app.dosu.dev/response-feedback/0d8cf7e9-2f65-4771-ae99-0f26f5da18af?feedback_type=incorrect_sources) | [Verbose](https://app.dosu.dev/response-feedback/0d8cf7e9-2f65-4771-ae99-0f26f5da18af?feedback_type=too_verbose) | [Hallucination](https://app.dosu.dev/response-feedback/0d8cf7e9-2f65-4771-ae99-0f26f5da18af?feedback_type=hallucination) | [Report 🐛](https://app.dosu.dev/response-feedback/0d8cf7e9-2f65-4771-ae99-0f26f5da18af?feedback_type=bug_report) | [Other](https://app.dosu.dev/response-feedback/0d8cf7e9-2f65-4771-ae99-0f26f5da18af?feedback_type=other)</sup> [![Chat with Dosu](https://dosu.dev/dosu-chat-badge.svg)](https://app.dosu.dev/6088a4f4-073a-43f3-b3d4-4f06fb0c05a0/ask?utm_source=github)&nbsp;[![Open in Cursor](https://dosu.dev/dosu-in-cursor.svg)](https://cursor.com/link/prompt?text=Here%27s%20what%27s%20actually%20happening%20under%20the%20hood%3A%20when%20you%20import%20a%20DSL%20file%20with%20plugins%2C%20Dify%20is%20supposed%20to%20call%20its%20PluginService%2C%20which%20checks%20permissions%2C%20fetches%20or%20downloads%20the%20plugin%20package%2C%20and%20then%20tells%20the%20plugin%20daemon%20to%20install%20it.%20If%20any%20step%20fails%E2%80%94like%20a%20permission%20check%2C%20a%20network%20error%2C%20or%20the%20plugin%20daemon%20not%20responding%E2%80%94no%20record%20gets%20created%20in%20the%20tool_installations%20table%2C%20and%20you%20get%20the%20%22Plugin%20load%20error%22%20in%20the%20UI.%20This%20is%20not%20just%20a%20UI%20bug%3B%20it%20means%20the%20backend%20install%20process%20never%20finished%20or%20never%20started%20for%20those%20plugins%20%28%5Bsource%5D%28https%3A//github.com/langgenius/dify/blob/9a22baf57d69785938fcf7be4a85e37286619c6c/api/services/plugin/plugin_service.py%23L36-L526%29%2C%20%5Bsource%5D%28https%3A//github.com/langgenius/dify/blob/9a22baf57d69785938fcf7be4a85e37286619c6c/api/core/plugin/impl/plugin.py%23L24-L301%29%29.%0A%0ATo%20debug%20this%20for%20your%20case%3A%0A%0A1.%20Check%20the%20plugin_daemon%20logs%20%28not%20just%20the%20API%20logs%29%20right%20when%20you%20import%20the%20DSL.%20Look%20for%20permission%20errors%2C%20signature%20errors%2C%20or%20network%20failures%E2%80%94anything%20besides%20%22record%20not%20found%22.%0A2.%20Make%20sure%20your%20system%20features%20%28plugin%20installation%20scope%2C%20marketplace-only%20flags%29%20allow%20installing%20the%20plugins%20referenced%20in%20your%20DSL.%20If%20your%20config%20restricts%20installs%20to%20%22official%20only%22%20or%20%22marketplace%20only%22%2C%20and%20your%20plugin%20doesn%27t%20qualify%2C%20the%20install%20will%20silently%20fail%20%28%5Bsource%5D%28https%3A//github.com/langgenius/dify/blob/9a22baf57d69785938fcf7be4a85e37286619c6c/api/services/plugin/plugin_service.py%23L36-L526%29%29.%0A3.%20Confirm%20that%20the%20plugin_daemon%20and%20API%20containers%20are%20on%20the%20same%20Docker%20network%20and%20can%20reach%20each%20other.%20If%20the%20POST%20to%20/management/install/identifiers%20fails%2C%20nothing%20gets%20installed%20%28%5Bsource%5D%28https%3A//github.com/langgenius/dify/blob/9a22baf57d69785938fcf7be4a85e37286619c6c/api/core/plugin/impl/plugin.py%23L24-L301%29%29.%0A4.%20As%20a%20test%2C%20try%20manually%20installing%20one%20of%20the%20same%20plugins%20from%20the%20Dify%20UI%20or%20via%20PluginService.install_from_marketplace_pkg.%20If%20that%20works%2C%20the%20problem%20is%20in%20the%20DSL%20import%20logic%3B%20if%20it%20fails%2C%20it%27s%20a%20global%20install/config%20issue.%0A%0AIf%20you%20see%20any%20errors%20in%20the%20plugin_daemon%20logs%20during%20the%20import%2C%20that%27s%20your%20smoking%20gun.%20If%20not%2C%20double-check%20your%20feature%20flags%20and%20permissions.%20This%20is%20almost%20always%20a%20backend%20install%20failure%2C%20not%20a%20frontend%20bug.)&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/issues/30483)
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: langgenius/dify#21412