mirror of
https://github.com/pchuan98/codex.git
synced 2026-07-01 00:31:56 +08:00
fix(core) default RejectConfig.request_permissions (#14165)
## Summary Adds a default here so existing config deserializes ## Testing - [x] Added a unit test
This commit is contained in:
committed by
GitHub
Unverified
parent
d71e042694
commit
772259b01f
@@ -58,6 +58,7 @@
|
||||
"type": "boolean"
|
||||
},
|
||||
"request_permissions": {
|
||||
"default": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
"rules": {
|
||||
@@ -69,7 +70,6 @@
|
||||
},
|
||||
"required": [
|
||||
"mcp_elicitations",
|
||||
"request_permissions",
|
||||
"rules",
|
||||
"sandbox_approval"
|
||||
],
|
||||
|
||||
@@ -4872,6 +4872,7 @@
|
||||
"type": "boolean"
|
||||
},
|
||||
"request_permissions": {
|
||||
"default": false,
|
||||
"description": "Reject approval prompts related to built-in permission requests.",
|
||||
"type": "boolean"
|
||||
},
|
||||
@@ -4886,7 +4887,6 @@
|
||||
},
|
||||
"required": [
|
||||
"mcp_elicitations",
|
||||
"request_permissions",
|
||||
"rules",
|
||||
"sandbox_approval"
|
||||
],
|
||||
|
||||
@@ -6805,6 +6805,7 @@
|
||||
"type": "boolean"
|
||||
},
|
||||
"request_permissions": {
|
||||
"default": false,
|
||||
"description": "Reject approval prompts related to built-in permission requests.",
|
||||
"type": "boolean"
|
||||
},
|
||||
@@ -6819,7 +6820,6 @@
|
||||
},
|
||||
"required": [
|
||||
"mcp_elicitations",
|
||||
"request_permissions",
|
||||
"rules",
|
||||
"sandbox_approval"
|
||||
],
|
||||
@@ -9330,6 +9330,7 @@
|
||||
"type": "boolean"
|
||||
},
|
||||
"request_permissions": {
|
||||
"default": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
"rules": {
|
||||
@@ -9341,7 +9342,6 @@
|
||||
},
|
||||
"required": [
|
||||
"mcp_elicitations",
|
||||
"request_permissions",
|
||||
"rules",
|
||||
"sandbox_approval"
|
||||
],
|
||||
|
||||
@@ -732,6 +732,7 @@
|
||||
"type": "boolean"
|
||||
},
|
||||
"request_permissions": {
|
||||
"default": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
"rules": {
|
||||
@@ -743,7 +744,6 @@
|
||||
},
|
||||
"required": [
|
||||
"mcp_elicitations",
|
||||
"request_permissions",
|
||||
"rules",
|
||||
"sandbox_approval"
|
||||
],
|
||||
|
||||
@@ -149,6 +149,7 @@
|
||||
"type": "boolean"
|
||||
},
|
||||
"request_permissions": {
|
||||
"default": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
"rules": {
|
||||
@@ -160,7 +161,6 @@
|
||||
},
|
||||
"required": [
|
||||
"mcp_elicitations",
|
||||
"request_permissions",
|
||||
"rules",
|
||||
"sandbox_approval"
|
||||
],
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
"type": "boolean"
|
||||
},
|
||||
"request_permissions": {
|
||||
"default": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
"rules": {
|
||||
@@ -32,7 +33,6 @@
|
||||
},
|
||||
"required": [
|
||||
"mcp_elicitations",
|
||||
"request_permissions",
|
||||
"rules",
|
||||
"sandbox_approval"
|
||||
],
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
"type": "boolean"
|
||||
},
|
||||
"request_permissions": {
|
||||
"default": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
"rules": {
|
||||
@@ -32,7 +33,6 @@
|
||||
},
|
||||
"required": [
|
||||
"mcp_elicitations",
|
||||
"request_permissions",
|
||||
"rules",
|
||||
"sandbox_approval"
|
||||
],
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
"type": "boolean"
|
||||
},
|
||||
"request_permissions": {
|
||||
"default": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
"rules": {
|
||||
@@ -36,7 +37,6 @@
|
||||
},
|
||||
"required": [
|
||||
"mcp_elicitations",
|
||||
"request_permissions",
|
||||
"rules",
|
||||
"sandbox_approval"
|
||||
],
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
"type": "boolean"
|
||||
},
|
||||
"request_permissions": {
|
||||
"default": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
"rules": {
|
||||
@@ -32,7 +33,6 @@
|
||||
},
|
||||
"required": [
|
||||
"mcp_elicitations",
|
||||
"request_permissions",
|
||||
"rules",
|
||||
"sandbox_approval"
|
||||
],
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
"type": "boolean"
|
||||
},
|
||||
"request_permissions": {
|
||||
"default": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
"rules": {
|
||||
@@ -36,7 +37,6 @@
|
||||
},
|
||||
"required": [
|
||||
"mcp_elicitations",
|
||||
"request_permissions",
|
||||
"rules",
|
||||
"sandbox_approval"
|
||||
],
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
"type": "boolean"
|
||||
},
|
||||
"request_permissions": {
|
||||
"default": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
"rules": {
|
||||
@@ -32,7 +33,6 @@
|
||||
},
|
||||
"required": [
|
||||
"mcp_elicitations",
|
||||
"request_permissions",
|
||||
"rules",
|
||||
"sandbox_approval"
|
||||
],
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
"type": "boolean"
|
||||
},
|
||||
"request_permissions": {
|
||||
"default": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
"rules": {
|
||||
@@ -36,7 +37,6 @@
|
||||
},
|
||||
"required": [
|
||||
"mcp_elicitations",
|
||||
"request_permissions",
|
||||
"rules",
|
||||
"sandbox_approval"
|
||||
],
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
"type": "boolean"
|
||||
},
|
||||
"request_permissions": {
|
||||
"default": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
"rules": {
|
||||
@@ -36,7 +37,6 @@
|
||||
},
|
||||
"required": [
|
||||
"mcp_elicitations",
|
||||
"request_permissions",
|
||||
"rules",
|
||||
"sandbox_approval"
|
||||
],
|
||||
|
||||
@@ -201,6 +201,7 @@ pub enum AskForApproval {
|
||||
Reject {
|
||||
sandbox_approval: bool,
|
||||
rules: bool,
|
||||
#[serde(default)]
|
||||
request_permissions: bool,
|
||||
mcp_elicitations: bool,
|
||||
},
|
||||
@@ -5978,6 +5979,28 @@ mod tests {
|
||||
assert_eq!(back_to_v2, v2_policy);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn ask_for_approval_reject_defaults_missing_request_permissions_to_false() {
|
||||
let decoded = serde_json::from_value::<AskForApproval>(serde_json::json!({
|
||||
"reject": {
|
||||
"sandbox_approval": true,
|
||||
"rules": false,
|
||||
"mcp_elicitations": true,
|
||||
}
|
||||
}))
|
||||
.expect("legacy reject approval policy should deserialize");
|
||||
|
||||
assert_eq!(
|
||||
decoded,
|
||||
AskForApproval::Reject {
|
||||
sandbox_approval: true,
|
||||
rules: false,
|
||||
request_permissions: false,
|
||||
mcp_elicitations: true,
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn mcp_server_elicitation_response_round_trips_rmcp_result() {
|
||||
let rmcp_result = rmcp::model::CreateElicitationResult {
|
||||
|
||||
@@ -1323,6 +1323,7 @@
|
||||
"type": "boolean"
|
||||
},
|
||||
"request_permissions": {
|
||||
"default": false,
|
||||
"description": "Reject approval prompts related to built-in permission requests.",
|
||||
"type": "boolean"
|
||||
},
|
||||
@@ -1337,7 +1338,6 @@
|
||||
},
|
||||
"required": [
|
||||
"mcp_elicitations",
|
||||
"request_permissions",
|
||||
"rules",
|
||||
"sandbox_approval"
|
||||
],
|
||||
|
||||
@@ -527,6 +527,7 @@ pub struct RejectConfig {
|
||||
/// Reject prompts triggered by execpolicy `prompt` rules.
|
||||
pub rules: bool,
|
||||
/// Reject approval prompts related to built-in permission requests.
|
||||
#[serde(default)]
|
||||
pub request_permissions: bool,
|
||||
/// Reject MCP elicitation prompts.
|
||||
pub mcp_elicitations: bool,
|
||||
@@ -3487,6 +3488,26 @@ mod tests {
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn reject_config_defaults_missing_request_permissions_to_false() {
|
||||
let decoded = serde_json::from_value::<RejectConfig>(serde_json::json!({
|
||||
"sandbox_approval": true,
|
||||
"rules": false,
|
||||
"mcp_elicitations": true,
|
||||
}))
|
||||
.expect("legacy reject config should deserialize");
|
||||
|
||||
assert_eq!(
|
||||
decoded,
|
||||
RejectConfig {
|
||||
sandbox_approval: true,
|
||||
rules: false,
|
||||
request_permissions: false,
|
||||
mcp_elicitations: true,
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn workspace_write_restricted_read_access_includes_effective_writable_roots() {
|
||||
let cwd = if cfg!(windows) {
|
||||
|
||||
Reference in New Issue
Block a user