diff --git a/go/systests/rekey_test.go b/go/systests/rekey_test.go
index <HASH>..<HASH> 100644
--- a/go/systests/rekey_test.go
+++ b/go/systests/rekey_test.go
@@ -805,13 +805,21 @@ func (rkt *rekeyTester) confirmGregorStateIsClean() {
 	rkt.log.Debug("+ confirmGregorStateIsClean")
 	defer rkt.log.Debug("- confirmGregorStateIsClean")
 
-	for i := 0; i < 20; i++ {
+	start := time.Now()
+	last := start.Add(10 * time.Second)
+	i := 0
+	var delay time.Duration
+
+	for time.Now().Before(last) {
 		if rkt.isGregorStateEmpty() {
 			return
 		}
-		delay := 50 * time.Millisecond
+		if delay < time.Second {
+			delay += 10 * time.Millisecond
+		}
 		rkt.log.Debug("came back dirty; trying again in %s (attempt %d)", delay, i)
 		time.Sleep(delay)
+		i++
 	}
 	rkt.t.Fatal("Failed to find a clean gregor state")
 }
wait longer for clean gregor state

- workaround windows clock skew on CI
- the real solution is that "is dismissed" quality of messages shouldn't be affected by skew between server and local time