anomalyco / anomalyco/opencode
web: websearch provider consent form is never displayed, every call times out
@Hona is already working on this.
Since Sep 3, 2026.
- Dominant language
- TypeScript
- Stars
- 209k
- Forks
- 27.5k
- PR merge metrics
- PR metrics pending
Description
Description
On the V2 web UI, the first websearch call never completes: the provider-consent form is created server-side but never rendered, so every call times out after 60 s with Web search cancelled. The consent form carries metadata.kind = "websearch.provider" (packages/core/src/tool/plugin/websearch.ts), while the web app only selects forms with metadata?.kind === "question" (packages/app/src/session/requests/session-request-tree.ts:51, rendered via session-composer-region.tsx for question/permission requests only). The search providers themselves are healthy — bypassing the consent step via POST /api/websearch with an explicit providerID returns results.
OpenCode version
v0.0.0-beta-18866
Steps to reproduce
- Ensure no provider is stored (
kvhas nowebsearch:providerkey). - Run a
websearchcall from the web UI (mobile or desktop). - Watch the session: no consent card (
Allow search via ...) appears within 60 s. - The call fails with
Web search cancelledafter about 60 s (Effect.timeoutOrElse({ duration: "1 minute" })inpackages/core/src/tool/plugin/websearch.ts).
Plugins
none
Operating System
Linux (Ubuntu), x64
Additional context
- Verified the providers are healthy by calling
POST /api/websearchdirectly with explicitproviderID: Exa and Tavily both returned results. Exa works without an API key. - The TUI session view (
packages/tui/src/routes/session/index.tsx:219-225,1473-1477) lists forms without a kind filter and renders the first pending form, so it is not affected by this issue. - Workaround: pre-save a provider selection so the consent step is skipped, e.g.
websearch:provider = "exa"inkv(selection persists viapackages/core/src/websearch.ts,ProviderKey). Revert withDELETE FROM kv WHERE key='websearch:provider';. - Reproduces on every call while no provider is stored; the form is missing in both mobile and desktop web UI layouts.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.