From 63b2d4e4d576d4d0620c0f86fb7e444735b4ade8 Mon Sep 17 00:00:00 2001 From: CityFun <31820853+zhengkunwang223@users.noreply.github.com> Date: Thu, 10 Sep 2026 18:11:49 +0800 Subject: [PATCH] fix: Fix the issue where installing extended channel plugins fails in OpenClaw (#13782) --- agent/app/service/agents_channels.go | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/agent/app/service/agents_channels.go b/agent/app/service/agents_channels.go index 600774418..a16e13dba 100644 --- a/agent/app/service/agents_channels.go +++ b/agent/app/service/agents_channels.go @@ -5,6 +5,7 @@ import ( "fmt" "os" "path" + "slices" "sort" "strings" "time" @@ -1320,6 +1321,10 @@ func appendPluginAllow(conf map[string]interface{}, pluginID string) { } func installOpenclawPlugin(mgr *cmd.CommandHelper, containerName, spec, pluginID string) error { + help, err := cmd.RunDockerExecWithStdout(time.Minute, containerName, "openclaw", "plugins", "install", "--help") + if err != nil { + return err + } workdir := path.Join(openclawPluginPackageTmpDir, pluginID) defer func() { _ = mgr.Run("docker", "exec", containerName, "rm", "-rf", workdir) @@ -1341,7 +1346,15 @@ func installOpenclawPlugin(mgr *cmd.CommandHelper, containerName, spec, pluginID if pkgPath == "" { return fmt.Errorf("openclaw plugin package not found") } - return mgr.Run("docker", "exec", containerName, "openclaw", "plugins", "install", pkgPath, "--dangerously-force-unsafe-install") + args := []string{"exec", containerName, "openclaw", "plugins", "install", pkgPath} + // Newer CLIs require source confirmation; older releases do not support --force. + options := strings.Fields(help) + if slices.Contains(options, "--force") { + args = append(args, "--force") + } else if slices.Contains(options, "--dangerously-force-unsafe-install") { + args = append(args, "--dangerously-force-unsafe-install") + } + return mgr.Run("docker", args...) } func uninstallOpenclawPlugin(mgr *cmd.CommandHelper, containerName, pluginID string) error {