{"record":{"id":"62fb3300dd6bf7ea","repo":"can1357/oh-my-pi","slug":"subagent-isolated-execution-requires-task-isolatio","errorCode":null,"errorMessage":"Subagent isolated execution requires task.isolation.mode to be set; current mode is \"none\".","messagePattern":"Subagent isolated execution requires task\\.isolation\\.mode to be set; current mode is \"none\"\\.","errorType":"validation","errorClass":"StructuredSubagentError","httpStatus":null,"severity":"error","filePath":"packages/coding-agent/src/task/structured-subagent.ts","lineNumber":299,"sourceCode":"\t}\n\tconst agentModelOverrides = request.session.settings.get(\"task.agentModelOverrides\");\n\tconst parentActiveModelPattern = request.session.getActiveModelString?.();\n\tconst modelResolution = {\n\t\trequestModel: request.model,\n\t\tsettingsOverride: agentModelOverrides[agentName],\n\t\tagentModel: effectiveAgent.model,\n\t\tsettings: request.session.settings,\n\t\tactiveModelPattern: parentActiveModelPattern,\n\t\tfallbackModelPattern: request.session.getModelString?.(),\n\t};\n\t// Role identity and patterns come from one call so they cannot be derived\n\t// from different sources: the expansion below discards the alias, and the\n\t// child's inherited retry-fallback chain is keyed off the role.\n\tconst { patterns: modelOverride, role: modelRole } = resolveAgentModelSelection(modelResolution);\n\tconst isolationMode = request.session.settings.get(\"task.isolation.mode\");\n\tconst isIsolated = request.isolation?.requested === true;\n\tif (isIsolated && isolationMode === \"none\") {\n\t\tthrow new StructuredSubagentError(\n\t\t\t\"preflight\",\n\t\t\t`Subagent isolated execution requires task.isolation.mode to be set; current mode is \"none\".`,\n\t\t);\n\t}\n\treturn {\n\t\tdiscovery,\n\t\tagentName,\n\t\tagent,\n\t\teffectiveAgent,\n\t\tmodelOverride,\n\t\tmodelRole,\n\t\tparentActiveModelPattern,\n\t\tschema,\n\t\tplanMode,\n\t\tisIsolated,\n\t\tmergeMode: request.isolation?.merge ?? request.session.settings.get(\"task.isolation.merge\"),\n\t\tapplyChanges:\n\t\t\trequest.isolation?.apply ??","sourceCodeStart":281,"sourceCodeEnd":317,"githubUrl":"https://github.com/can1357/oh-my-pi/blob/969062200754ea02cfac922e5ebb8c608c079e15/packages/coding-agent/src/task/structured-subagent.ts#L281-L317","documentation":"Thrown in preflight when a subagent request asks for isolated execution (`isolation.requested === true`) but the session setting `task.isolation.mode` is \"none\" (the default), meaning no isolation backend (e.g. worktree) is configured. The library refuses to run isolated without a concrete isolation strategy.","triggerScenarios":"Setting `isolation: { requested: true }` on the task request while `task.isolation.mode` remains unset or \"none\" in session settings.","commonSituations":"Callers adopting the isolation API without configuring the isolation mode setting; defaults reset by config changes; environments (CI, embedded SDK) where worktree isolation was never enabled.","solutions":["Set `task.isolation.mode` in session settings (e.g. \"worktree\")","Remove `isolation.requested: true` if isolation is not actually needed","Check the session settings before requesting isolation"],"exampleFix":"// settings before\n{ \"task.isolation.mode\": \"none\" }\n// after\n{ \"task.isolation.mode\": \"worktree\" }","handlingStrategy":"validation","validationCode":"const mode = session.settings.get(\"task.isolation.mode\");\nif (request.isolation?.requested === true && mode === \"none\") {\n  throw new Error(\"Set task.isolation.mode before requesting isolated subagents\");\n}\nawait task(request);","typeGuard":null,"tryCatchPattern":"try {\n  await task(req);\n} catch (e) {\n  if (e instanceof StructuredSubagentError && e.message.includes(\"task.isolation.mode\")) {\n    session.settings.set(\"task.isolation.mode\", \"worktree\");\n    return task(req);\n  }\n  throw e;\n}","preventionTips":["Configure task.isolation.mode in environment bootstrap when using isolation","Make isolation.requested conditional on the configured mode","Document isolation settings in project onboarding/CI setup"],"tags":["subagent","isolation","configuration","settings"],"backgroundTag":"isolation-mode-not-configured","analyzedSha":"969062200754ea02cfac922e5ebb8c608c079e15","analyzedAt":"2026-08-31T10:29:35.737Z","schemaVersion":2},"datasetVersion":"2026-08-31T14:17:45.589Z"}