diff --git a/tools/gn/command_gen.cc b/tools/gn/command_gen.cc
index a8033ab..46d8b89 100644
--- a/tools/gn/command_gen.cc
+++ b/tools/gn/command_gen.cc
@@ -441,6 +441,10 @@
 
   // Deliberately leaked to avoid expensive process teardown.
   Setup* setup = new Setup();
+  // Generate an empty args.gn file if it does not exists
+  if (!base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kArgs)) {
+    setup->set_gen_empty_args(true);
+  }
   if (!setup->DoSetup(args[0], true))
     return 1;
 
diff --git a/tools/gn/setup.cc b/tools/gn/setup.cc
index 7b336a6..e461e26 100644
--- a/tools/gn/setup.cc
+++ b/tools/gn/setup.cc
@@ -149,6 +149,7 @@
 namespace {
 
 const base::FilePath::CharType kGnFile[] = FILE_PATH_LITERAL(".gn");
+const char kDefaultArgsGn[] = "# Set build arguments here. See `gn buildargs`.";
 
 base::FilePath FindDotFile(const base::FilePath& current_dir) {
   base::FilePath try_this_file = current_dir.Append(kGnFile);
@@ -300,7 +301,8 @@
       dotfile_settings_(&build_settings_, std::string()),
       dotfile_scope_(&dotfile_settings_),
       default_args_(nullptr),
-      fill_arguments_(true) {
+      fill_arguments_(true),
+      gen_empty_args_(false) {
   dotfile_settings_.set_toolchain_label(Label());
 
   build_settings_.set_item_defined_callback(
@@ -435,9 +437,18 @@
 bool Setup::FillArguments(const base::CommandLine& cmdline) {
   // Use the args on the command line if specified, and save them. Do this even
   // if the list is empty (this means clear any defaults).
-  if (cmdline.HasSwitch(switches::kArgs)) {
-    if (!FillArgsFromCommandLine(cmdline.GetSwitchValueASCII(switches::kArgs)))
+  // If --args is not set, args.gn file does not exist and gen_empty_args
+  // is set, generate an empty args.gn file with default comments.
+
+  base::FilePath build_arg_file =
+      build_settings_.GetFullPath(GetBuildArgFile());
+  auto switch_value = cmdline.GetSwitchValueASCII(switches::kArgs);
+  if (cmdline.HasSwitch(switches::kArgs) ||
+      (gen_empty_args_ && !PathExists(build_arg_file))) {
+    if (!FillArgsFromCommandLine(switch_value.empty() ? kDefaultArgsGn
+                                                    : switch_value)) {
       return false;
+    }
     SaveArgsToFile();
     return true;
   }
diff --git a/tools/gn/setup.h b/tools/gn/setup.h
index cca30ab..cf0136a 100644
--- a/tools/gn/setup.h
+++ b/tools/gn/setup.h
@@ -84,6 +84,10 @@
   // headers to be checked. Defaults to false.
   void set_check_public_headers(bool s) { check_public_headers_ = s; }
 
+  // Before DoSetup, setting this will generate an empty args.gn if
+  // it does not exist and set up correct dependencies for it.
+  void set_gen_empty_args(bool ge) { gen_empty_args_ = ge; }
+
   // Read from the .gn file, these are the targets to check. If the .gn file
   // does not specify anything, this will be null. If the .gn file specifies
   // the empty list, this will be non-null but empty.
@@ -170,6 +174,9 @@
   // line or build argument file. See setter above.
   bool fill_arguments_;
 
+  // Generate an empty args.gn file if it does not exists.
+  bool gen_empty_args_;
+
   // State for invoking the command line args. We specifically want to keep
   // this around for the entire run so that Values can blame to the command
   // line when we issue errors about them.
