FoundationAgents/OpenManus · warning · ServerError
-32001
-32001
Error message
Unsupported operation
What it means
A JSON-RPC error (code -32001, UnsupportedOperation) raised as ServerError(UnsupportedOperationError()) by the executor's cancel() method. The A2A protocol allows clients to request task cancellation, but this executor performs no cancellation work and explicitly rejects cancel requests.
Source
Thrown at protocol/a2a/app/agent_executor.py:72
),
)
]
event_queue.enqueue_event(
completed_task(
context.task_id,
context.context_id,
[new_artifact(parts, f"task_{context.task_id}")],
[context.message],
)
)
def _validate_request(self, context: RequestContext) -> bool:
return False
async def cancel(
self, request: RequestContext, event_queue: EventQueue
) -> Task | None:
raise ServerError(error=UnsupportedOperationError())
View on GitHub (pinned to 52a13f2a57)
Solutions
- Do not send tasks/cancel to this agent; disable client-side cancellation/timeouts that trigger it.
- Check the agent card / server capabilities and skip agents that do not advertise cancellation support.
- If you own the executor and need cancellation, implement cancel() to signal the running agent (e.g. a cancellation event) instead of raising.
- On the client, catch the -32001 error and treat it as 'cancel not supported' rather than a fatal failure.
Example fix
# before
async def cancel(self, request, event_queue):
raise ServerError(error=UnsupportedOperationError()) # always fails
# after (client side)
try:
await client.send_message(cancel_request)
except ServerError as e:
if e.error.code == -32001: # UnsupportedOperation
pass # server cannot cancel; abandon the task locally instead Defensive patterns
Strategy: try-catch
Try / catch
try:
await client.cancel_task(task_id)
except ServerError as e:
if e.error and e.error.code == -32001: # UnsupportedOperation
pass # cancellation not supported; abandon the task locally
else:
raise Prevention
- Check the agent card for cancellation support before sending tasks/cancel.
- Disable automatic cancel-on-timeout in client SDKs when talking to this executor.
- Treat -32001 as non-fatal: log it and continue, since the task simply cannot be cancelled server-side.
When it happens
Trigger: An A2A client sending a tasks/cancel request for a task handled by this executor; or client code calling executor.cancel(...) directly. Any cancel path hits the unconditional raise — there is no state check, so even completed tasks cannot be 'cancelled'.
Common situations: Generic A2A client SDKs that automatically issue cancel on timeout or user abort; orchestration layers that cancel all in-flight tasks during shutdown; test harnesses probing protocol conformance across all methods.
Related errors
AI-assisted analysis of FoundationAgents/OpenManus@52a13f2a57 (2026-08-15).
Data as JSON: /api/errors/10242e8a0e6f591d.
Report an issue: GitHub.