tinyhumansai/openhuman · error

Core rejected the meet_set_event_policy request.

Error message

Core rejected the meet_set_event_policy request.

What it means

`openhuman.meet_set_event_policy` resolved with `ok` falsy. This persists a per-event join-policy override ('auto' | 'ask' | 'skip') with resolution order per-event > per-platform > global on the Rust side. Failure means the handler refused the write: unknown calendar_event_id (event deleted or from another calendar), invalid policy value, or persistence error in the policy store.

Source

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

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

/**
 * Persist a per-event join-policy override for a specific calendar event.
 * Resolution order (Rust side): per-event > per-platform > global.
 */
export async function setEventPolicy(
  calendarEventId: string,
  policy: 'auto' | 'ask' | 'skip'
): Promise<void> {
  const result = await callCoreRpc<CoreSetEventPolicyResponse>({
    method: 'openhuman.meet_set_event_policy',
    params: { calendar_event_id: calendarEventId, policy },
  });
  if (!result?.ok) {
    throw new Error('Core rejected the meet_set_event_policy request.');
  }
}

/**
 * Batch-fetch per-event join-policy overrides for the given calendar event IDs.
 * Only IDs that have an explicit override are present in the returned map.
 */
export async function getEventPolicies(
  calendarEventIds: string[]
): Promise<Record<string, string>> {
  if (calendarEventIds.length === 0) return {};
  const result = await callCoreRpc<CoreGetEventPoliciesResponse>({
    method: 'openhuman.meet_get_event_policies',
    params: { calendar_event_ids: calendarEventIds },
  });
  if (!result?.ok) {
    throw new Error('Core rejected the meet_get_event_policies request.');
  }

View on GitHub (pinned to a221052e0d)

Solutions

  1. Refresh the event list and retry with a currently-valid calendar_event_id
  2. Ensure policy is exactly one of 'auto' | 'ask' | 'skip' at the call site (type it as the union)
  3. Check core logs for the set_event_policy refusal reason
  4. If persistent, inspect the events policy store state in the workspace

Example fix

// before
await setEventPolicy(eventId, policyFromString(e.target.value));

// after
type Policy = 'auto' | 'ask' | 'skip';
const POLICIES: Policy[] = ['auto', 'ask', 'skip'];
const raw = e.target.value as Policy;
if (!POLICIES.includes(raw)) return;
await setEventPolicy(eventId, raw);
Defensive patterns

Strategy: validation

Validate before calling

type Policy = 'auto' | 'ask' | 'skip';
const isPolicy = (v: unknown): v is Policy => v === 'auto' || v === 'ask' || v === 'skip';
if (!calendarEventId.trim() || !isPolicy(policy)) return; // skip invalid writes

Type guard

function isPolicy(v: unknown): v is 'auto' | 'ask' | 'skip' {
  return v === 'auto' || v === 'ask' || v === 'skip';
}

Try / catch

try { await setEventPolicy(id, policy); }
catch (e) { toast('Could not save join policy — refresh the calendar and retry.'); }

Prevention

When it happens

Trigger: Passing an event id the core does not know (deleted event, id from a different calendar account, stale UI row after a sync); a policy string outside the enum (e.g. localized or legacy 'never'); the events/policy store failing to write.

Common situations: User clicks a policy control on a calendar row that is being removed by a concurrent sync; frontend sends an untranslated vs translated value after i18n changes; store file locked or corrupted.

Related errors


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