diff --git a/src/goMain.ts b/src/goMain.ts
index eb6a69f..33cfa90 100644
--- a/src/goMain.ts
+++ b/src/goMain.ts
@@ -46,7 +46,14 @@
 import { showHideStatus } from './goStatus';
 import { testAtCursor, testCurrentFile, testCurrentPackage, testPrevious, testWorkspace } from './goTest';
 import { vetCode } from './goVet';
-import { getFromGlobalState, setGlobalState, updateGlobalState } from './stateUtils';
+import {
+	getFromGlobalState,
+	getFromWorkspaceState,
+	setGlobalState,
+	setWorkspaceState,
+	updateGlobalState,
+	updateWorkspaceState
+} from './stateUtils';
 import { disposeTelemetryReporter, sendTelemetryEventForConfig } from './telemetry';
 import { cancelRunningTests, showTestOutput } from './testUtils';
 import {
@@ -69,6 +76,7 @@
 
 export function activate(ctx: vscode.ExtensionContext): void {
 	setGlobalState(ctx.globalState);
+	setWorkspaceState(ctx.workspaceState);
 
 	updateGoPathGoRootFromConfig().then(async () => {
 		const updateToolsCmdText = 'Update tools';
@@ -471,9 +479,12 @@
 				vscode.window.showErrorMessage('Cannot apply coverage profile when no Go file is open.');
 				return;
 			}
+			const lastCoverProfilePathKey = 'lastCoverProfilePathKey';
+			const lastCoverProfilePath = getFromWorkspaceState(lastCoverProfilePathKey, '');
 			vscode.window
 				.showInputBox({
-					prompt: 'Enter the path to the coverage profile for current package'
+					prompt: 'Enter the path to the coverage profile for current package',
+					value: lastCoverProfilePath,
 				})
 				.then((coverProfilePath) => {
 					if (!coverProfilePath) {
@@ -483,6 +494,9 @@
 						vscode.window.showErrorMessage(`Cannot find the file ${coverProfilePath}`);
 						return;
 					}
+					if (coverProfilePath !== lastCoverProfilePath) {
+						updateWorkspaceState(lastCoverProfilePathKey, coverProfilePath);
+					}
 					applyCodeCoverageToAllEditors(
 						coverProfilePath,
 						path.dirname(vscode.window.activeTextEditor.document.fileName)
diff --git a/src/stateUtils.ts b/src/stateUtils.ts
index 35983c5..067cd44 100644
--- a/src/stateUtils.ts
+++ b/src/stateUtils.ts
@@ -6,6 +6,7 @@
 import vscode = require('vscode');
 
 let globalState: vscode.Memento;
+let workspaceState: vscode.Memento;
 
 export function getFromGlobalState(key: string, defaultValue?: any) {
 	if (!globalState) {
@@ -24,3 +25,21 @@
 export function setGlobalState(state: vscode.Memento) {
 	globalState = state;
 }
+
+export function getFromWorkspaceState(key: string, defaultValue?: any) {
+	if (!workspaceState) {
+		return defaultValue;
+	}
+	return workspaceState.get(key, defaultValue);
+}
+
+export function updateWorkspaceState(key: string, value: any) {
+	if (!workspaceState) {
+		return;
+	}
+	return workspaceState.update(key, value);
+}
+
+export function setWorkspaceState(state: vscode.Memento) {
+	workspaceState = state;
+}
