Skip to content

Setting up the extension

Important defaults

There are a few important defaults that you should be aware of when using this extension. For most users, the default settings should work fine but you might want to change them depending on your needs.

Finding the mise executable

By default, the extension will try to find the mise executable on the PATH. Otherwise, it will try a few common locations and update the mise.binPath setting automatically.

This might not work for you so make sure to update it manually if needed. You can also turn off the automatic detection if needed

Automatic configuration of VS Code extensions

By default, this extension will modify your .vscode/settings.json file so that other extensions you use will use the tools you installed with mise.

This might be a problem if you are sharing the .vscode/settings.json file with others. (e.g., in a Git repository)

  • This can be turned off if you don’t want this behavior.
  • Alternatively, you can configure the extension to create symlinks to tools so that the settings points to a relative path in your project. Use mise.configureExtensionsUseSymLinks for this.
About sharing .vscode/settings.json

If you are sharing the .vscode/settings.json file with others, you might think that the default value of this extension is not a good idea.

However, there are some challenges with sharing .vscode/settings.json:

  • If you use extensions other members of your team don’t have, you won’t be able to update the settings file without conflicts.
  • If you would like some settings to be different for different members of your team, you won’t be able to do so.

Ideally, VS Code should support a settings.local.json file that would be ignored by git. See this issue for more information.

If you want to share some settings with others, here are some good workarounds:

  • Git ignore the .vscode/settings.json file. Create a settings.shared.json file that other can use as a reference. Set up a mise task to populate your settings.json file with the content of settings.shared.json if needed.
  • Use extension such as workspace-config-plus to have a settings.local.json file that is ignored by git.

Controlling which extensions are configured automatically

You can control which supported extensions are automatically configured by mise-vscode using the following settings in your VS Code settings (user or workspace):

How it works:

  • If the include list is set and non-empty, only extensions in this list are considered for automatic configuration.
  • If both include and ignore lists are set, the ignore list takes precedence (extensions in the ignore list are always excluded).
  • If the include list contains "all", all supported extensions are considered (except those in the ignore list).
  • If the include list is empty or not set, no extensions are configured automatically, and the extension will not modify your .vscode/settings.json file.
  • If mise.configureExtensionsAutomatically is set to false, no extensions will be configured automatically, regardless of the include or ignore lists.

You can find the full list of supported extensions in the Supported Extensions documentation.

Example usage in your settings.json:

{
"mise.configureExtensionsAutomaticallyIncludeList": ["ms-python.python", "golang.go"],
"mise.configureExtensionsAutomaticallyIgnoreList": ["denoland.vscode-deno"]
}

This will configure only Python and Go extensions, and will always ignore Deno, even if it is in the include list.

Advanced: Fine-grained control with user and workspace settings

You can take advantage of VS Code’s user and workspace settings to control which extensions are configured automatically at different levels. For example, you can set a global default at the user level and then override it at the workspace level for specific projects.

This allows you to have a flexible setup where you can control which extensions are configured automatically based on your needs.

To do this, set the mise.configureExtensionsAutomaticallyIncludeList to an empty array at the user level, and then specify the desired extensions at the workspace level in your .vscode/settings.json file.

User settings (settings.json):

{
"mise.configureExtensionsAutomaticallyIncludeList": []
}

Workspace settings (.vscode/settings.json):

{
"mise.configureExtensionsAutomaticallyIncludeList": [
"denoland.vscode-deno"
]
}

With this setup, only the deno extension will be configured automatically for your project. However, if you open another project that does not specify the mise.configureExtensionsAutomaticallyIncludeList, no extensions will be configured automatically.

Note that updating this setting might require you to reload the VS Code window for the changes to take effect.

Automatic loading of environment variables

The extension will load the environment variables provided by mise and update the VS Code process with them.

This is generally a useful feature, though it might have unwanted side effects among which:

  • showing a warning icon indicating that you need to restart your terminal when some environment variables are updated
  • if you use the VS Code terminal and leave the current directory (with e.g. cd ..), the environment variables will still be there (whereas if it’s off, mise will unload the environment variables when you leave the directory) You can turn this off if needed.

Additional notes

The extension will prompt you if a new mise version is available to help to be up-to-date. You can turn this off if you don’t want to see this message.

I try to not show too many notifications in general. If there is one that you would like to ignore and cannot find a way to do so, please let me know by opening an issue.