#31902 [Bug]: websearch_interception short-circuit uses last user message as the search query instead of the model's web_search tool-call query (Claude Code returns "Did 0 searches" / off-topic results with github_copilot)
### Check for existing issues
- [x] I have searched the existing issues and checked that my issue is not a duplicate.
### What happened?
When Claude Code's native **WebSearch** is served through `websearch_interception` for a provider without native Anthropic Messages support (e.g. `github_copilot`), the short-circuit path runs the search against the **text of the last user message** instead of the **query the model placed in the `web_search` tool call**.
The result is that SearXNG/Tavily/etc. are queried with the wrong string. The search backend returns valid-but-irrelevant results (e.g. dictionary definitions for a stray word in the prompt), and Claude Code — receiving results that don't correspond to the query it asked for — reports **"Did 0 searches in NNNms"** and discards them.
This is distinct from #29649 (which reports the short-circuit skipping model *synthesis*). This issue is that the **search input itself is wrong**, upstream of synthesis. The two share the short-circuit code path but have different root causes.
## Root cause
In `try_short_circuit_search`, the query is extracted from the last user message:
`handler.py` (main [L151](https://github.com/BerriAI/lit…