diff --git a/src/rpc/misc.cpp b/src/rpc/misc.cpp
--- a/src/rpc/misc.cpp
+++ b/src/rpc/misc.cpp
@@ -726,10 +726,33 @@
             "echo|echojson ...",
             "Simply echo back the input arguments. This command is for "
             "testing.\n"
+            "\nIt will return an internal bug report when "
+            "arg9='trigger_internal_bug' is passed.\n"
             "\nThe difference between echo and echojson is that echojson has "
             "argument conversion enabled in the client-side table in "
             "bitcoin-cli and the GUI. There is no server-side difference.",
-            {},
+            {
+                {"arg0", RPCArg::Type::STR, RPCArg::Optional::OMITTED_NAMED_ARG,
+                 ""},
+                {"arg1", RPCArg::Type::STR, RPCArg::Optional::OMITTED_NAMED_ARG,
+                 ""},
+                {"arg2", RPCArg::Type::STR, RPCArg::Optional::OMITTED_NAMED_ARG,
+                 ""},
+                {"arg3", RPCArg::Type::STR, RPCArg::Optional::OMITTED_NAMED_ARG,
+                 ""},
+                {"arg4", RPCArg::Type::STR, RPCArg::Optional::OMITTED_NAMED_ARG,
+                 ""},
+                {"arg5", RPCArg::Type::STR, RPCArg::Optional::OMITTED_NAMED_ARG,
+                 ""},
+                {"arg6", RPCArg::Type::STR, RPCArg::Optional::OMITTED_NAMED_ARG,
+                 ""},
+                {"arg7", RPCArg::Type::STR, RPCArg::Optional::OMITTED_NAMED_ARG,
+                 ""},
+                {"arg8", RPCArg::Type::STR, RPCArg::Optional::OMITTED_NAMED_ARG,
+                 ""},
+                {"arg9", RPCArg::Type::STR, RPCArg::Optional::OMITTED_NAMED_ARG,
+                 ""},
+            },
             RPCResult{RPCResult::Type::NONE, "",
                       "Returns whatever was passed in"},
             RPCExamples{""},
@@ -737,7 +760,9 @@
                                      .ToString());
     }
 
-    CHECK_NONFATAL(request.params.size() != 100);
+    if (request.params[9].isStr()) {
+        CHECK_NONFATAL(request.params[9].get_str() != "trigger_internal_bug");
+    }
 
     return request.params;
 }
diff --git a/test/functional/rpc_misc.py b/test/functional/rpc_misc.py
--- a/test/functional/rpc_misc.py
+++ b/test/functional/rpc_misc.py
@@ -25,8 +25,11 @@
         node = self.nodes[0]
 
         self.log.info("test CHECK_NONFATAL")
-        assert_raises_rpc_error(-1, "Internal bug detected: 'request.params.size() != 100'",
-                                lambda: node.echo(*[0] * 100),)
+        assert_raises_rpc_error(
+            -1,
+            'Internal bug detected: \'request.params[9].get_str() != "trigger_internal_bug"\'',
+            lambda: node.echo(arg9='trigger_internal_bug'),
+        )
 
         self.log.info("test getmemoryinfo")
         memory = node.getmemoryinfo()['locked']