stablyai/orca · error · Error

Unable to load agent sessions

Error message

Unable to load agent sessions

What it means

Thrown (then caught locally into a sheet error state) when `session.tabs.list` (populate the send-sheet with available agent terminals) returns ok:false. The host's error.message is preferred; the literal is the fallback. The catch puts the sheet into {kind:'error'}.

Source

Thrown at mobile/src/session/use-mobile-diff-review-send-actions.ts:136

        throw new Error('Created terminal response was invalid')
      }
      await sendPromptToTerminal(created.terminal, comments)
    },
    [client, connState, sendPromptToTerminal, worktreeId]
  )

  const openSendSheet = useCallback(async () => {
    if (!client || connState !== 'connected') {
      setActionError('Waiting for desktop...')
      return
    }
    setSendSheet({ kind: 'loading' })
    try {
      const response = await client.sendRequest('session.tabs.list', {
        worktree: `id:${worktreeId}`
      })
      if (!response.ok) {
        throw new Error(response.error?.message || 'Unable to load agent sessions')
      }
      setSendSheet({ kind: 'ready', terminals: readMobileReviewTerminalTabs(response.result) })
    } catch (err) {
      setSendSheet({
        kind: 'error',
        message: err instanceof Error ? err.message : 'Unable to load agent sessions',
        terminals: []
      })
    }
  }, [client, connState, setActionError, setSendSheet, worktreeId])

  return {
    clearSentNotes,
    copyNotes,
    createTerminalAndSend,
    openSendSheet,
    sendPromptToTerminal
  }

View on GitHub (pinned to 1136503c6a)

Solutions

  1. Reopen the send sheet after reconnecting.
  2. Verify the session/worktree exists.
  3. Check host logs.
  4. Update versions.

Example fix

// before
if (!response.ok) {
  throw new Error(response.error?.message || 'Unable to load agent sessions')
}
// after
if (!response.ok) {
  throw new RpcMethodError('session.tabs.list', response.error)
}
Defensive patterns

Strategy: try-catch

Validate before calling

if (!client || connState !== 'connected') {
  setActionError('Waiting for desktop...')
  return
}

Type guard

function isRpcFailure(r: RpcResponse): r is RpcFailure {
  return r.ok === false
}

Try / catch

try {
  await openSendSheet()
} catch (err) {
  setSendSheet({ kind: 'error', message: err instanceof Error ? err.message : 'Unable to load agent sessions', terminals: [] })
}

Prevention

When it happens

Trigger: Host cannot list session tabs - session gone, transport failure, or host shutting down.

Common situations: Relay drop when opening the send sheet; host restart; version skew on session.tabs.list params.

Related errors


AI-assisted analysis of stablyai/orca@1136503c6a (2026-08-12). Data as JSON: /api/errors/65d22e79991c8ff9. Report an issue: GitHub.