feat(auto-review) Handle request_permissions calls (#18393)

## Summary
When auto-review is enabled, it should handle request_permissions tool.
We'll need to clean up the UX but I'm planning to do that in a separate
pass

## Testing
- [x] Ran locally
<img width="893" height="396" alt="Screenshot 2026-04-17 at 1 16 13 PM"
src="https://github.com/user-attachments/assets/4c045c5f-1138-4c6c-ac6e-2cb6be4514d8"
/>

---------

Co-authored-by: Codex <noreply@openai.com>
This commit is contained in:
Dylan Hurd
2026-04-20 21:48:57 -07:00
committed by GitHub
co-authored by Codex
parent 543a08dac9
commit 86535c9901
31 changed files with 2232 additions and 370 deletions
@@ -199,7 +199,8 @@ pub fn build_item_from_guardian_event(
}
GuardianAssessmentAction::ApplyPatch { .. }
| GuardianAssessmentAction::NetworkAccess { .. }
| GuardianAssessmentAction::McpToolCall { .. } => None,
| GuardianAssessmentAction::McpToolCall { .. }
| GuardianAssessmentAction::RequestPermissions { .. } => None,
}
}
@@ -5142,6 +5142,14 @@ pub struct GuardianMcpToolCallReviewAction {
pub tool_title: Option<String>,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, JsonSchema, TS)]
#[serde(rename_all = "camelCase")]
#[ts(export_to = "v2/")]
pub struct GuardianRequestPermissionsReviewAction {
pub reason: Option<String>,
pub permissions: RequestPermissionProfile,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, JsonSchema, TS)]
#[serde(tag = "type", rename_all = "camelCase")]
#[ts(tag = "type", rename_all = "camelCase")]
@@ -5185,6 +5193,12 @@ pub enum GuardianApprovalReviewAction {
connector_name: Option<String>,
tool_title: Option<String>,
},
#[serde(rename_all = "camelCase")]
#[ts(rename_all = "camelCase")]
RequestPermissions {
reason: Option<String>,
permissions: RequestPermissionProfile,
},
}
impl From<CoreGuardianAssessmentAction> for GuardianApprovalReviewAction {
@@ -5237,6 +5251,13 @@ impl From<CoreGuardianAssessmentAction> for GuardianApprovalReviewAction {
connector_name,
tool_title,
},
CoreGuardianAssessmentAction::RequestPermissions {
reason,
permissions,
} => Self::RequestPermissions {
reason,
permissions: permissions.into(),
},
}
}
}
@@ -5291,6 +5312,13 @@ impl From<GuardianApprovalReviewAction> for CoreGuardianAssessmentAction {
connector_name,
tool_title,
},
GuardianApprovalReviewAction::RequestPermissions {
reason,
permissions,
} => Self::RequestPermissions {
reason,
permissions: permissions.into(),
},
}
}
}