fix(core): force retry approval for network-context denials

This commit is contained in:
viyatb-oai
2026-02-11 20:30:47 -08:00
parent 45c7af7571
commit f2dd34871c

View File

@@ -153,7 +153,11 @@ impl ToolOrchestrator {
}
// Ask for approval before retrying with the escalated sandbox.
if !tool.should_bypass_approval(approval_policy, already_approved) {
let should_bypass_retry_approval = should_bypass_retry_approval(
tool.should_bypass_approval(approval_policy, already_approved),
retry_details.network_approval_context.is_some(),
);
if !should_bypass_retry_approval {
let approval_ctx = ApprovalCtx {
session: tool_ctx.session,
turn: turn_ctx,
@@ -260,6 +264,13 @@ fn can_retry_without_sandbox(
)
}
fn should_bypass_retry_approval(
tool_wants_to_bypass_approval: bool,
has_network_approval_context: bool,
) -> bool {
tool_wants_to_bypass_approval && !has_network_approval_context
}
fn extract_network_approval_context(output: &ExecToolCallOutput) -> Option<NetworkApprovalContext> {
[
output.stderr.text.as_str(),
@@ -418,4 +429,14 @@ mod tests {
false
));
}
#[test]
fn retry_approval_not_bypassed_when_network_context_present() {
assert!(!should_bypass_retry_approval(true, true));
}
#[test]
fn retry_approval_bypassed_without_network_context() {
assert!(should_bypass_retry_approval(true, false));
}
}