jackwener/OpenCLI · info · EmptyResultError

No sessions found.

Error message

No sessions found.

What it means

The manus list command fetches sessions via the Manus API and throws EmptyResultError when, after optionally filtering out archived sessions, the resulting array is empty. The API call succeeded; the account simply has no sessions matching the filter.

Source

Thrown at clis/manus/list.js:54

        const limit = validatedLimit(kwargs?.limit, 20, 200);
        const includeArchived = kwargs?.archived === true;
        await ensureOnManus(page);

        const data = requireObject(await page.evaluate(`(async () => {
            ${MANUS_API_CALL_JS}
            return callManusAPI('session.v1.SessionService/ListSessions', {
                page: 1,
                pageSize: ${limit},
            });
        })()`), 'list sessions');

        let sessions = requireArray(data.sessions, 'list sessions');
        if (!includeArchived) {
            sessions = sessions.filter((s) => !s.isArchived);
        }

        if (!sessions.length) {
            throw new EmptyResultError('manus list', 'No sessions found.');
        }

        return sessions.slice(0, limit).map((s, index) => ({
            id: requireString(s?.uid, `list session ${index + 1}`),
            Title: (s.title || '—').slice(0, 80),
            Status: shortStatus(s.status),
            'Last Message': (s.lastDisplayMessage || '—').slice(0, 80),
            'Last Updated': formatTime(s.updatedAt),
            Credits: String(s.costedCredits ?? '0'),
        }));
    },
});

View on GitHub (pinned to 49907e53dc)

Solutions

  1. Create a session/task in the Manus web UI, then rerun the command
  2. Pass the include-archived flag/option so archived sessions are not filtered out and rerun
  3. Verify you are signed into the expected account (check user_id via the auth command)
  4. If sessions exist but the error persists, inspect the ListSessions RPC response to confirm the `sessions` key still holds the array

Example fix

// before
if (!includeArchived) {
    sessions = sessions.filter((s) => !s.isArchived);
}
// after (caller avoids the throw by requesting archived sessions too)
const sessions = await manusList({ includeArchived: true });
Defensive patterns

Strategy: fallback

Try / catch

try {
  const sessions = await manusList({});
} catch (e) {
  if (e instanceof EmptyResultError) {
    return []; // no (non-archived) sessions — normal state
  }
  throw e;
}

Prevention

When it happens

Trigger: Running `manus list` on an account with no sessions at all, or running it without the includeArchived flag when every existing session is archived (the isArchived filter empties the array).

Common situations: New Manus account with no tasks/sessions created yet; all previous sessions were archived so the default (non-archived) view is empty; querying the wrong account/workspace; a Manus change moved sessions under a different key so the filter runs against a different array.

Understand the failure class

Background: EmptyResultError / "no results found": when an API or scraper succeeds but returns zero rows — this error's family across 9 libraries.

Related errors


AI-assisted analysis of jackwener/OpenCLI@49907e53dc (2026-08-29). Data as JSON: /api/errors/c4952f896a3127d3. Report an issue: GitHub.