Custom Extensions
You can configure any VS Code extension to use mise tools via settings:
mise.customBinaryExtensions: Configure extensions that need a binary pathmise.customFolderExtensions: Configure extensions that need a folder path (e.g., JDK home)
How tools are matched
Section titled “How tools are matched”toolSources values are matched against the tool names reported by mise ls --json
(the names exactly as the tools are declared in your mise.toml) and their
mise registry equivalents. A registry short
name matches its backend sources and vice versa: "toolSources": ["shfmt"] and
"toolSources": ["aqua:mvdan/sh"] both match the tool whether your mise.toml
declares it as shfmt = "3" or "aqua:mvdan/sh" = "3".
{ "mise.customBinaryExtensions": [ { "binName": "shfmt", "extensionId": "foxundermoon.shell-format", "toolSources": ["shfmt"], "vscodeSetting": { "key": "shellformat.path" } } ]}Tools from custom backends without a registry entry (e.g. github:acme/tool)
only match their declared name.
Examples
Section titled “Examples”Example for binary mode (string value):
{ "mise.customBinaryExtensions": [ { "extensionId": "example.my-extension", "toolSources": ["aqua:mytool"], "vscodeSetting": { "key": "myExtension.toolPath" } } ]}Some extensions expect an array of paths instead of a single string. Use vscodeSetting.asArray:
{ "mise.customBinaryExtensions": [ { "extensionId": "astral-sh.ty", "toolSources": ["ty"], "vscodeSetting": { "key": "ty.path", "asArray": true } } ]}Example for folder mode:
{ "mise.customFolderExtensions": [ { "extensionId": "example.java-extension", "toolSources": ["java"], "vscodeSetting": { "key": "java.jdkHome" }, "folderName": "custom-jdk" } ]}See the Extension Settings for full configuration options.