{"record":{"id":"7a8271346119ec9b","repo":"asdf-vm/asdf","slug":"system-version-is-selected","errorCode":null,"errorMessage":"System version is selected","messagePattern":"System version is selected","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/cli/cli.go","lineNumber":1528,"sourceCode":"\tif err != nil {\n\t\tlogger.Printf(\"unable to get current directory: %s\", err)\n\t\treturn err\n\t}\n\n\tplugin := plugins.New(conf, tool)\n\terr = plugin.Exists()\n\tif err != nil {\n\t\tif _, ok := err.(plugins.PluginMissing); ok {\n\t\t\tlogger.Printf(\"No such plugin: %s\", tool)\n\t\t}\n\t\treturn err\n\t}\n\n\tversion := toolversions.Parse(versionStr)\n\n\tif version.Type == \"system\" {\n\t\tlogger.Printf(\"System version is selected\")\n\t\treturn errors.New(\"System version is selected\")\n\t}\n\n\tif version.Value == \"\" {\n\t\t// resolve version\n\t\tversions, found, err := resolve.Version(conf, plugin, currentDir)\n\t\tif err != nil {\n\t\t\tfmt.Printf(\"err %#+v\\n\", err)\n\t\t\treturn err\n\t\t}\n\n\t\tif found && len(versions.Versions) > 0 {\n\t\t\tversionStruct := toolversions.Version{Type: \"version\", Value: versions.Versions[0]}\n\t\t\tif installs.IsInstalled(conf, plugin, versionStruct) {\n\t\t\t\tinstallPath := installs.InstallPath(conf, plugin, versionStruct)\n\t\t\t\tfmt.Printf(\"%s\", installPath)\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}","sourceCodeStart":1510,"sourceCodeEnd":1546,"githubUrl":"https://github.com/asdf-vm/asdf/blob/074a1722ca88d6677f228541ce06efaf4f9924d4/internal/cli/cli.go#L1510-L1546","documentation":"`asdf where <tool>` prints the install path of the currently selected version. If the resolved version type is 'system' (i.e. the system-installed tool is selected, not an asdf-managed one), there is no asdf install path to print, so it returns this error.","triggerScenarios":"Running `asdf where <tool>` while the tool's version resolves to 'system' via .tool-versions (`<tool> system`) or the legacy global 'system' setting.","commonSituations":"Directories whose .tool-versions pins `<tool> system`; users expecting a path but having opted out of asdf management for that tool; inheriting a system pin from a parent config.","solutions":["Set a concrete asdf-managed version: `asdf set <tool> <version>` (or edit .tool-versions) for the directory","Find the system binary instead with `which <tool-cmd>` since it's outside asdf's control","Install an asdf version if none exists: `asdf install <tool> <version>`"],"exampleFix":"# before (.tool-versions)\nnodejs system\n# after\nnodejs 20.12.0","handlingStrategy":"validation","validationCode":"if grep -E \"^$TOOL[[:space:]]+system$\" .tool-versions ~/.config/asdf/default 2>/dev/null; then\n  echo \"$TOOL is set to system; asdf where has no install path\" >&2\nfi","typeGuard":null,"tryCatchPattern":"path=$(asdf where \"$TOOL\" 2>&1) || {\n  echo \"$path\" # system selected: use `which <cmd>` instead\n}","preventionTips":["Avoid `<tool> system` pins when you need asdf-managed paths","Use `command -v <cmd>` for system-managed tools","Review inherited parent-directory .tool-versions for system pins"],"tags":["cli","system-version","where"],"backgroundTag":"system-version-selected","analyzedSha":"074a1722ca88d6677f228541ce06efaf4f9924d4","analyzedAt":"2026-08-30T19:56:42.972Z","schemaVersion":2},"datasetVersion":"2026-08-30T23:17:21.991Z"}