openclaw/openclaw · error · CatalogParamsError
Codex session is active on the paired node; wait for it to f
Error message
Codex session is active on the paired node; wait for it to finish before continuing
What it means
Thrown as CatalogParamsError by requireContinuableNodeRecord in session-catalog-node-continue.ts:226 when record.status === 'active', meaning the Codex session on the node is currently running a turn. Continuing would collide with the in-flight execution, so the guard rejects it.
Source
Thrown at extensions/codex/src/session-catalog-node-continue.ts:226
cursor = nextCursor;
}
throw new CatalogParamsError("Codex session is unavailable on the paired node");
}
function requireContinuableNodeRecord(record: CodexSessionCatalogSession): void {
if (record.archived) {
throw new CatalogParamsError("Codex session is archived on the paired node");
}
if (!isInteractiveThreadSource(record.source)) {
throw new CatalogParamsError("Codex session is not a non-archived interactive Codex session");
}
if (record.status === "idle" || record.status === "notLoaded") {
// The node App Server is a passive catalog reader, so stored native Codex
// sessions normally report notLoaded. Node resume serializes OpenClaw turns.
return;
}
if (record.status === "active") {
throw new CatalogParamsError(
"Codex session is active on the paired node; wait for it to finish before continuing",
);
}
throw new CatalogParamsError("Codex session cannot be continued in its current state");
}
async function readNodeCodexHistory(params: {
runtime: PluginRuntime;
nodeId: string;
record: CodexSessionCatalogSession;
}): Promise<CodexNodeHistory> {
const raw = await params.runtime.nodes.invoke({
nodeId: params.nodeId,
command: CODEX_APP_SERVER_THREAD_TURNS_LIST_COMMAND,
params: {
threadId: params.record.threadId,
limit: MAX_TRANSCRIPT_PAGE_LIMIT,
},View on GitHub (pinned to 01804a7531)
Solutions
- Wait for the in-flight turn on the node to finish (status returns to idle) and retry.
- Confirm no other client is driving the session on the node; close duplicate continuations.
- If the status is stale, refresh the catalog so the node reports the current status.
- As a last resort, interrupt the active turn on the node (via the node's own controls) before continuing.
Defensive patterns
Strategy: retry
Validate before calling
// Check status before continuing; only idle/notLoaded are continuable immediately.
if (record.status === 'active') {
throw new Error('Session is active on the node; wait for the current turn to finish.');
} Type guard
function isActivelyRunning(status: unknown): boolean {
return status === 'active';
} Prevention
- Refresh the catalog before continuing so status is current.
- Ensure no other client is driving the same session on the node.
- Wait for the in-flight turn to reach a terminal state, then retry.
- Only interrupt the active turn via the node's own controls as a last resort.
When it happens
Trigger: The target thread is mid-turn on the node (a Codex turn is actively streaming/executing). Triggered when two clients or a UI race tries to continue the same active session, or the previous turn has not reached a terminal state.
Common situations: Another tab/client is running the session on the node; a long-running turn is still executing; the node's status refresh lags and reports active after completion.
Related errors
- multiple OpenClaw sessions adopt Codex thread ${marker.sourc
- Codex session catalog hostId is invalid
- paired node does not permit Codex session continuation
- Codex session is archived on the paired node
- Codex session is not a non-archived interactive Codex sessio
AI-assisted analysis of openclaw/openclaw@01804a7531 (2026-08-12).
Data as JSON: /api/errors/d484a4ae6745e926.
Report an issue: GitHub.