diff --git a/src/goInstallTools.ts b/src/goInstallTools.ts
index f5e5b58..1f20252 100644
--- a/src/goInstallTools.ts
+++ b/src/goInstallTools.ts
@@ -261,8 +261,7 @@
 		const execFile = util.promisify(cp.execFile);
 		const { stdout, stderr } = await execFile(goBinary, args, opts);
 		output = `${stdout} ${stderr}`;
-		logVerbose('install: %s %s\n%s%s', goBinary, args.join(' '), stdout, stderr);
-
+		logVerbose(`install: ${goBinary} ${args.join(' ')}\n${stdout}${stderr}`);
 		if (hasModSuffix(tool)) {
 			// Actual installation of the -gomod tool is done by running go build.
 			const gopath = env['GOBIN'] || env['GOPATH'];
diff --git a/src/goLanguageServer.ts b/src/goLanguageServer.ts
index 5ceadd2..431c6d3 100644
--- a/src/goLanguageServer.ts
+++ b/src/goLanguageServer.ts
@@ -989,9 +989,13 @@
 	return vscode.workspace.workspaceFolders.find((x) => tempGopath !== getCurrentGoPath(x.uri)) ? false : true;
 }
 
-export async function shouldUpdateLanguageServer(tool: Tool, cfg: LanguageServerConfig): Promise<semver.SemVer> {
+export async function shouldUpdateLanguageServer(
+	tool: Tool,
+	cfg: LanguageServerConfig,
+	mustCheck?: boolean
+): Promise<semver.SemVer> {
 	// Only support updating gopls for now.
-	if (tool.name !== 'gopls' || cfg.checkForUpdates === 'off' || IsInCloudIDE) {
+	if (tool.name !== 'gopls' || (!mustCheck && (cfg.checkForUpdates === 'off' || IsInCloudIDE))) {
 		return null;
 	}
 
@@ -1501,7 +1505,7 @@
 	// just prompt them to update, not file an issue.
 	const tool = getTool('gopls');
 	if (tool) {
-		const versionToUpdate = await shouldUpdateLanguageServer(tool, latestConfig);
+		const versionToUpdate = await shouldUpdateLanguageServer(tool, latestConfig, true);
 		if (versionToUpdate) {
 			promptForUpdatingTool(tool.name, versionToUpdate, true);
 			return;
@@ -1580,6 +1584,7 @@
 				// Get the user's version in case the update prompt above failed.
 				const usersGoplsVersion = await getLocalGoplsVersion(latestConfig);
 				const extInfo = getExtensionInfo();
+				const goVersion = await getGoVersion();
 				const settings = latestConfig.flags.join(' ');
 				const title = `gopls: automated issue report (${errKind})`;
 				const goplsLog = sanitizedLog
@@ -1596,7 +1601,9 @@
 				const body = `
 gopls version: ${usersGoplsVersion}
 gopls flags: ${settings}
+update flags: ${latestConfig.checkForUpdates}
 extension version: ${extInfo.version}
+go version: ${goVersion?.format(true)}
 environment: ${extInfo.appName} ${process.platform}
 initialization error: ${initializationError}
 manual restart count: ${manualRestartCount}
diff --git a/src/goTools.ts b/src/goTools.ts
index 23fa7a6..149136c 100644
--- a/src/goTools.ts
+++ b/src/goTools.ts
@@ -361,10 +361,10 @@
 		isImportant: true,
 		description: 'Language Server from Google',
 		minimumGoVersion: semver.coerce('1.12'),
-		latestVersion: semver.coerce('0.6.6'),
-		latestVersionTimestamp: moment('2021-02-22', 'YYYY-MM-DD'),
-		latestPrereleaseVersion: semver.coerce('0.6.6'),
-		latestPrereleaseVersionTimestamp: moment('2021-02-22', 'YYYY-MM-DD')
+		latestVersion: semver.coerce('0.6.8'),
+		latestVersionTimestamp: moment('2021-03-17', 'YYYY-MM-DD'),
+		latestPrereleaseVersion: semver.coerce('0.6.8'),
+		latestPrereleaseVersionTimestamp: moment('2021-03-17', 'YYYY-MM-DD')
 	},
 	'dlv': {
 		name: 'dlv',
