{"record":{"id":"50a120b74a25efb5","repo":"microsoft/autogen","slug":"all-messages-in-task-list-must-be-valid-basechatme","errorCode":null,"errorMessage":"All messages in task list must be valid BaseChatMessage types","messagePattern":"All messages in task list must be valid BaseChatMessage types","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"python/packages/autogen-agentchat/src/autogen_agentchat/teams/_group_chat/_base_group_chat.py","lineNumber":469,"sourceCode":"\n            asyncio.run(main())\n\n        \"\"\"\n        # Create the messages list if the task is a string or a chat message.\n        messages: List[BaseChatMessage] | None = None\n        if task is None:\n            pass\n        elif isinstance(task, str):\n            messages = [TextMessage(content=task, source=\"user\")]\n        elif isinstance(task, BaseChatMessage):\n            messages = [task]\n        elif isinstance(task, list):\n            if not task:\n                raise ValueError(\"Task list cannot be empty.\")\n            messages = []\n            for msg in task:\n                if not isinstance(msg, BaseChatMessage):\n                    raise ValueError(\"All messages in task list must be valid BaseChatMessage types\")\n                messages.append(msg)\n        else:\n            raise ValueError(\"Task must be a string, a BaseChatMessage, or a list of BaseChatMessage.\")\n        # Check if the messages types are registered with the message factory.\n        if messages is not None:\n            for msg in messages:\n                if not self._message_factory.is_registered(msg.__class__):\n                    raise ValueError(\n                        f\"Message type {msg.__class__} is not registered with the message factory. \"\n                        \"Please register it with the message factory by adding it to the \"\n                        \"custom_message_types list when creating the team.\"\n                    )\n\n        if self._is_running:\n            raise ValueError(\"The team is already running, it cannot run again until it is stopped.\")\n        self._is_running = True\n\n        if self._embedded_runtime:","sourceCodeStart":451,"sourceCodeEnd":487,"githubUrl":"https://github.com/microsoft/autogen/blob/027ecf0a379bcc1d09956d46d12d44a3ad9cee14/python/packages/autogen-agentchat/src/autogen_agentchat/teams/_group_chat/_base_group_chat.py#L451-L487","documentation":"Every element of a list task must be a BaseChatMessage instance (TextMessage, MultiModalMessage, etc.). The constructor loop isinstance-checks each element; anything else — including BaseAgentEvent subclasses or plain dicts — is rejected.","triggerScenarios":"Calling team.run_stream(task=[\"just a string\"]) or mixing messages with events/dicts in the list: task=[TextMessage(...), {'content': 'x'}].","commonSituations":"Feeding raw LLM output or JSON-deserialized dicts back as a task; accidentally including agent events (e.g. ToolCallRequestEvent) which are events, not chat messages.","solutions":["Wrap plain strings: task=[TextMessage(content=\"Start\", source=\"user\")].","Convert dicts with the message factory: factory.create(d) before passing.","Remove non-message items or convert them to a proper BaseChatMessage subclass."],"exampleFix":"# before\nawait team.run(task=[\"plan the trip\", {\"content\": \"book flight\"}])\n\n# after\nfrom autogen_agentchat.messages import TextMessage\nawait team.run(task=[TextMessage(content=\"plan the trip\", source=\"user\"), TextMessage(content=\"book flight\", source=\"user\")])","handlingStrategy":"type-guard","validationCode":"from autogen_agentchat.messages import BaseChatMessage\nif not all(isinstance(m, BaseChatMessage) for m in task):\n    raise TypeError(\"task list must contain only BaseChatMessage instances\")","typeGuard":"from autogen_agentchat.messages import BaseChatMessage\nfrom typing import Any\n\ndef is_message_list(task: Any) -> bool:\n    return isinstance(task, list) and all(isinstance(m, BaseChatMessage) for m in task)","tryCatchPattern":null,"preventionTips":["Convert raw strings/dicts to TextMessage / factory.create() before building the task list.","Do not mix agent events (BaseAgentEvent) into task lists.","Type-annotate task variables as list[BaseChatMessage] to catch mistakes statically."],"tags":["python","autogen","task","type-validation","messages"],"backgroundTag":null,"analyzedSha":"027ecf0a379bcc1d09956d46d12d44a3ad9cee14","analyzedAt":"2026-08-15T03:38:00.719Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}