OpenBMB/ChatDev · error · ValueError

Unsupported skill tool '{tool_name}'

Error message

Unsupported skill tool '{tool_name}'

What it means

A tool call was routed to the skill-tool dispatcher but tool_name is neither 'activate_skill' nor 'read_skill_file'. The dispatcher raises rather than guessing a handler.

Source

Thrown at runtime/node/executor/agent_executor.py:903

        if skill_manager is None:
            raise ValueError("Agent Skills are not enabled for this node")

        if tool_name == "activate_skill":
            skill_name = str(arguments.get("skill_name", "")).strip()
            if not skill_name:
                raise ValueError("skill_name is required")
            return skill_manager.activate_skill(skill_name)

        if tool_name == "read_skill_file":
            skill_name = str(arguments.get("skill_name", "")).strip()
            relative_path = str(arguments.get("relative_path", "")).strip()
            if not skill_name:
                raise ValueError("skill_name is required")
            if not relative_path:
                raise ValueError("relative_path is required")
            return skill_manager.read_skill_file(skill_name, relative_path)

        raise ValueError(f"Unsupported skill tool '{tool_name}'")

    def _build_function_call_output_event(
        self,
        tool_call: ToolCallPayload,
        result: Any,
    ) -> FunctionCallOutputEvent:
        call_id = tool_call.id or tool_call.function_name or "tool_call"
        blocks = self._coerce_tool_result_to_blocks(result)
        if blocks:
            return FunctionCallOutputEvent(
                call_id=call_id,
                function_name=tool_call.function_name,
                output_blocks=blocks,
            )
        return FunctionCallOutputEvent(
            call_id=call_id,
            function_name=tool_call.function_name,
            output_text=self._stringify_tool_result(result),

View on GitHub (pinned to 4fb2db0ea9)

Solutions

  1. Use only activate_skill and read_skill_file as skill tool names
  2. If you added a custom skill tool, dispatch it in your own handler instead of the skill dispatcher
  3. Align executor and skill-manager versions so advertised tools match supported ones
Defensive patterns

Strategy: validation

Validate before calling

SKILL_TOOLS = {'activate_skill', 'read_skill_file'}
assert tool_name in SKILL_TOOLS

Prevention

When it happens

Trigger: Internal routing sends a tool name starting with/associated to skill tools but not matching the two known names, e.g. a new skill tool added by a caller without extending the dispatcher.

Common situations: Extending the skill tool set without updating _execute_skill_tool; version mismatch where a newer manager advertises a tool the executor build doesn't handle; misconfigured tool routing prefix.

Related errors


AI-assisted analysis of OpenBMB/ChatDev@4fb2db0ea9 (2026-08-27). Data as JSON: /api/errors/43092b8b2bc4c603. Report an issue: GitHub.