diff --git a/docs/settings.md b/docs/settings.md
index cdb61ac..110641a 100644
--- a/docs/settings.md
+++ b/docs/settings.md
@@ -278,6 +278,41 @@
 Infer GOPATH from the workspace root. This is ignored when using Go Modules.
 
 Default: `false`
+### `go.inlayHints.assignVariableTypes`
+
+Enable/disable inlay hints for variable types in assign statements.
+
+Default: `false`
+### `go.inlayHints.compositeLiteralFields`
+
+Enable/disable inlay hints for composite literal field names.
+
+Default: `false`
+### `go.inlayHints.compositeLiteralTypes`
+
+Enable/disable inlay hints for composite literal types.
+
+Default: `false`
+### `go.inlayHints.constantValues`
+
+Enable/disable inlay hints for constant values.
+
+Default: `false`
+### `go.inlayHints.functionTypeParameters`
+
+Enable/disable inlay hints for implicit type parameters on generic functions.
+
+Default: `false`
+### `go.inlayHints.parameterNames`
+
+Enable/disable inlay hints for parameter names.
+
+Default: `false`
+### `go.inlayHints.rangeVariableTypes`
+
+Enable/disable inlay hints for variable types in range statements.
+
+Default: `false`
 ### `go.installDependenciesWhenBuilding`
 
 If true, then `-i` flag will be passed to `go build` everytime the code is compiled. Since Go 1.10, setting this may be unnecessary unless you are in GOPATH mode and do not use the language server.
diff --git a/package.json b/package.json
index 1e3a54c..e5c5981 100644
--- a/package.json
+++ b/package.json
@@ -2043,6 +2043,41 @@
           "scope": "resource",
           "type": "boolean"
         },
+        "go.inlayHints.assignVariableTypes": {
+          "type": "boolean",
+          "description": "Enable/disable inlay hints for variable types in assign statements.",
+          "default": false
+        },
+        "go.inlayHints.compositeLiteralFields": {
+          "type": "boolean",
+          "description": "Enable/disable inlay hints for composite literal field names.",
+          "default": false
+        },
+        "go.inlayHints.compositeLiteralTypes": {
+          "type": "boolean",
+          "description": "Enable/disable inlay hints for composite literal types.",
+          "default": false
+        },
+        "go.inlayHints.constantValues": {
+          "type": "boolean",
+          "description": "Enable/disable inlay hints for constant values.",
+          "default": false
+        },
+        "go.inlayHints.functionTypeParameters": {
+          "type": "boolean",
+          "description": "Enable/disable inlay hints for implicit type parameters on generic functions.",
+          "default": false
+        },
+        "go.inlayHints.parameterNames": {
+          "type": "boolean",
+          "description": "Enable/disable inlay hints for parameter names.",
+          "default": false
+        },
+        "go.inlayHints.rangeVariableTypes": {
+          "type": "boolean",
+          "description": "Enable/disable inlay hints for variable types in range statements.",
+          "default": false
+        },
         "gopls": {
           "type": "object",
           "markdownDescription": "Configure the default Go language server ('gopls'). In most cases, configuring this section is unnecessary. See [the documentation](https://github.com/golang/tools/blob/master/gopls/doc/settings.md) for all available settings.",
diff --git a/src/language/goLanguageServer.ts b/src/language/goLanguageServer.ts
index 4ca8354..83bee23 100644
--- a/src/language/goLanguageServer.ts
+++ b/src/language/goLanguageServer.ts
@@ -664,6 +664,7 @@
 	if (buildFlags.length > 0 && goplsWorkspaceConfig['build.buildFlags'] === undefined) {
 		goplsWorkspaceConfig['build.buildFlags'] = buildFlags;
 	}
+
 	return goplsWorkspaceConfig;
 }
 
@@ -684,6 +685,7 @@
 	workspaceConfig = filterGoplsDefaultConfigValues(workspaceConfig, resource);
 	// note: workspaceConfig is a modifiable, valid object.
 	workspaceConfig = passGoConfigToGoplsConfigValues(workspaceConfig, getGoConfig(resource));
+	workspaceConfig = await passInlayHintConfigToGopls(cfg, workspaceConfig, getGoConfig(resource));
 
 	// Only modify the user's configurations for the Nightly.
 	if (!extensionInfo.isPreview) {
@@ -695,6 +697,19 @@
 	return workspaceConfig;
 }
 
+async function passInlayHintConfigToGopls(cfg: LanguageServerConfig, goplsConfig: any, goConfig: any) {
+	const goplsVersion = await getLocalGoplsVersion(cfg);
+	if (!goplsVersion) return;
+	const version = semver.parse(goplsVersion.version);
+	if ((version?.compare('0.8.4') ?? 1) > 0) {
+		const { inlayHints } = goConfig;
+		if (inlayHints) {
+			goplsConfig['ui.inlayhint.hints'] = { ...inlayHints };
+		}
+	}
+	return goplsConfig;
+}
+
 // createTestCodeLens adds the go.test.cursor and go.debug.cursor code lens
 function createTestCodeLens(lens: vscode.CodeLens): vscode.CodeLens[] {
 	// CodeLens argument signature in gopls is [fileName: string, testFunctions: string[], benchFunctions: string[]],
