diff --git a/src/resources/extensions/sf/auto/run-unit.js b/src/resources/extensions/sf/auto/run-unit.js index 7ece6f987..a67ac6e21 100644 --- a/src/resources/extensions/sf/auto/run-unit.js +++ b/src/resources/extensions/sf/auto/run-unit.js @@ -509,11 +509,13 @@ async function runUnitViaSwarm(ctx, _pi, s, unitType, unitId, prompt, options) { * Default: false (each new unit starts with a clean session). */ export async function runUnit(ctx, pi, s, unitType, unitId, prompt, options) { - // Feature-flagged swarm path — no-op when unset so default behavior is unchanged. - if ( - process.env.SF_AUTONOMOUS_VIA_SWARM === "1" || - process.env.SF_AUTONOMOUS_VIA_SWARM === "true" - ) { + // Feature-flagged swarm path — default on in headless mode, opt-in elsewhere. + const swarmFlag = process.env.SF_AUTONOMOUS_VIA_SWARM; + const useSwarm = + swarmFlag === "1" || + swarmFlag === "true" || + (swarmFlag !== "0" && swarmFlag !== "false" && process.env.SF_HEADLESS === "1"); + if (useSwarm) { return runUnitViaSwarm(ctx, pi, s, unitType, unitId, prompt, options); }