diff --git a/aws/rust-runtime/aws-config/src/imds/client.rs b/aws/rust-runtime/aws-config/src/imds/client.rs
index b1b9c7ab448590ba3c90c5363d1b4f30c905e082..8f30468bcdd9472e25cc2f34d3e3492059c1cbe9 100644
--- a/aws/rust-runtime/aws-config/src/imds/client.rs
+++ b/aws/rust-runtime/aws-config/src/imds/client.rs
@@ -989,6 +989,33 @@ pub(crate) mod test {
         connection.assert_requests_match(&[]);
     }
 
+    /// 401 error during metadata retrieval must be retried
+    #[tokio::test]
+    #[traced_test]
+    async fn retry_metadata_401() {
+        let connection = TestConnection::new(vec![
+            (
+                token_request("http://169.254.169.254", 21600),
+                token_response(0, TOKEN_A),
+            ),
+            (
+                imds_request("http://169.254.169.254/latest/metadata", TOKEN_A),
+                http::Response::builder().status(401).body("").unwrap(),
+            ),
+            (
+                token_request("http://169.254.169.254", 21600),
+                token_response(21600, TOKEN_B),
+            ),
+            (
+                imds_request("http://169.254.169.254/latest/metadata", TOKEN_B),
+                imds_response("ok"),
+            ),
+        ]);
+        let client = make_client(&connection).await;
+        assert_eq!(client.get("/latest/metadata").await.expect("success"), "ok");
+        connection.assert_requests_match(&[]);
+    }
+
     /// 403 responses from IMDS during token acquisition MUST NOT be retried
     #[tokio::test]
     #[traced_test]