hashicorp/nomad · error
Unsupported isolation mode "%s"
Error message
Unsupported isolation mode "%s"
What it means
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.
Source
Thrown at drivers/docker/driver.go:1088
return c, fmt.Errorf("conflicting runtime requests: gpu runtime %q conflicts with task runtime %q", d.config.GPURuntimeName, containerRuntime)
}
containerRuntime = d.config.GPURuntimeName
}
if _, ok := d.config.allowRuntimes[containerRuntime]; !ok && containerRuntime != "" {
return c, fmt.Errorf("requested runtime %q is not allowed", containerRuntime)
}
// Validate isolation modes on windows
if runtime.GOOS != "windows" {
if driverConfig.Isolation != "" {
return c, fmt.Errorf("Failed to create container configuration, cannot use isolation mode \"%s\" on %s", driverConfig.Isolation, runtime.GOOS)
}
} else {
if driverConfig.Isolation == "" {
driverConfig.Isolation = windowsIsolationModeHyperV
}
if !slices.Contains(windowsIsolationModes, driverConfig.Isolation) {
return c, fmt.Errorf("Unsupported isolation mode \"%s\"", driverConfig.Isolation)
}
}
var pidsLimit int64 = -1 // default unlimited
// Pids limit defined in Nomad plugin config.
if d.config.PidsLimit > 0 {
pidsLimit = d.config.PidsLimit
}
// Override Nomad plugin config pids limit, by user defined pids limit.
if driverConfig.PidsLimit > 0 {
if d.config.PidsLimit > 0 && driverConfig.PidsLimit > d.config.PidsLimit {
return c, fmt.Errorf("pids_limit cannot be greater than nomad plugin config pids_limit: %d", d.config.PidsLimit)
}
pidsLimit = driverConfig.PidsLimit
}
View on GitHub (pinned to 482b49bf1a)
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).
Example fix
// task docker config // before isolation = "default" // after isolation = "process" // or "hyperv"
Defensive patterns
Strategy: validation
Validate before calling
const WINDOWS_ISOLATION_MODES = ['process', 'hyperv'];
function validateWindowsIsolation(isolation) {
if (isolation && !WINDOWS_ISOLATION_MODES.includes(isolation)) {
throw new Error(`Unsupported isolation mode "${isolation}"; use process or hyperv`);
}
} Try / catch
try {
await client.jobs.submit(job);
} catch (err) {
if (/Unsupported isolation mode/.test(err.message)) {
console.error('Use isolation = "process" or "hyperv" (exact spelling)');
}
throw err;
} Prevention
- 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.
When it happens
Trigger: Setting isolation = "default", "hyperv-server", or any misspelled value (e.g. "HyperV", case-sensitive) in the docker task config on a Windows client.
Common situations: 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.
Understand the failure class
Background: Invalid enum value errors: "Unknown type", "Invalid scope", "must be one of" — when a string is not on the library's allowed list — this error's family across 23 libraries.
Related errors
- Failed to create container configuration, cannot use isolati
- running container as ContainerAdmin is unsafe; change the co
- failed to parse 'image_delay' duration: %v
- failed to parse 'period' duration: %v
- failed to parse 'creation_grace' duration: %v
AI-assisted analysis of hashicorp/nomad@482b49bf1a (2026-09-04).
Data as JSON: /api/errors/d6ea3b05edfcdbce.
Report an issue: GitHub.