different-ai/openwork · error
Task creation did not return a session ID.
Error message
Task creation did not return a session ID.
What it means
After createTaskInWorkspace resolves, the action expects a session ID string; a null return means the backend accepted task creation but the response did not carry a session identifier. This throws so the caller never continues with a sessionId-less result. It signals an API contract violation rather than a user mistake.
Source
Thrown at apps/app/src/react-app/domains/session/control/session-control-actions.ts:98
opencodeClient,
refreshRouteState,
selectedSessionId,
selectedWorkspaceId,
selectedWorkspaceRoot,
sessionsByWorkspaceId,
workspaces,
} = input;
const createTaskControlAction = useMemo<OpenworkControlAction>(() => ({
id: "session.create_task",
label: "Create a new task",
description: "Create a new session in the selected workspace.",
sideEffect: "mutation",
disabled: !canCreateTask || !selectedWorkspaceId,
execute: async () => {
if (!selectedWorkspaceId) throw new Error("Cannot create a task without a selected workspace.");
const sessionId = await createTaskInWorkspace(selectedWorkspaceId);
if (sessionId === null) throw new Error("Task creation did not return a session ID.");
return sessionId;
},
}), [canCreateTask, createTaskInWorkspace, selectedWorkspaceId]);
useControlAction(createTaskControlAction);
const listSessionsControlAction = useMemo<OpenworkControlAction>(() => ({
id: "session.list_sessions",
label: "List available sessions",
description: "Return the list of sessions across workspaces so the user can ask to open one by name.",
kind: "query",
effects: { data: "read", ui: "none", external: false },
sideEffect: "none",
execute: () => {
const out: { sessionId: string; title: string; workspace: string; updatedAt: number }[] = [];
for (const workspace of workspaces) {
const list = sessionsByWorkspaceId[workspace.id] ?? [];
for (const session of list) {
const sessionId = session.id?.trim() ?? "";View on GitHub (pinned to 2b7df46e8a)
Solutions
- Inspect the network response of the task-creation call and confirm the session ID field is present; fix the server response or update the client's response parsing.
- Check for version mismatch between the OpenWork app and server and align versions.
- Retry creation; if it reproduces, capture the response payload and file a bug against the server endpoint.
Example fix
// before
const sessionId = await createTaskInWorkspace(selectedWorkspaceId);
if (sessionId === null) throw new Error("Task creation did not return a session ID.");
// after (surface server payload)
const sessionId = await createTaskInWorkspace(selectedWorkspaceId);
if (sessionId === null) {
const raw = await debugLastResponse();
throw new Error(`Task creation did not return a session ID. Response: ${raw}`);
} Defensive patterns
Strategy: try-catch
Validate before calling
const response = await createTaskInWorkspace(id);
if (response !== null && typeof response !== "string") {
throw new Error("Unexpected createTask response shape");
} Type guard
function isSessionId(v: string | null): v is string {
return typeof v === "string" && v.length > 0;
} Try / catch
try {
const sessionId = await createTaskInWorkspace(workspaceId);
if (sessionId === null) throw new Error("Task creation did not return a session ID.");
} catch (e) {
logServerError(e); // capture raw response for the backend bug report
showToast("Task creation failed — server returned no session");
} Prevention
- Add an integration test asserting the create-task endpoint always returns a sessionId on 2xx.
- Pin app/server versions during development to avoid response-schema skew.
- Log the raw response body whenever the parsed session ID is null.
When it happens
Trigger: createTaskInWorkspace(selectedWorkspaceId) resolves to null — e.g. the server returned a malformed/empty body, a 2xx response whose payload lacks sessionId, or the client wrapper returns null on unexpected response shapes.
Common situations: Backend/client version skew (server response schema changed), a proxy stripping the response body, or an OpenWork server bug where session creation succeeds but the session record isn't returned.
Related errors
- invalid_session_payload
- Unknown error
- Unknown error
- Cloud provider sync returned no result.
- Cannot create a task without a selected workspace.
AI-assisted analysis of different-ai/openwork@2b7df46e8a (2026-09-01).
Data as JSON: /api/errors/11d26fad05a1baf7.
Report an issue: GitHub.