github golang/vscode-go v0.52.0
Release v0.52.0

latest releases: v0.53.0, v0.52.1, v0.52.1-rc.1...
one day ago

Date: 2025-12-17

Full Changelog: v0.50.0...v0.52.0
Milestone: https://github.com/golang/vscode-go/issues?q=milestone%3Av0.52.0

Untrusted code execution in 'Restricted Mode'

To prevent accidental untrusted code execution, vscode-go no longer allows invocations of the Go CLI in untrusted workspaces.

This is CVE-2025-68120.

Changes

  • Added a new field, 'compilerDetails', on the 'go.editorContextMenuCommands' setting that when set to true will show the "Go: Toggle compiler optimization details" command in the context menu.

Important

  • To ensure the extension remains fully compatible and stable, the required
    minimum Go version remains Go 1.23. A new notification will now be sent to help
    users running older versions upgrade to Go 1.23+.

Changes

  • Tool Management Refactoring: The extension now correctly uses the tools
    specified in the "go.lintTool" and "go.formatTool" settings.

    • Linting: The extension will now run the linter specified in "go.lintTool"
      in addition to gopls's diagnostics. If you have staticcheck enabled in both
      "go.lintTool" and gopls, you may see duplicate diagnostics. For better
      performance, we recommend using the gopls integration for staticcheck.
      You can learn more in the gopls analyzer.

      • To run the partial set of staticcheck analyzers from gopls, leave
        "go.lintTool" and "gopls.ui.diagnostic.staticcheck" unset.
      • To run the full set of staticcheck analyzers from gopls, leave
        "go.lintTool" unset and configure it through gopls:
        "gopls": {
          "ui.diagnostic.staticcheck": true
        }
      • To run the staticcheck binary, set through "go.lintTool" and disable staticcheck analyzers from gopls.
        "go.lintTool": "staticcheck",
        "gopls": {
          "ui.diagnostic.staticcheck": false
        }
    • Formatting: The extension will now use the formatter specified in
      "go.formatTool". We recommend using gopls for formatting, as it includes
      support for both gofmt and gofumpt. For configuration details, see the
      gopls formatting.

      • To format with gofumpt via gopls, leave "go.formatTool" unset or
        "default" and configure it through gopls:
        "gopls": {
          "formatting.gofumpt": true
        }
      • To format with gofmt, simply leave "go.formatTool" unset or "default".
      • To format with gofumpt binary, configure it through "go.formatTool"
        "go.formatTool": "gofumpt"

Fixes

  • Corrected an issue where clicking on a failing test in the Test Explorer would
    open a non-existent Go file (#3853). This occurred when the test
    entry point (e.g., .../foo_test.go) was in a different directory than the file
    where the failure actually occurred (e.g., .../bar/bar_test.go).

  • Fixed an issue where "go.formatTool" and "go.lintTool" were not correctly
    overridden by tools specified in "go.alternateTools" (#3861,
    #3862).

  • Resolved a problem where staticcheck was being installed automatically even
    when it was not in use (#3898).

  • Fix issue where sub test codelens runs sub test based on the cursor instead of
    the codelens' position (#3908).

Don't miss a new vscode-go release

NewReleases is sending notifications on new releases.