diff --git a/runtime/runtime-core/common/src/aws/smithy/kotlin/runtime/config/EnvironmentSetting.kt b/runtime/runtime-core/common/src/aws/smithy/kotlin/runtime/config/EnvironmentSetting.kt
index e5dda44f68..a2ceeba27e 100644
--- a/runtime/runtime-core/common/src/aws/smithy/kotlin/runtime/config/EnvironmentSetting.kt
+++ b/runtime/runtime-core/common/src/aws/smithy/kotlin/runtime/config/EnvironmentSetting.kt
@@ -68,3 +68,21 @@ public inline fun <reified T : Enum<T>> enumEnvSetting(sysProp: String, envVar:
     }
     return EnvironmentSetting(parse, sysProp, envVar)
 }
+
+@InternalApi
+public inline fun <reified T : Enum<T>> enumSetEnvSetting(sysProp: String, envVar: String): EnvironmentSetting<Set<T>?> {
+    val parse = { strValue: String ->
+        strValue.split(",")
+            .map { it.trim() }
+            .filter { it.isNotEmpty() }
+            .map { enumValue ->
+                enumValues<T>()
+                    .firstOrNull { it.name.equals(enumValue, ignoreCase = true) }
+                    ?: throw ClientException(
+                        "Value $enumValue is not supported, should be one of ${enumValues<T>().joinToString(", ")}",
+                    )
+            }
+            .toSet()
+    }
+    return EnvironmentSetting(parse, sysProp, envVar)
+}