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
- Refresh the event list and retry with a currently-valid calendar_event_id
- Ensure policy is exactly one of 'auto' | 'ask' | 'skip' at the call site (type it as the union)
- Check core logs for the set_event_policy refusal reason
- 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
- Type policy as the literal union end-to-end so invalid values cannot reach the RPC
- Ignore policy writes for events already removed by a concurrent sync (row unmount)
- Re-derive event ids from the freshest calendar snapshot before batch policy writes
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
- Core rejected the meet_list_upcoming request.
- Core rejected the meet_get_event_policies request.
- Core rejected the meet_agent_list_calls request.
- Core rejected the meet_agent_get_call_detail request.
- Core rejected the agent_meetings_join request.
AI-assisted analysis of tinyhumansai/openhuman@a221052e0d (2026-08-16).
Data as JSON: /api/errors/cda5ccb7b4296e74.
Report an issue: GitHub.