diff --git a/internal/lib/cvd_compute_client_multi_stage.py b/internal/lib/cvd_compute_client_multi_stage.py
index a4c2826..44c0e90 100644
--- a/internal/lib/cvd_compute_client_multi_stage.py
+++ b/internal/lib/cvd_compute_client_multi_stage.py
@@ -297,7 +297,7 @@
         """Launch CVD.
 
         Launch AVD with launch_cvd. If the process is failed, acloud would show
-        error messages and atuo download log files from remote instance.
+        error messages and auto download log files from remote instance.
 
         Args:
             instance: String, instance name.
diff --git a/pull/pull.py b/pull/pull.py
index 60c2074..1f99c5c 100644
--- a/pull/pull.py
+++ b/pull/pull.py
@@ -41,7 +41,7 @@
 _IMG_FILE_EXTENSION = ".img"
 
 
-def PullFileFromInstance(cfg, instance):
+def PullFileFromInstance(cfg, instance, file_name=None, no_prompts=False):
     """Pull file from remote CF instance.
 
     1. Download log files to temp folder.
@@ -51,6 +51,8 @@
     Args:
         cfg: AcloudConfig object.
         instance: list.Instance() object.
+        file_name: String of file name.
+        no_prompts: Boolean, True to skip the prompt about file streaming.
 
     Returns:
         A Report instance.
@@ -59,11 +61,11 @@
               gce_user=constants.GCE_USER,
               ssh_private_key_path=cfg.ssh_private_key_path,
               extra_args_ssh_tunnel=cfg.extra_args_ssh_tunnel)
-    log_files = SelectLogFileToPull(ssh)
+    log_files = SelectLogFileToPull(ssh, file_name)
     download_folder = GetDownloadLogFolder(instance.name)
     PullLogs(ssh, log_files, download_folder)
     if len(log_files) == 1:
-        DisplayLog(ssh, log_files[0])
+        DisplayLog(ssh, log_files[0], no_prompts)
     return report.Report(command="pull")
 
 
@@ -81,17 +83,18 @@
     _DisplayPullResult(download_folder)
 
 
-def DisplayLog(ssh, log_file):
+def DisplayLog(ssh, log_file, no_prompts=False):
     """Display the content of log file in the screen.
 
     Args:
         ssh: Ssh object.
         log_file: String of the log file path.
+        no_prompts: Boolean, True to skip all prompts.
     """
     warning_msg = ("It will stream log to show on screen. If you want to stop "
                    "streaming, please press CTRL-C to exit.\nPress 'y' to show "
                    "log or read log by myself[y/N]:")
-    if utils.GetUserAnswerYes(warning_msg):
+    if no_prompts or utils.GetUserAnswerYes(warning_msg):
         ssh.Run("tail -f -n +1 %s" % log_file, show_output=True)
 
 
@@ -122,22 +125,29 @@
     return log_folder
 
 
-def SelectLogFileToPull(ssh):
+def SelectLogFileToPull(ssh, file_name=None):
     """Select one log file or all log files to downalod.
 
     1. Get all log file paths as selection list
-    2. Get user selected file path
+    2. Get user selected file path or user provided file name.
 
     Args:
         ssh: Ssh object.
-
-    Raises:
-        errors.CheckPathError: Can't find log files.
+        file_name: String of file name.
 
     Returns:
         List of selected file paths.
+
+    Raises:
+        errors.CheckPathError: Can't find log files.
     """
     log_files = GetAllLogFilePaths(ssh)
+    if file_name:
+        file_path = os.path.join(_REMOTE_LOG_FOLDER, file_name)
+        if file_path in log_files:
+            return [file_path]
+        raise errors.CheckPathError("Can't find this log file(%s) from remote "
+                                    "instance." % file_path)
 
     if len(log_files) == 1:
         return log_files
@@ -147,7 +157,7 @@
         return utils.GetAnswerFromList(log_files, enable_choose_all=True)
 
     raise errors.CheckPathError("Can't find any log file in folder(%s) from "
-                                "remote instance" % _REMOTE_LOG_FOLDER)
+                                "remote instance." % _REMOTE_LOG_FOLDER)
 
 
 def GetAllLogFilePaths(ssh):
@@ -207,5 +217,8 @@
     if args.instance_name:
         instance = list_instances.GetInstancesFromInstanceNames(
             cfg, [args.instance_name])
-        return PullFileFromInstance(cfg, instance[0])
-    return PullFileFromInstance(cfg, list_instances.ChooseOneRemoteInstance(cfg))
+        return PullFileFromInstance(cfg, instance[0], args.file_name, args.no_prompt)
+    return PullFileFromInstance(cfg,
+                                list_instances.ChooseOneRemoteInstance(cfg),
+                                args.file_name,
+                                args.no_prompt)
diff --git a/pull/pull_args.py b/pull/pull_args.py
index 62a28d4..7ab6172 100644
--- a/pull/pull_args.py
+++ b/pull/pull_args.py
@@ -39,5 +39,19 @@
         type=str,
         required=False,
         help="The name of the remote instance that need to pull log files.")
+    pull_parser.add_argument(
+        "--file-name",
+        dest="file_name",
+        type=str,
+        required=False,
+        help="The log file name to pull from the remote instance, "
+             "e.g. launcher.log, kernel.log.")
+    pull_parser.add_argument(
+        "--yes", "-y",
+        action="store_true",
+        dest="no_prompt",
+        required=False,
+        help="Assume 'yes' as an answer to the prompt when asking users about "
+             "file streaming.")
 
     return pull_parser
diff --git a/pull/pull_test.py b/pull/pull_test.py
index 458bb87..c82f12f 100644
--- a/pull/pull_test.py
+++ b/pull/pull_test.py
@@ -48,6 +48,22 @@
         expected_result = ["file2.log"]
         self.assertEqual(pull.SelectLogFileToPull(ssh), expected_result)
 
+        # Test user provided file name exist.
+        log_files = ["/home/vsoc-01/cuttlefish_runtime/file1.log",
+                     "/home/vsoc-01/cuttlefish_runtime/file2.log"]
+        input_file = "file1.log"
+        self.Patch(pull, "GetAllLogFilePaths", return_value=log_files)
+        expected_result = ["/home/vsoc-01/cuttlefish_runtime/file1.log"]
+        self.assertEqual(pull.SelectLogFileToPull(ssh, input_file), expected_result)
+
+        # Test user provided file name not exist.
+        log_files = ["/home/vsoc-01/cuttlefish_runtime/file1.log",
+                     "/home/vsoc-01/cuttlefish_runtime/file2.log"]
+        input_file = "not_exist.log"
+        self.Patch(pull, "GetAllLogFilePaths", return_value=log_files)
+        with self.assertRaises(errors.CheckPathError):
+            pull.SelectLogFileToPull(ssh, input_file)
+
     def testFilterLogfiles(self):
         """test filer log file from black list."""
         # Filter out file name is "kernel".
