{"record":{"id":"76bdefd52a65ceb5","repo":"sipeed/picoclaw","slug":"subprocess-isolation-is-not-supported-on-s","errorCode":null,"errorMessage":"subprocess isolation is not supported on %s","messagePattern":"subprocess isolation is not supported on (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/isolation/runtime.go","lineNumber":330,"sourceCode":"\nfunc isSupportedOn(goos string) bool {\n\tswitch goos {\n\tcase \"linux\", \"windows\":\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\n// Preflight validates the configured isolation state and prepares the instance\n// runtime directories before any child process is launched.\nfunc Preflight() error {\n\tisolation := CurrentConfig()\n\tif !isolation.Enabled {\n\t\treturn nil\n\t}\n\tif !IsSupported() {\n\t\treturn fmt.Errorf(\"subprocess isolation is not supported on %s\", runtime.GOOS)\n\t}\n\troot, err := ResolveInstanceRoot()\n\tif err != nil {\n\t\treturn err\n\t}\n\tif err := PrepareInstanceRoot(root); err != nil {\n\t\treturn err\n\t}\n\tif err := ValidateExposePaths(isolation.ExposePaths); err != nil {\n\t\treturn err\n\t}\n\tif runtime.GOOS == \"linux\" {\n\t\tfor _, rule := range BuildLinuxMountPlan(root, isolation.ExposePaths) {\n\t\t\tif rule.Source == \"\" || rule.Target == \"\" {\n\t\t\t\treturn fmt.Errorf(\"invalid linux mount rule\")\n\t\t\t}\n\t\t}\n\t}","sourceCodeStart":312,"sourceCodeEnd":348,"githubUrl":"https://github.com/sipeed/picoclaw/blob/49183d7e8daed0dba89ddbb6fcb60089401d9680/pkg/isolation/runtime.go#L312-L348","documentation":"Preflight checks IsSupported()/isSupportedOn(runtime.GOOS) when isolation is enabled; only linux and windows have implemented isolation backends. On any other GOOS (darwin, freebsd, ...) enabling isolation aborts startup with this error naming the actual OS, before instance directories or expose rules are even processed.","triggerScenarios":"isolation.enabled=true on macOS (development laptop) or any non-linux/windows platform; a shared config with isolation on used by a macOS contributor; platform detection surprising users because the rest of the app runs fine on darwin.","commonSituations":"Developing on macOS with a config borrowed from a Linux server; CI running a darwin runner; feature-flag defaults enabling isolation fleet-wide including unsupported platforms.","solutions":["Disable isolation (isolation.enabled=false) on unsupported platforms","Keep isolation settings in a Linux/Windows-specific config layer instead of the shared baseline","Gate the config on platform when generating it (e.g. only emit isolation block when GOOS is linux or windows)"],"exampleFix":"# before: shared config on macOS\nisolation:\n  enabled: true\n\n# after: platform-specific override on macOS\nisolation:\n  enabled: false","handlingStrategy":"validation","validationCode":"if cfg.Isolation.Enabled && !isolation.IsSupported() {\n    return fmt.Errorf(\"isolation unsupported on %s — disable it in this platform's config\", runtime.GOOS)\n}","typeGuard":"func isolationSupportedHere() bool {\n    switch runtime.GOOS {\n    case \"linux\", \"windows\":\n        return true\n    }\n    return false\n}","tryCatchPattern":null,"preventionTips":["Gate the isolation block on the target OS in config generation (skipped on darwin)","Document that darwin/bsd hosts must run with isolation disabled"],"tags":["platform-limitation","isolation","config"],"backgroundTag":null,"analyzedSha":"49183d7e8daed0dba89ddbb6fcb60089401d9680","analyzedAt":"2026-08-15T21:55:41.315Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}