OpenBMB/ChatDev · error · ValueError

Agent Skills are not enabled for this node

Error message

Agent Skills are not enabled for this node

What it means

The model called a skill tool (activate_skill/read_skill_file), but no AgentSkillManager was passed to the executor for this node — Agent Skills are not enabled. The executor validates the skill_manager argument before dispatching any skill tool call.

Source

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

        return Message(
            role=MessageRole.SYSTEM,
            content=(
                f"Activated Agent Skill `{skill_name}`. "
                "Follow its instructions for the current task until they are completed or no longer relevant.\n\n"
                f"{instructions}{tool_constraint}"
            ),
            metadata={"source": node_id, "skill_name": skill_name, "skill_activation": True},
        )

    def _execute_skill_tool(
        self,
        tool_name: str,
        arguments: Dict[str, Any],
        skill_manager: AgentSkillManager | None,
    ) -> Dict[str, Any]:
        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}'")

View on GitHub (pinned to 4fb2db0ea9)

Solutions

  1. Enable Agent Skills for the node so a skill manager is provided to the executor
  2. Remove skill tool descriptions from the agent's tool list / system prompt so the model never emits those calls
  3. Catch the error and return the message text to the model so it can fall back to other tools
Defensive patterns

Strategy: fallback

Validate before calling

if not node_config.enable_skills:
    tools = [t for t in tools if t['name'] not in ('activate_skill', 'read_skill_file')]

Try / catch

try:
    result = executor._execute_skill_tool(name, args, skill_manager)
except ValueError as e:
    result = {'error': str(e)}  # returned to the model as tool output

Prevention

When it happens

Trigger: The LLM emits a tool call to 'activate_skill' or 'read_skill_file' while the node was executed without a skill manager (skills disabled or not injected into the executor context).

Common situations: Workflows that advertise skill tools in the system prompt but construct the executor without enabling skills; a saved conversation replayed on a node with skills turned off; partial configuration after upgrading the runtime.

Related errors


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