{"record":{"id":"d6ea3b05edfcdbce","repo":"hashicorp/nomad","slug":"unsupported-isolation-mode-s","errorCode":null,"errorMessage":"Unsupported isolation mode \"%s\"","messagePattern":"Unsupported isolation mode \"(.+?)\"","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"drivers/docker/driver.go","lineNumber":1088,"sourceCode":"\t\t\treturn c, fmt.Errorf(\"conflicting runtime requests: gpu runtime %q conflicts with task runtime %q\", d.config.GPURuntimeName, containerRuntime)\n\t\t}\n\t\tcontainerRuntime = d.config.GPURuntimeName\n\t}\n\tif _, ok := d.config.allowRuntimes[containerRuntime]; !ok && containerRuntime != \"\" {\n\t\treturn c, fmt.Errorf(\"requested runtime %q is not allowed\", containerRuntime)\n\t}\n\n\t// Validate isolation modes on windows\n\tif runtime.GOOS != \"windows\" {\n\t\tif driverConfig.Isolation != \"\" {\n\t\t\treturn c, fmt.Errorf(\"Failed to create container configuration, cannot use isolation mode \\\"%s\\\" on %s\", driverConfig.Isolation, runtime.GOOS)\n\t\t}\n\t} else {\n\t\tif driverConfig.Isolation == \"\" {\n\t\t\tdriverConfig.Isolation = windowsIsolationModeHyperV\n\t\t}\n\t\tif !slices.Contains(windowsIsolationModes, driverConfig.Isolation) {\n\t\t\treturn c, fmt.Errorf(\"Unsupported isolation mode \\\"%s\\\"\", driverConfig.Isolation)\n\t\t}\n\t}\n\n\tvar pidsLimit int64 = -1 // default unlimited\n\n\t// Pids limit defined in Nomad plugin config.\n\tif d.config.PidsLimit > 0 {\n\t\tpidsLimit = d.config.PidsLimit\n\t}\n\n\t// Override Nomad plugin config pids limit, by user defined pids limit.\n\tif driverConfig.PidsLimit > 0 {\n\t\tif d.config.PidsLimit > 0 && driverConfig.PidsLimit > d.config.PidsLimit {\n\t\t\treturn c, fmt.Errorf(\"pids_limit cannot be greater than nomad plugin config pids_limit: %d\", d.config.PidsLimit)\n\t\t}\n\t\tpidsLimit = driverConfig.PidsLimit\n\t}\n","sourceCodeStart":1070,"sourceCodeEnd":1106,"githubUrl":"https://github.com/hashicorp/nomad/blob/482b49bf1aec006f089bcfc7e632d8f6ac303e5e/drivers/docker/driver.go#L1070-L1106","documentation":"On Windows, the docker plugin validates the requested isolation mode against the supported list (process, hyperv). An isolation value outside this list fails container configuration. An empty value is defaulted to hyperv before this check, so only explicit invalid strings reach the error.","triggerScenarios":"Setting isolation = \"default\", \"hyperv-server\", or any misspelled value (e.g. \"HyperV\", case-sensitive) in the docker task config on a Windows client.","commonSituations":"Typos or wrong-case values in job specs; docs from other tools (e.g. `docker run --isolation=default`) copied into Nomad config; older Windows versions lacking a supported mode.","solutions":["Use exactly \"process\" or \"hyperv\" as the isolation value (case-sensitive).","Remove the isolation option to accept the default (hyperv).","Confirm the Docker daemon on the Windows host actually supports the chosen mode (hyperv requires Hyper-V enabled)."],"exampleFix":"// task docker config\n// before\nisolation = \"default\"\n// after\nisolation = \"process\"  // or \"hyperv\"","handlingStrategy":"validation","validationCode":"const WINDOWS_ISOLATION_MODES = ['process', 'hyperv'];\nfunction validateWindowsIsolation(isolation) {\n  if (isolation && !WINDOWS_ISOLATION_MODES.includes(isolation)) {\n    throw new Error(`Unsupported isolation mode \"${isolation}\"; use process or hyperv`);\n  }\n}","typeGuard":null,"tryCatchPattern":"try {\n  await client.jobs.submit(job);\n} catch (err) {\n  if (/Unsupported isolation mode/.test(err.message)) {\n    console.error('Use isolation = \"process\" or \"hyperv\" (exact spelling)');\n  }\n  throw err;\n}","preventionTips":["Copy isolation values exactly: process or hyperv, lowercase.","Validate job specs against an enum schema in CI.","Omit isolation on Windows to get the hyperv default."],"tags":["docker","windows","isolation","config"],"backgroundTag":"invalid-enum-value","analyzedSha":"482b49bf1aec006f089bcfc7e632d8f6ac303e5e","analyzedAt":"2026-09-04T07:54:14.808Z","contentChangedAt":"2026-09-04T07:54:14.808Z","schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}