diff --git a/gopls/internal/regtest/modfile_test.go b/gopls/internal/regtest/modfile_test.go
index 49469bf..f7f745f 100644
--- a/gopls/internal/regtest/modfile_test.go
+++ b/gopls/internal/regtest/modfile_test.go
@@ -647,3 +647,34 @@
 		)
 	})
 }
+
+func TestModTidyWithBuildTags(t *testing.T) {
+	testenv.NeedsGo1Point(t, 14)
+
+	const mod = `
+-- go.mod --
+module mod.com
+
+go 1.14
+-- main.go --
+// +build bob
+
+package main
+
+import "example.com/blah"
+
+func main() {
+	blah.SaySomething()
+}
+`
+	withOptions(
+		WithProxyFiles(workspaceProxy),
+		EditorConfig{
+			BuildFlags: []string{"-tags", "bob"},
+		},
+	).run(t, mod, func(t *testing.T, env *Env) {
+		env.Await(
+			env.DiagnosticAtRegexp("main.go", `"example.com/blah"`),
+		)
+	})
+}
diff --git a/internal/lsp/cache/snapshot.go b/internal/lsp/cache/snapshot.go
index 4697bb3..5e11c52 100644
--- a/internal/lsp/cache/snapshot.go
+++ b/internal/lsp/cache/snapshot.go
@@ -216,6 +216,13 @@
 func (s *snapshot) goCommandInvocation(ctx context.Context, cfg *packages.Config, allowTempModfile bool, verb string, args []string) (tmpURI span.URI, runner *gocommand.Runner, inv *gocommand.Invocation, cleanup func(), err error) {
 	cleanup = func() {} // fallback
 	modURI := s.GoModForFile(ctx, span.URIFromPath(cfg.Dir))
+	var buildFlags []string
+	// `go mod`, `go env`, and `go version` don't take build flags.
+	switch verb {
+	case "mod", "env", "version":
+	default:
+		buildFlags = append(cfg.BuildFlags, buildFlags...)
+	}
 	if allowTempModfile && s.view.workspaceMode&tempModfile != 0 {
 		if modURI == "" {
 			return "", nil, nil, cleanup, fmt.Errorf("no go.mod file found in %s", cfg.Dir)
@@ -231,9 +238,13 @@
 		if err != nil {
 			return "", nil, nil, cleanup, err
 		}
-		cfg.BuildFlags = append(cfg.BuildFlags, fmt.Sprintf("-modfile=%s", tmpURI.Filename()))
+		buildFlags = append(buildFlags, fmt.Sprintf("-modfile=%s", tmpURI.Filename()))
 	}
-	if verb != "mod" && verb != "get" {
+	// TODO(rstambler): Remove this when golang/go#41826 is resolved.
+	// Don't add -mod=mod for `go mod` or `go get`.
+	switch verb {
+	case "mod", "get":
+	default:
 		var modContent []byte
 		if modURI != "" {
 			modFH, err := s.GetFile(ctx, modURI)
@@ -250,7 +261,7 @@
 			return "", nil, nil, cleanup, err
 		}
 		if modMod {
-			cfg.BuildFlags = append([]string{"-mod=mod"}, cfg.BuildFlags...)
+			buildFlags = append([]string{"-mod=mod"}, buildFlags...)
 		}
 	}
 	runner = packagesinternal.GetGoCmdRunner(cfg)
@@ -258,7 +269,7 @@
 		Verb:       verb,
 		Args:       args,
 		Env:        cfg.Env,
-		BuildFlags: cfg.BuildFlags,
+		BuildFlags: buildFlags,
 		WorkingDir: cfg.Dir,
 	}, cleanup, nil
 }
diff --git a/internal/lsp/cache/view.go b/internal/lsp/cache/view.go
index 2679503..9179709 100644
--- a/internal/lsp/cache/view.go
+++ b/internal/lsp/cache/view.go
@@ -338,7 +338,6 @@
 	}
 	goVersion, err := s.view.session.gocmdRunner.Run(ctx, gocommand.Invocation{
 		Verb:       "version",
-		BuildFlags: buildFlags,
 		Env:        env,
 		WorkingDir: s.view.rootURI.Filename(),
 	})
diff --git a/internal/lsp/fake/editor.go b/internal/lsp/fake/editor.go
index 5e977a4..4cc8b13 100644
--- a/internal/lsp/fake/editor.go
+++ b/internal/lsp/fake/editor.go
@@ -58,7 +58,8 @@
 //
 // The zero value for EditorConfig should correspond to its defaults.
 type EditorConfig struct {
-	Env map[string]string
+	Env        map[string]string
+	BuildFlags []string
 
 	// CodeLens is a map defining whether codelens are enabled, keyed by the
 	// codeLens command. CodeLens which are not present in this map are left in
@@ -185,6 +186,10 @@
 		"completionBudget":        "10s",
 	}
 
+	if e.Config.BuildFlags != nil {
+		config["buildFlags"] = e.Config.BuildFlags
+	}
+
 	if e.Config.CodeLens != nil {
 		config["codelens"] = e.Config.CodeLens
 	}
