tinyhumansai/openhuman · error
[ToolsPanel] Failed to save tool preferences:
Error message
[ToolsPanel] Failed to save tool preferences:
What it means
Saving onboarding tasks with the newly expanded enabledTools list failed in the Tools panel — the setOnboardingTasks call (which carries the Rust tool names the session builder filters on) rejected. Tool preferences are therefore not persisted; the UI's toggle state and the session builder's actual tool set can diverge until a successful re-save.
Source
Thrown at app/src/components/settings/panels/ToolsPanel.tsx:88
.filter(([, v]) => v)
.map(([k]) => k);
// Expand UI toggle IDs to the Rust tool names the session builder filters on.
const enabledTools = getEnabledRustToolNames(enabledIds);
await setOnboardingTasks({
accessibilityPermissionGranted: onboardingTasks?.accessibilityPermissionGranted ?? false,
localModelConsentGiven: onboardingTasks?.localModelConsentGiven ?? false,
localModelDownloadStarted: onboardingTasks?.localModelDownloadStarted ?? false,
enabledTools,
connectedSources: onboardingTasks?.connectedSources ?? [],
updatedAtMs: Date.now(),
});
setDirty(false);
setSaveStatus('saved');
setTimeout(() => setSaveStatus('idle'), 3000);
} catch (err) {
console.warn('[ToolsPanel] Failed to save tool preferences:', err);
setSaveStatus('error');
} finally {
setSaving(false);
setTimeout(() => {
savingRef.current = false;
}, 500);
}
};
const body = (
<>
<p className="text-content-muted text-sm">{t('settings.tools.chooseCapabilities')}</p>
<div className="max-h-[420px] overflow-y-auto pr-1 space-y-4">
{TOOL_CATEGORIES.map(category => {
const tools = toolsByCategory[category];
if (tools.length === 0) return null;
return (View on GitHub (pinned to 7491200858)
Solutions
- Read the warned error to distinguish core RPC transport failure from a validation rejection of the enabledTools list
- Confirm the core process and session are healthy, then re-apply and save the tool selection
- If getEnabledRustToolNames produced an unknown tool id, compare the UI toggle ids against the Rust tool names the core accepts
- Check the core log for the onboarding-tasks write handler's error detail
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at app/src/components/settings/panels/ToolsPanel.tsx:88 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17).
Data as JSON: /api/errors/865ac7d45f3c69b5.
Report an issue: GitHub.