microsoft/autogen · error · ValueError
Invalid message type in sequence: {type(msg)}
Error message
Invalid message type in sequence: {type(msg)} What it means
In BaseChatAgent.run(), when task is a sequence every element must be a BaseChatMessage instance. Anything else (plain strings, dicts, autogen-core message types like SystemMessage) is rejected.
Source
Thrown at python/packages/autogen-agentchat/src/autogen_agentchat/agents/_base_chat_agent.py:148
text_msg = TextMessage(content=task, source="user")
input_messages.append(text_msg)
if output_task_messages:
output_messages.append(text_msg)
elif isinstance(task, BaseChatMessage):
input_messages.append(task)
if output_task_messages:
output_messages.append(task)
else:
if not task:
raise ValueError("Task list cannot be empty.")
# Task is a sequence of messages.
for msg in task:
if isinstance(msg, BaseChatMessage):
input_messages.append(msg)
if output_task_messages:
output_messages.append(msg)
else:
raise ValueError(f"Invalid message type in sequence: {type(msg)}")
response = await self.on_messages(input_messages, cancellation_token)
if response.inner_messages is not None:
output_messages += response.inner_messages
output_messages.append(response.chat_message)
return TaskResult(messages=output_messages)
async def run_stream(
self,
*,
task: str | BaseChatMessage | Sequence[BaseChatMessage] | None = None,
cancellation_token: CancellationToken | None = None,
output_task_messages: bool = True,
) -> AsyncGenerator[BaseAgentEvent | BaseChatMessage | TaskResult, None]:
"""Run the agent with the given task and return a stream of messages
and the final task result as the last item in the stream.
Args:
task: The task to run. Can be a string, a single message, or a sequence of messages.View on GitHub (pinned to 027ecf0a37)
Solutions
- Wrap each string as TextMessage(content=s, source="user").
- Convert autogen-core message types to agentchat types (TextMessage/SystemMessage from autogen_agentchat.messages) before passing.
- Type-check the whole list up front: all(isinstance(m, BaseChatMessage) for m in task).
Example fix
// before
result = await agent.run(task=["summarize this", "be brief"])
// after
from autogen_agentchat.messages import TextMessage
result = await agent.run(task=[
TextMessage(content="summarize this", source="user"),
]) Defensive patterns
Strategy: type-guard
Validate before calling
from autogen_agentchat.messages import BaseChatMessage, TextMessage
def to_message_list(task):
if task is None:
return []
if isinstance(task, str):
return [TextMessage(content=task, source="user")]
if isinstance(task, BaseChatMessage):
return [task]
out = []
for m in task:
out.append(m if isinstance(m, BaseChatMessage) else TextMessage(content=str(m), source="user"))
assert out, "task list empty"
return out Type guard
from autogen_agentchat.messages import BaseChatMessage
def all_chat_messages(task) -> bool:
return all(isinstance(m, BaseChatMessage) for m in task) Try / catch
try:
result = await agent.run(task=task)
except ValueError as e:
if "Invalid message type" in str(e):
task = [m if isinstance(m, BaseChatMessage) else TextMessage(content=m, source="user") for m in task]
result = await agent.run(task=task)
else:
raise Prevention
- Always wrap raw strings in TextMessage before putting them in a task list.
- Convert autogen-core message types to agentchat types at the boundary.
- Validate lists with all(isinstance(m, BaseChatMessage) ...) before calling run().
When it happens
Trigger: Calling agent.run(task=["hello", "world"]) or mixing raw strings/dicts into the message list; passing autogen-core types (SystemMessage, UserMessage) instead of agentchat types (TextMessage).
Common situations: Developers coming from autogen-core expecting plain prompts in lists; converting chat histories that contain dicts from JSON.
Related errors
- Task list cannot be empty.
- Failed to list MCP prompts
- Failed to get MCP prompt
- Failed to get MCP capabilities
- Failed to call MCP tool
AI-assisted analysis of microsoft/autogen@027ecf0a37 (2026-08-15).
Data as JSON: /api/errors/c576cab8b424c9fa.
Report an issue: GitHub.