From 5b8774f85394d11f4106b8da2f2cc646b53ede7e Mon Sep 17 00:00:00 2001 From: Ahmed Abushagur Date: Wed, 25 Mar 2026 15:56:09 -0700 Subject: [PATCH] fix: spawn step skipped when no explicit --steps passed The spawn skill injection condition used `enabledSteps?.has("spawn")` which is falsy when enabledSteps is undefined (no --steps flag). Now checks the recursive beta flag directly and falls through when no explicit steps are selected, matching how auto-update works. Co-Authored-By: Claude Opus 4.6 (1M context) --- packages/cli/package.json | 2 +- packages/cli/src/shared/orchestrate.ts | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index 3b82ebf69..f732bb16f 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@openrouter/spawn", - "version": "0.26.2", + "version": "0.26.3", "type": "module", "bin": { "spawn": "cli.js" diff --git a/packages/cli/src/shared/orchestrate.ts b/packages/cli/src/shared/orchestrate.ts index aaeaa9fea..949d6c5a2 100644 --- a/packages/cli/src/shared/orchestrate.ts +++ b/packages/cli/src/shared/orchestrate.ts @@ -551,7 +551,14 @@ async function postInstall( } // Spawn CLI + skill injection (recursive spawn) - if (enabledSteps?.has("spawn") && cloud.cloudName !== "local") { + // The "spawn" step is defaultOn when --beta recursive is active, so it should + // run when no explicit steps are selected (!enabledSteps) AND the beta flag is set. + const betaFeaturesPost = new Set((process.env.SPAWN_BETA ?? "").split(",").filter(Boolean)); + if ( + cloud.cloudName !== "local" && + betaFeaturesPost.has("recursive") && + (!enabledSteps || enabledSteps.has("spawn")) + ) { await installSpawnCli(cloud.runner); await delegateCloudCredentials(cloud.runner, cloud.cloudName); await injectSpawnSkill(cloud.runner, agentName);