tinyhumansai/openhuman · error · Error
--isolated-workspace requires --spawn-core
Error message
--isolated-workspace requires --spawn-core
What it means
main() rejects the combination --isolated-workspace without --spawn-core. An isolated workspace means 'create a throwaway temp workspace under $TMPDIR and point a freshly spawned core at it' — an already-running external core cannot be given a new workspace after the fact, so the flag is meaningless without a spawn. The check runs before any temp dir is created.
Source
Thrown at scripts/debug/goals-live.mjs:543
const toShow = goalsRuns.length ? goalsRuns : changed;
if (toShow.length === 0)
console.log("\n (no goals_agent transcript found — run may not persist transcripts)");
for (const t of toShow) printThoughts(t);
} else if (goalsRuns.length) {
console.log("\n (re-run with --show-thoughts to see the agent's reasoning + tool calls)");
}
}
// ── main ────────────────────────────────────────────────────────────────────
async function main() {
const opts = parseArgs(process.argv.slice(2));
if (!opts.workspace) opts.workspace = await defaultWorkspace();
let tempWorkspace = "";
let spawned;
if (opts.isolatedWorkspace) {
if (!opts.spawnCore) throw new Error("--isolated-workspace requires --spawn-core");
tempWorkspace = await mkdtemp(path.join(tmpdir(), "openhuman-goals-live-"));
opts.workspace = path.join(tempWorkspace, "workspace");
await mkdir(opts.workspace, { recursive: true });
}
if (opts.spawnCore) {
if (!opts.coreUrlExplicit) {
const port = await pickFreePort();
opts.coreUrl = `http://127.0.0.1:${port}/rpc`;
}
spawned = await startCore(opts);
opts.token = spawned.token;
} else {
opts.token = await readToken(opts);
}
console.log("[goals-live] starting");
console.log(` rpc: ${opts.coreUrl}`);View on GitHub (pinned to a221052e0d)
Solutions
- Add --spawn-core: `node scripts/debug/goals-live.mjs --spawn-core --isolated-workspace`
- Or drop --isolated-workspace and pass --workspace <dir> to target a specific existing workspace against the external core
- If wrapping the script, assert the flag implication when composing argv
Example fix
# before node scripts/debug/goals-live.mjs --isolated-workspace # Error: --isolated-workspace requires --spawn-core # after node scripts/debug/goals-live.mjs --spawn-core --isolated-workspace --keep-workspace
Defensive patterns
Strategy: validation
Validate before calling
if (argv.includes("--isolated-workspace") && !argv.includes("--spawn-core")) {
console.error("--isolated-workspace only means something with --spawn-core; add it or drop the flag");
process.exit(2);
} Prevention
- Treat --isolated-workspace/--keep-workspace as a pair that only ever appears together with --spawn-core
- In wrapper scripts, model flag implications explicitly (isolated implies spawn) instead of relying on the runner's error
When it happens
Trigger: Running `node scripts/debug/goals-live.mjs --isolated-workspace` while intending to talk to an external core at --core-url; shell alias/history carrying the flag from a previous --spawn-core invocation where it was later dropped; boolean-flag copy-paste from the usage text.
Common situations: Developer adds --keep-workspace/--isolated-workspace for a repro case but forgets --spawn-core; scripts/CI wrapper assembling flags conditionally and emitting the isolated flag without the spawn flag.
Related errors
- unknown case '${name}' (valid: ${ALL_CASES.join(", ")})
- unknown option: ${arg}
- unknown option: ${arg}
- missing value for ${arg}
- ${label} must be an integer between 1 and 65535
AI-assisted analysis of tinyhumansai/openhuman@a221052e0d (2026-08-16).
Data as JSON: /api/errors/6e0c679079fb83a0.
Report an issue: GitHub.