From 6511c9863149477616311266f6153644694b7274 Mon Sep 17 00:00:00 2001 From: Zhang <56248212+YonganZhang@users.noreply.github.com> Date: Wed, 1 Apr 2026 21:00:47 +0800 Subject: [PATCH] Fix unhandled OSError in subprocess and unsafe dict access in subagent (#159) - agents/s01_agent_loop.py: Add FileNotFoundError/OSError handling in run_bash() - agents/s04_subagent.py: Same fix + use .get() for block.input['prompt'] (consistent with .get() already used for 'description' on line 157) Co-authored-by: Claude Opus 4.6 (1M context) --- agents/s01_agent_loop.py | 2 ++ agents/s04_subagent.py | 7 +++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/agents/s01_agent_loop.py b/agents/s01_agent_loop.py index 0508800..8455ebf 100644 --- a/agents/s01_agent_loop.py +++ b/agents/s01_agent_loop.py @@ -73,6 +73,8 @@ def run_bash(command: str) -> str: return out[:50000] if out else "(no output)" except subprocess.TimeoutExpired: return "Error: Timeout (120s)" + except (FileNotFoundError, OSError) as e: + return f"Error: {e}" # -- The core pattern: a while loop that calls tools until the model stops -- diff --git a/agents/s04_subagent.py b/agents/s04_subagent.py index 2cbf081..dda2737 100644 --- a/agents/s04_subagent.py +++ b/agents/s04_subagent.py @@ -61,6 +61,8 @@ def run_bash(command: str) -> str: return out[:50000] if out else "(no output)" except subprocess.TimeoutExpired: return "Error: Timeout (120s)" + except (FileNotFoundError, OSError) as e: + return f"Error: {e}" def run_read(path: str, limit: int = None) -> str: try: @@ -155,8 +157,9 @@ def agent_loop(messages: list): if block.type == "tool_use": if block.name == "task": desc = block.input.get("description", "subtask") - print(f"> task ({desc}): {block.input['prompt'][:80]}") - output = run_subagent(block.input["prompt"]) + prompt = block.input.get("prompt", "") + print(f"> task ({desc}): {prompt[:80]}") + output = run_subagent(prompt) else: handler = TOOL_HANDLERS.get(block.name) output = handler(**block.input) if handler else f"Unknown tool: {block.name}"