Fix sandbox detection for user shell commands (#6094)

This commit is contained in:
zhao-oai
2025-11-01 17:27:03 -04:00
committed by GitHub
parent c7a3428986
commit b81cb7ceb3
4 changed files with 15 additions and 5 deletions

View File

@@ -89,7 +89,10 @@ impl SessionTask for UserShellCommandTask {
let tool_call = ToolCall {
tool_name: USER_SHELL_TOOL_NAME.to_string(),
call_id: Uuid::new_v4().to_string(),
payload: ToolPayload::LocalShell { params },
payload: ToolPayload::LocalShell {
params,
is_user_shell_command: true,
},
};
let router = Arc::new(ToolRouter::from_config(&turn_context.tools_config, None));

View File

@@ -40,6 +40,7 @@ pub enum ToolPayload {
},
LocalShell {
params: ShellToolCallParams,
is_user_shell_command: bool,
},
UnifiedExec {
arguments: String,
@@ -56,7 +57,7 @@ impl ToolPayload {
match self {
ToolPayload::Function { arguments } => Cow::Borrowed(arguments),
ToolPayload::Custom { input } => Cow::Borrowed(input),
ToolPayload::LocalShell { params } => Cow::Owned(params.command.join(" ")),
ToolPayload::LocalShell { params, .. } => Cow::Owned(params.command.join(" ")),
ToolPayload::UnifiedExec { arguments } => Cow::Borrowed(arguments),
ToolPayload::Mcp { raw_arguments, .. } => Cow::Borrowed(raw_arguments),
}

View File

@@ -82,7 +82,10 @@ impl ToolHandler for ShellHandler {
)
.await
}
ToolPayload::LocalShell { params } => {
ToolPayload::LocalShell {
params,
is_user_shell_command,
} => {
let exec_params = Self::to_exec_params(params, turn.as_ref());
Self::run_exec_like(
tool_name.as_str(),
@@ -91,7 +94,7 @@ impl ToolHandler for ShellHandler {
turn,
tracker,
call_id,
true,
is_user_shell_command,
)
.await
}

View File

@@ -120,7 +120,10 @@ impl ToolRouter {
Ok(Some(ToolCall {
tool_name: "local_shell".to_string(),
call_id,
payload: ToolPayload::LocalShell { params },
payload: ToolPayload::LocalShell {
params,
is_user_shell_command: false,
},
}))
}
}