diff --git a/src/commands/onboard-non-interactive/local/workspace.test.ts b/src/commands/onboard-non-interactive/local/workspace.test.ts index d77b2029354c..3bcfeaa4512a 100644 --- a/src/commands/onboard-non-interactive/local/workspace.test.ts +++ b/src/commands/onboard-non-interactive/local/workspace.test.ts @@ -68,4 +68,21 @@ describe("resolveNonInteractiveWorkspaceDir", () => { expect(resolved).toBe(path.join(stateDir, "workspace")); }); + + it("ignores blank CLI and configured workspace values", () => { + const home = path.join(root, "home"); + const stateDir = path.join(root, "scratch-state"); + const resolved = resolveNonInteractiveWorkspaceDir({ + opts: { workspace: " " }, + baseConfig: { agents: { defaults: { workspace: "\t" } } }, + defaultWorkspaceDir: path.join(home, ".openclaw", "workspace"), + env: { + HOME: home, + OPENCLAW_HOME: home, + OPENCLAW_STATE_DIR: stateDir, + }, + }); + + expect(resolved).toBe(path.join(stateDir, "workspace")); + }); }); diff --git a/src/commands/onboard-non-interactive/local/workspace.ts b/src/commands/onboard-non-interactive/local/workspace.ts index d524d5881438..3367bdc88b30 100644 --- a/src/commands/onboard-non-interactive/local/workspace.ts +++ b/src/commands/onboard-non-interactive/local/workspace.ts @@ -18,13 +18,15 @@ export function resolveNonInteractiveWorkspaceDir(params: { env?: NodeJS.ProcessEnv; }) { const env = params.env ?? process.env; + const requestedWorkspace = params.opts.workspace?.trim() || undefined; + const configuredWorkspace = params.baseConfig.agents?.defaults?.workspace?.trim() || undefined; const workspaceOverride = env.OPENCLAW_WORKSPACE_DIR?.trim() || undefined; const implicitWorkspaceDir = isDefaultStateDir(env) ? params.defaultWorkspaceDir : path.join(resolveStateDir(env), "workspace"); const raw = ( - params.opts.workspace ?? - params.baseConfig.agents?.defaults?.workspace ?? + requestedWorkspace ?? + configuredWorkspace ?? workspaceOverride ?? implicitWorkspaceDir ).trim();