mirror of
https://github.com/openai/codex.git
synced 2026-09-15 12:08:01 +00:00
fix(core): force retry approval for network-context denials
This commit is contained in:
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user