diff --git a/README.md b/README.md
index 3827baea0e49a5792e8bd230f6e90230bcccca9d..497f2c99231e3e0aa8908f4680aa1b76af8f802e 100644
--- a/README.md
+++ b/README.md
@@ -160,6 +160,9 @@ Flags:
                                   base64 representations) (default "0")
       --forceHistoricalRounds     Force all rounds to be sent to historical
                                   round retrieval
+      --forceMessagePickupRetry   Enable a mechanism which forces a 50% chance 
+                                  of no message pickup, instead triggering the 
+                                  message pickup retry mechanism
   -h, --help                      help for client
   -l, --log string                Path to the log output path (- is stdout)
                                   (default "-")
diff --git a/cmd/root.go b/cmd/root.go
index 9b11cfc79d7c1beadd311add7455f39ba8d1aa48..ed2e2b9936ab803f35d3c68f871ffb9a64bbb51c 100644
--- a/cmd/root.go
+++ b/cmd/root.go
@@ -769,6 +769,9 @@ func init() {
 		"Enables polling for unfiltered network updates with RSA signatures")
 	viper.BindPFlag("slowPolling",
 		rootCmd.Flags().Lookup("slowPolling"))
+	rootCmd.Flags().Bool("forceMessagePickupRetry", false,
+		"Enable a mechanism which forces a 50% chance of no message pickup, " +
+		"instead triggering the message pickup retry mechanism")
 
 	// E2E Params
 	defaultE2EParams := params.GetDefaultE2ESessionParams()
diff --git a/interfaces/params/rounds.go b/interfaces/params/rounds.go
index 6c4fdc5c62acb6d8b00450cef6e343f0b25092ac..0c8f335023498d6f7725cbef5f759a2c90ad560a 100644
--- a/interfaces/params/rounds.go
+++ b/interfaces/params/rounds.go
@@ -35,6 +35,10 @@ type Rounds struct {
 	// Interval between checking for rounds in UncheckedRoundStore
 	// due for a message retrieval retry
 	UncheckRoundPeriod time.Duration
+
+	// Toggles if message pickup retrying mechanism if forced
+	// by intentionally not looking up messages
+	ForceMessagePickupRetry bool
 }
 
 func GetDefaultRounds() Rounds {