514514 line-height : 1.4 ;
515515 }
516516
517+ .approval-risk-tier {
518+ display : inline-flex;
519+ align-items : center;
520+ border-radius : 4px ;
521+ padding : 1px 7px ;
522+ font-size : 10px ;
523+ font-weight : 700 ;
524+ letter-spacing : 0.04em ;
525+ text-transform : uppercase;
526+ flex-shrink : 0 ;
527+ }
528+
529+ .approval-risk-tier .risk-low {
530+ background : rgba (22 , 163 , 74 , 0.12 );
531+ color : # 16a34a ;
532+ }
533+
534+ .approval-risk-tier .risk-medium {
535+ background : rgba (245 , 158 , 11 , 0.12 );
536+ color : # d97706 ;
537+ }
538+
539+ .approval-risk-tier .risk-high {
540+ background : rgba (220 , 38 , 38 , 0.12 );
541+ color : # dc2626 ;
542+ }
543+
544+ @media (prefers-color-scheme : dark) {
545+ .approval-risk-tier .risk-low {
546+ background : rgba (22 , 163 , 74 , 0.18 );
547+ color : # 4ade80 ;
548+ }
549+ .approval-risk-tier .risk-medium {
550+ background : rgba (245 , 158 , 11 , 0.18 );
551+ color : # fbbf24 ;
552+ }
553+ .approval-risk-tier .risk-high {
554+ background : rgba (220 , 38 , 38 , 0.18 );
555+ color : # f87171 ;
556+ }
557+ }
558+
517559 .approval-reason {
518560 color : var (--ink );
519561 font-size : 13px ;
@@ -1427,10 +1469,10 @@ <h3 class="settings-group-title">Approval Policy</h3>
14271469 < div class ="row ">
14281470 < label for ="defaultApprovalTier "> Default Approval Tier</ label >
14291471 < select id ="defaultApprovalTier ">
1430- < option value ="high "> high -- approve everything </ option >
1431- < option value ="medium "> medium -- approve risky operations </ option >
1432- < option value ="low "> low -- approve only destructive operations</ option >
1433- < option value ="auto " > auto -- never prompt</ option >
1472+ < option value ="high "> high -- auto- approve all operations </ option >
1473+ < option value ="medium "> medium -- prompt only for high-risk (e.g. deploy) </ option >
1474+ < option value ="low "> low -- prompt for medium and high-risk operations</ option >
1475+ < option value ="none " > none -- prompt for all operations </ option >
14341476 </ select >
14351477 </ div >
14361478 < div class ="row ">
@@ -1445,7 +1487,7 @@ <h3 class="settings-group-title">Approval Policy</h3>
14451487 < option value ="high "> high</ option >
14461488 < option value ="medium "> medium</ option >
14471489 < option value ="low "> low</ option >
1448- < option value ="auto " > auto </ option >
1490+ < option value ="none " > none </ option >
14491491 </ select >
14501492 < button class ="secondary " id ="tierOverrideAddBtn " type ="button "> Add</ button >
14511493 </ div >
@@ -2114,6 +2156,13 @@ <h3 class="settings-group-title">Always-Allow Rules</h3>
21142156 title . textContent = operationLabel ( approval . operationId ) ;
21152157 header . appendChild ( title ) ;
21162158
2159+ if ( approval . riskTier ) {
2160+ const riskBadge = document . createElement ( "span" ) ;
2161+ riskBadge . className = `approval-risk-tier risk-${ approval . riskTier } ` ;
2162+ riskBadge . textContent = approval . riskTier ;
2163+ header . appendChild ( riskBadge ) ;
2164+ }
2165+
21172166 const badge = document . createElement ( "span" ) ;
21182167 badge . className = `approval-badge ${ statusKey } ` ;
21192168 badge . textContent = resolved
@@ -2232,7 +2281,7 @@ <h3 class="settings-group-title">Always-Allow Rules</h3>
22322281 apiOrigin . value = settings . apiOrigin || "" ;
22332282 webAppOrigin . value = settings . webAppOrigin || "" ;
22342283 sandboxBaseDirectory . value = settings . sandboxBaseDirectory || "" ;
2235- defaultApprovalTier . value = settings . defaultApprovalTier || "high" ;
2284+ defaultApprovalTier . value = settings . defaultApprovalTier === "auto" ? "high" : ( settings . defaultApprovalTier || "high" ) ;
22362285 renderTierOverrides ( settings . autoApprovalRules || { } ) ;
22372286 renderAlwaysAllowRules ( settings . alwaysAllowRules || [ ] ) ;
22382287 updateSandboxBaseWarning ( ) ;
@@ -2247,7 +2296,7 @@ <h3 class="settings-group-title">Always-Allow Rules</h3>
22472296 "health_check" , "repos_config" , "deploy" , "filesystem"
22482297 ] ;
22492298
2250- const TIER_OPTIONS = [ "high" , "medium" , "low" , "auto " ] ;
2299+ const TIER_OPTIONS = [ "high" , "medium" , "low" , "none " ] ;
22512300
22522301 function renderTierOverrides ( rules ) {
22532302 // Sync hidden input for save
@@ -2272,7 +2321,8 @@ <h3 class="settings-group-title">Always-Allow Rules</h3>
22722321 const opt = document . createElement ( "option" ) ;
22732322 opt . value = t ;
22742323 opt . textContent = t ;
2275- if ( t === tier ) opt . selected = true ;
2324+ const normalizedTier = tier === "auto" ? "high" : tier ;
2325+ if ( t === normalizedTier ) opt . selected = true ;
22762326 sel . appendChild ( opt ) ;
22772327 }
22782328 sel . addEventListener ( "change" , ( ) => {
0 commit comments