diff --git a/tools/src/cmd/run-cts/node/cmd.go b/tools/src/cmd/run-cts/node/cmd.go
index 6064260..cd7d35a 100644
--- a/tools/src/cmd/run-cts/node/cmd.go
+++ b/tools/src/cmd/run-cts/node/cmd.go
@@ -107,6 +107,7 @@
 	unrollConstEvalLoops bool
 	genCoverage          bool
 	compatibilityMode    bool
+	skipVSCodeInfo       bool
 	dawn                 dawnFlags
 }
 
@@ -154,6 +155,7 @@
 	flag.BoolVar(&c.flags.genCoverage, "coverage", false, "displays coverage data")
 	flag.StringVar(&c.flags.coverageFile, "export-coverage", "", "write coverage data to the given path")
 	flag.BoolVar(&c.flags.compatibilityMode, "compat", false, "run tests in compatibility mode")
+	flag.BoolVar(&c.flags.skipVSCodeInfo, "skip-vs-code-info", false, "skips emitting VS Code information")
 
 	return []string{"[query]"}, nil
 }
diff --git a/tools/src/cmd/run-cts/node/cmdline.go b/tools/src/cmd/run-cts/node/cmdline.go
index e4cd029..990a909 100644
--- a/tools/src/cmd/run-cts/node/cmdline.go
+++ b/tools/src/cmd/run-cts/node/cmdline.go
@@ -122,7 +122,7 @@
 	cmd.Stderr = &buf
 
 	if c.flags.Verbose {
-		PrintCommand(cmd)
+		PrintCommand(cmd, c.flags.skipVSCodeInfo)
 	}
 
 	start := time.Now()
diff --git a/tools/src/cmd/run-cts/node/print_command.go b/tools/src/cmd/run-cts/node/print_command.go
index 30adf16..5cf6af5 100644
--- a/tools/src/cmd/run-cts/node/print_command.go
+++ b/tools/src/cmd/run-cts/node/print_command.go
@@ -35,7 +35,7 @@
 	"strings"
 )
 
-func PrintCommand(cmd *exec.Cmd) {
+func PrintCommand(cmd *exec.Cmd, skipVSCodeInfo bool) {
 	maybeQuote := func(s string) string {
 		if strings.ContainsAny(s, ` ,()"`) {
 			s = strings.ReplaceAll(s, `"`, `\"`)
@@ -56,26 +56,28 @@
 	fmt.Fprintln(output)
 	fmt.Fprintf(output, "  Dir: %v\n\n", cmd.Dir)
 
-	fmt.Fprint(output, "  For VS Code launch.json:\n")
-	launchCmd := struct {
-		Program string   `json:"program"`
-		Args    []string `json:"args"`
-		Cwd     string   `json:"cwd"`
-	}{
-		Program: cmd.Path,
-		Args:    cmd.Args[1:],
-		Cwd:     cmd.Dir,
-	}
+	if !skipVSCodeInfo {
+		fmt.Fprint(output, "  For VS Code launch.json:\n")
+		launchCmd := struct {
+			Program string   `json:"program"`
+			Args    []string `json:"args"`
+			Cwd     string   `json:"cwd"`
+		}{
+			Program: cmd.Path,
+			Args:    cmd.Args[1:],
+			Cwd:     cmd.Dir,
+		}
 
-	b := &bytes.Buffer{}
-	e := json.NewEncoder(b)
-	e.SetIndent("", "    ")
-	e.Encode(launchCmd)
-	s := b.String()
-	// Remove object braces and add trailing comma
-	s = strings.TrimPrefix(s, "{\n")
-	s = strings.TrimSuffix(s, "\n}\n") + ",\n"
-	fmt.Fprintln(output, s)
+		b := &bytes.Buffer{}
+		e := json.NewEncoder(b)
+		e.SetIndent("", "    ")
+		e.Encode(launchCmd)
+		s := b.String()
+		// Remove object braces and add trailing comma
+		s = strings.TrimPrefix(s, "{\n")
+		s = strings.TrimSuffix(s, "\n}\n") + ",\n"
+		fmt.Fprintln(output, s)
+	}
 
 	fmt.Print(output.String())
 }
diff --git a/tools/src/cmd/run-cts/node/server.go b/tools/src/cmd/run-cts/node/server.go
index 3e9f96a..efb457d 100644
--- a/tools/src/cmd/run-cts/node/server.go
+++ b/tools/src/cmd/run-cts/node/server.go
@@ -145,7 +145,7 @@
 		cmd.Stderr = &pl
 
 		if c.flags.Verbose {
-			PrintCommand(cmd)
+			PrintCommand(cmd, c.flags.skipVSCodeInfo)
 		}
 		err := cmd.Start()
 		if err != nil {
