@@ -64,6 +64,8 @@ pub fn read_only_scopes() -> Vec<&'static str> {
6464 "dbm_read" ,
6565 "error_tracking_read" ,
6666 "events_read" ,
67+ "feature_flag_config_read" ,
68+ "feature_flag_environment_config_read" ,
6769 "gcp_configuration_read" ,
6870 "disaster_recovery_status_read" ,
6971 "hosts_read" ,
@@ -161,6 +163,11 @@ pub fn default_scopes() -> Vec<&'static str> {
161163 "error_tracking_read" ,
162164 // Events
163165 "events_read" ,
166+ // Feature Flags
167+ "feature_flag_config_read" ,
168+ "feature_flag_config_write" ,
169+ "feature_flag_environment_config_read" ,
170+ "feature_flag_environment_config_write" ,
164171 // GCP
165172 "gcp_configuration_read" ,
166173 // HAMR (disaster recovery)
@@ -338,6 +345,28 @@ mod tests {
338345 assert ! ( scopes. contains( & "logs_write_pipelines" ) ) ;
339346 }
340347
348+ #[ test]
349+ fn test_default_scopes_feature_flags ( ) {
350+ let scopes = default_scopes ( ) ;
351+ assert ! ( scopes. contains( & "feature_flag_config_read" ) ) ;
352+ assert ! ( scopes. contains( & "feature_flag_config_write" ) ) ;
353+ assert ! ( scopes. contains( & "feature_flag_environment_config_read" ) ) ;
354+ assert ! ( scopes. contains( & "feature_flag_environment_config_write" ) ) ;
355+ // No pup command exposes require-approval, so this scope shouldn't
356+ // be requested by default.
357+ assert ! ( !scopes. contains( & "feature_flag_approvals_override" ) ) ;
358+ }
359+
360+ #[ test]
361+ fn test_read_only_scopes_feature_flags ( ) {
362+ let ro = read_only_scopes ( ) ;
363+ assert ! ( ro. contains( & "feature_flag_config_read" ) ) ;
364+ assert ! ( ro. contains( & "feature_flag_environment_config_read" ) ) ;
365+ assert ! ( !ro. contains( & "feature_flag_config_write" ) ) ;
366+ assert ! ( !ro. contains( & "feature_flag_environment_config_write" ) ) ;
367+ assert ! ( !ro. contains( & "feature_flag_approvals_override" ) ) ;
368+ }
369+
341370 #[ test]
342371 fn test_read_only_scopes_no_write_or_manage ( ) {
343372 let ro = read_only_scopes ( ) ;
0 commit comments