From acc5581b6bbeae60ff5b8a665a67a0b14d66ee2b Mon Sep 17 00:00:00 2001 From: Alex Hancock Date: Mon, 10 Nov 2025 16:46:53 -0500 Subject: [PATCH] fix: disallow runaway subagent chains (#5659) --- crates/goose/src/agents/agent.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/crates/goose/src/agents/agent.rs b/crates/goose/src/agents/agent.rs index 0d28297b06..bae2e8cc9d 100644 --- a/crates/goose/src/agents/agent.rs +++ b/crates/goose/src/agents/agent.rs @@ -394,6 +394,20 @@ impl Agent { cancellation_token: Option, session: &Session, ) -> (String, Result) { + if session.session_type == crate::session::SessionType::SubAgent + && (tool_call.name == DYNAMIC_TASK_TOOL_NAME_PREFIX + || tool_call.name == SUBAGENT_EXECUTE_TASK_TOOL_NAME) + { + return ( + request_id, + Err(ErrorData::new( + ErrorCode::INVALID_REQUEST, + "Subagents cannot create other subagents".to_string(), + None, + )), + ); + } + if tool_call.name == PLATFORM_MANAGE_SCHEDULE_TOOL_NAME { let arguments = tool_call .arguments