zeroclaw-labs/zeroclaw · error

duplicate tool name: plugin '{}' conflicts with an existing

Error message

duplicate tool name: plugin '{}' conflicts with an existing tool

What it means

Error "duplicate tool name: plugin '{}' conflicts with an existing tool" thrown in zeroclaw-labs/zeroclaw.

Source

Thrown at crates/zeroclaw-hardware/src/tool_registry.rs:90

                }
                println!("[registry] loaded built-in: {}", name);
                tools.insert(name, tool);
            }
        }

        // `datasheet` used to register here, gated on an Aardvark adapter being
        // present at startup. That adapter support is gone, so the gate could
        // never be satisfied and the registration is removed with it. The
        // `datasheet` module itself is retained: no production entrypoint reaches
        // this registry, because the CLI and daemon build hardware tools through
        // `peripherals::create_peripheral_tools`, so registering the tool belongs
        // with that factory rather than here.

        // ── 2. User plugins ───────────────────────────────────────────────
        let plugins = scan_plugin_dir();
        for plugin in plugins {
            if tools.contains_key(&plugin.name) {
                anyhow::bail!(
                    "duplicate tool name: plugin '{}' conflicts with an existing tool",
                    plugin.name
                );
            }
            println!(
                "[registry] loaded plugin: {} (v{})",
                plugin.name, plugin.version
            );
            tools.insert(plugin.name, plugin.tool);
        }

        // ── 3. Startup summary ────────────────────────────────────────────
        println!("[registry] {} tools available", tools.len());

        {
            let reg = devices.read().await;
            let mut aliases = reg.aliases();
            aliases.sort_unstable(); // deterministic log order

View on GitHub (pinned to 88bb9c8533)

Solutions

  1. Rename the plugin tool so it does not conflict with an existing registered tool name.

When it happens

Trigger: Thrown at crates/zeroclaw-hardware/src/tool_registry.rs:90 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of zeroclaw-labs/zeroclaw@88bb9c8533 (2026-08-23). Data as JSON: /api/errors/b2df8fe848f9e717. Report an issue: GitHub.