tinyhumansai/openhuman · error

Core rejected the meet_list_upcoming request.

Error message

Core rejected the meet_list_upcoming request.

What it means

`openhuman.meet_list_upcoming` resolved with `ok` falsy — the meet controller ran but refused the listing. Upcoming meetings come from the calendar connection plus per-event join-policy data, so failures usually trace to calendar state: not connected, token expired, or event fetch failing core-side. Both `lookahead_minutes` and `limit` are optional and omitted when null; bad values (negative, huge) can also be rejected by the handler.

Source

Thrown at app/src/services/meetCallService.ts:409

}

/**
 * Fetch upcoming calendar meetings that have a conferencing link.
 * Returns an empty array when no Google Calendar is connected.
 */
export async function listUpcomingMeetings(
  lookaheadMinutes?: number,
  limit?: number
): Promise<UpcomingMeeting[]> {
  const result = await callCoreRpc<CoreListUpcomingResponse>({
    method: 'openhuman.meet_list_upcoming',
    params: {
      ...(lookaheadMinutes != null ? { lookahead_minutes: lookaheadMinutes } : {}),
      ...(limit != null ? { limit } : {}),
    },
  });
  if (!result?.ok) {
    throw new Error('Core rejected the meet_list_upcoming request.');
  }
  return result.meetings ?? [];
}

// ---------------------------------------------------------------------------
// Per-event join-policy overrides
// ---------------------------------------------------------------------------

interface CoreSetEventPolicyResponse {
  ok: boolean;
}

interface CoreGetEventPoliciesResponse {
  ok: boolean;
  policies: Record<string, string>;
}

/**

View on GitHub (pinned to a221052e0d)

Solutions

  1. Check calendar connection status in Settings → Connections and reconnect if needed
  2. Clamp `lookaheadMinutes` (>0) and `limit` (>=1) before calling, or omit them to use defaults
  3. Inspect core logs for the meet_list_upcoming handler error
  4. Retry after reconnecting the calendar provider

Example fix

// before
const meetings = await listUpcomingMeetings(lookahead ?? -1, limit);

// after
const meetings = await listUpcomingMeetings(
  lookahead != null && lookahead > 0 ? Math.min(lookahead, 1440) : undefined,
  limit != null && limit > 0 ? Math.min(limit, 100) : undefined
);
Defensive patterns

Strategy: try-catch

Validate before calling

const args = {
  ...(lookaheadMinutes != null && lookaheadMinutes > 0 ? { lookahead_minutes: Math.min(lookaheadMinutes, 1440) } : {}),
  ...(limit != null && limit > 0 ? { limit: Math.min(limit, 100) } : {}),
};

Try / catch

let meetings: UpcomingMeeting[] = [];
try { meetings = await listUpcomingMeetings(); }
catch (e) {
  // usually calendar auth — prompt reconnect instead of crashing the view
  showCalendarReconnectPrompt();
}

Prevention

When it happens

Trigger: Calendar integration disconnected or its OAuth token expired mid-session; a negative `lookaheadMinutes` or `limit` of 0; backend calendar sync error propagating as ok:false.

Common situations: Fresh install where calendar was never connected but the UI assumes it is; revoked calendar grant; sleep/wake leaving the sync stale; passing `limit: 0` from an unclamped UI control.

Related errors


AI-assisted analysis of tinyhumansai/openhuman@a221052e0d (2026-08-16). Data as JSON: /api/errors/712dcdefe01d9f53. Report an issue: GitHub.