With prefer_local_intents, Home Assistant puts requests its local intents
answered into the chat log as external calls of intents like
HassGetCurrentTime. The model does not have these tools, and replayed as
its own calls they make it apologise for using tools it does not have and
doubt answers it never gave. They are now passed as a developer note with
the intent, its arguments and its result.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Send the location question as a user message. A request with only a
system message has no user content, which endpoints in front of Anthropic
models reject ("text content blocks must be non-empty").
- Leave unknown fields out of the web search user_location. After a failed
lookup there is no city or region, and the empty strings made every
request fail ("user_location.city: String should have at least 1
character").
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Treat an empty tool argument string as no parameters instead of raising
JSONDecodeError; the proxy sends "" for tools like the timer status
(upstream issue #3).
- Do not replay earlier web searches in the history. The chat log keeps only
their status, and a search without results makes the model disown the
answers it based on it and search again (upstream issue #4).
- Look up the home location for web search with the subentry's model instead
of gpt-4o-mini, and save the options without city/region if the lookup
fails (upstream issue #5).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>