From c0da3a4bb78a0dc776981351b52f8b156ca68d7f Mon Sep 17 00:00:00 2001 From: Olexandr88 Date: Thu, 7 May 2026 14:45:07 +0300 Subject: [PATCH] fix: catch tool exceptions to prevent corrupted agent context Added error handling for tool calls to log exceptions and return error messages. --- agent/core/agent_loop.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/agent/core/agent_loop.py b/agent/core/agent_loop.py index 0eaa6e9d..0e71fbfb 100644 --- a/agent/core/agent_loop.py +++ b/agent/core/agent_loop.py @@ -1468,9 +1468,13 @@ async def _exec_tool( return (tc, name, args, err, False) if decision.billable: _record_estimated_spend(session, decision) - out, ok = await session.tool_router.call_tool( - name, args, session=session, tool_call_id=tc.id - ) + try: + out, ok = await session.tool_router.call_tool( + name, args, session=session, tool_call_id=tc.id + ) + except Exception as e: + logger.error("Unexpected exception in tool '%s': %s", name, e) + out, ok = f"Tool error: {e}", False return (tc, name, args, out, ok) gather_task = asyncio.ensure_future(