You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A user has an embedding model (bge-m3:latest — OpenHuman's default memory-tree embed model) selected as their Ollama chat model. Every chat turn is rejected by Ollama with HTTP 400:
ollama API error (400 Bad Request): {"error":{"message":"\"bge-m3:latest\" does not support chat","type":"invalid_request_error","param":null,"code":null}}
Because the turn retries each cycle, two users alone generated 36.6k Sentry events.
Root cause
Ollama chat routes through OpenAiCompatibleProvider (name = "ollama") in src/openhuman/inference/provider/compatible.rs.
The existing actionable guard (completion_only_404_guard, Cannot write code on filesystem #3193) only fires on 404; this rejection is a 400, so it bypasses it and the raw upstream JSON bubbles up.
The Sentry classifier is_provider_config_rejection_message (src/openhuman/inference/provider/config_rejection.rs) pins "does not support tools" (TAURI-RUST-35) but not"does not support chat" → the 400 is never demoted and re-reports every turn.
Bug shape
Provider config-rejection / capability mismatch (user-state, not a server bug). Same family as TAURI-RUST-35 (does not support tools), #2239, #2612, #2902. Sentry has no remediation — the user must pick a chat-capable model.
Fix
Two layers:
Classifier — add "does not support chat" to is_provider_config_rejection_message so the event is demoted error→info (36.6k → 0).
Actionable error — add a not_chat_capable_guard (400/422) that replaces the opaque JSON with model '<m>' does not support chat — assign a chat-capable model in Settings → AI, preserving the phrase so it stays demoted on re-report.
Source
Sentry (self-hosted): https://sentry.tinyhumans.ai/organizations/tinyhumans/issues/5338/
Short ID:
TAURI-RUST-4P6· Events: 36,600 · Users affected: 2 · First seen: 2026-05-27 · Last seen: 2026-06-04 · Live on0.57.13(production)Symptom
A user has an embedding model (
bge-m3:latest— OpenHuman's default memory-tree embed model) selected as their Ollama chat model. Every chat turn is rejected by Ollama with HTTP 400:Because the turn retries each cycle, two users alone generated 36.6k Sentry events.
Root cause
OpenAiCompatibleProvider(name = "ollama") insrc/openhuman/inference/provider/compatible.rs.completion_only_404_guard, Cannot write code on filesystem #3193) only fires on 404; this rejection is a 400, so it bypasses it and the raw upstream JSON bubbles up.is_provider_config_rejection_message(src/openhuman/inference/provider/config_rejection.rs) pins"does not support tools"(TAURI-RUST-35) but not"does not support chat"→ the 400 is never demoted and re-reports every turn.Bug shape
Provider config-rejection / capability mismatch (user-state, not a server bug). Same family as TAURI-RUST-35 (
does not support tools), #2239, #2612, #2902. Sentry has no remediation — the user must pick a chat-capable model.Fix
Two layers:
"does not support chat"tois_provider_config_rejection_messageso the event is demoted error→info (36.6k → 0).not_chat_capable_guard(400/422) that replaces the opaque JSON withmodel '<m>' does not support chat — assign a chat-capable model in Settings → AI, preserving the phrase so it stays demoted on re-report.