can1357/oh-my-pi · error · StructuredSubagentError
Subagent isolated execution requires task.isolation.mode to
Error message
Subagent isolated execution requires task.isolation.mode to be set; current mode is "none".
What it means
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.
Source
Thrown at packages/coding-agent/src/task/structured-subagent.ts:299
}
const agentModelOverrides = request.session.settings.get("task.agentModelOverrides");
const parentActiveModelPattern = request.session.getActiveModelString?.();
const modelResolution = {
requestModel: request.model,
settingsOverride: agentModelOverrides[agentName],
agentModel: effectiveAgent.model,
settings: request.session.settings,
activeModelPattern: parentActiveModelPattern,
fallbackModelPattern: request.session.getModelString?.(),
};
// Role identity and patterns come from one call so they cannot be derived
// from different sources: the expansion below discards the alias, and the
// child's inherited retry-fallback chain is keyed off the role.
const { patterns: modelOverride, role: modelRole } = resolveAgentModelSelection(modelResolution);
const isolationMode = request.session.settings.get("task.isolation.mode");
const isIsolated = request.isolation?.requested === true;
if (isIsolated && isolationMode === "none") {
throw new StructuredSubagentError(
"preflight",
`Subagent isolated execution requires task.isolation.mode to be set; current mode is "none".`,
);
}
return {
discovery,
agentName,
agent,
effectiveAgent,
modelOverride,
modelRole,
parentActiveModelPattern,
schema,
planMode,
isIsolated,
mergeMode: request.isolation?.merge ?? request.session.settings.get("task.isolation.merge"),
applyChanges:
request.isolation?.apply ??View on GitHub (pinned to 9690622007)
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
Example fix
// settings before
{ "task.isolation.mode": "none" }
// after
{ "task.isolation.mode": "worktree" } Defensive patterns
Strategy: validation
Validate before calling
const mode = session.settings.get("task.isolation.mode");
if (request.isolation?.requested === true && mode === "none") {
throw new Error("Set task.isolation.mode before requesting isolated subagents");
}
await task(request); Try / catch
try {
await task(req);
} catch (e) {
if (e instanceof StructuredSubagentError && e.message.includes("task.isolation.mode")) {
session.settings.set("task.isolation.mode", "worktree");
return task(req);
}
throw e;
} Prevention
- 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
When it happens
Trigger: Setting `isolation: { requested: true }` on the task request while `task.isolation.mode` remains unset or "none" in session settings.
Common situations: 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.
Related errors
- Agent "${agentName}" is disabled in settings. Enable it via
- agent() isolated apply failed for ${result.id}${summary ? `:
- agent() isolated nested patch apply failed for ${result.id}:
- vault:// is disabled. Enable it by setting `vault.enabled =
- Subagent isolation, apply, and merge controls are unavailabl
AI-assisted analysis of can1357/oh-my-pi@9690622007 (2026-08-31).
Data as JSON: /api/errors/62fb3300dd6bf7ea.
Report an issue: GitHub.