Skip to content

Custom Extensions

You can configure any VS Code extension to use mise tools via settings:

  • mise.customBinaryExtensions: Configure extensions that need a binary path
  • mise.customFolderExtensions: Configure extensions that need a folder path (e.g., JDK home)

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.

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.