diff --git a/fuzzing/private/common.bzl b/fuzzing/private/common.bzl
index d263e5e..a72dd53 100644
--- a/fuzzing/private/common.bzl
+++ b/fuzzing/private/common.bzl
@@ -79,15 +79,19 @@
 )
 
 def _fuzzing_corpus_impl(ctx):
+    corpus_list_file_args = ctx.actions.args()
+    corpus_list_file_args.set_param_file_format("multiline")
+    corpus_list_file_args.use_param_file("--corpus_list_file=%s", use_always = True)
+    corpus_list_file_args.add_all(ctx.files.srcs)
+
     corpus_dir = ctx.actions.declare_directory(ctx.attr.name)
     cp_args = ctx.actions.args()
-    cp_args.add_joined("--corpus_list", ctx.files.srcs, join_with = ",")
     cp_args.add("--output_dir=" + corpus_dir.path)
 
     ctx.actions.run(
         inputs = ctx.files.srcs,
         outputs = [corpus_dir],
-        arguments = [cp_args],
+        arguments = [cp_args, corpus_list_file_args],
         executable = ctx.executable._corpus_tool,
     )
 
diff --git a/fuzzing/tools/make_corpus_dir.py b/fuzzing/tools/make_corpus_dir.py
index 1d81aba..aeae9e3 100644
--- a/fuzzing/tools/make_corpus_dir.py
+++ b/fuzzing/tools/make_corpus_dir.py
@@ -29,10 +29,21 @@
 flags.DEFINE_list("corpus_list", [],
                   "Each element in the list stands for a corpus file")
 
+flags.DEFINE_string("corpus_list_file", None,
+                    "An optional file that lists corpus paths by lines")
+
 flags.DEFINE_string("output_dir", None, "The path of the output directory")
 
 flags.mark_flag_as_required("output_dir")
 
+def expand_corpus_to_file_list(corpus, file_list):
+    if not os.path.exists(corpus):
+        raise FileNotFoundError("file " + corpus + " doesn't exist")
+    if os.path.isdir(corpus):
+        # The first element in glob("dir/**") is "dir/", which needs to be excluded
+        file_list.extend(glob.glob(os.path.join(corpus, "**"), recursive=True)[1:])
+    else:
+        file_list.append(corpus)
 
 def main(argv):
     if not os.path.exists(FLAGS.output_dir):
@@ -40,15 +51,13 @@
 
     expanded_file_list = []
     for corpus in FLAGS.corpus_list:
-        if not os.path.exists(corpus):
-            print("ERROR: file " + corpus + " doesn't exist.", file=stderr)
-            return -1
-        if os.path.isdir(corpus):
-            # The first element in glob("dir/**") is "dir/", which needs to be excluded
-            expanded_file_list += glob.glob(os.path.join(corpus, "**"), recursive=True)[1:]
-        else:
-            expanded_file_list.append(corpus)
-    
+        expand_corpus_to_file_list(corpus, expanded_file_list)
+    if FLAGS.corpus_list_file:
+        with open(FLAGS.corpus_list_file) as corpus_list_file:
+            for corpus_line in corpus_list_file:
+                expand_corpus_to_file_list(
+                    corpus_line.rstrip("\n"), expanded_file_list)
+
     if expanded_file_list:
         for corpus in expanded_file_list:
             dest = os.path.join(FLAGS.output_dir, corpus.replace("/", "-"))
