Web Search

Where search results come from: Bing browser search by default, plus model-native search, search bundled with model subscriptions, and Brave; and the two switches for fetching web pages.

Settings → Web Search has two parts: where search results come from, and how web pages are fetched.

Search sources

One master switch plus an "active source" dropdown; below it, each source has its own credential settings, so configuring a source and using it are separate steps. The default is Bing, which searches through the background browser and needs no API key — but it does require the built-in Browser Control plugin to be enabled, because that plugin is what runs the search. Turn the master switch off and the search tool is not exposed at all; you can still fetch pages when you supply a URL directly, so disabling search is not the same as going offline.

Source options:

  • Bing (default): searches Bing through the background browser, no key needed. On a connection failure or a verification page it reports the error explicitly instead of quietly switching providers — this is deliberate, because a silent fallback would leave you believing the results you got were all of them.
  • Model-native: the provider searches on the server side. The model itself has to support it (the official Anthropic and OpenAI models do); third-party gateways and custom baseUrl values do not, and in that case it falls back to Bing browser search automatically. With this option selected, the client's search tool is hidden from the model so it sees only one search surface.
  • Brave: every search goes to the Brave Search API with your own key (apply for one at api-dashboard.search.brave.com). It returns titles, links and snippets only; the model still fetches the page bodies itself.
  • Codex, Qoder, QoderWork, Bailian Token Plan: searches are answered by the search service bundled with these model subscriptions, without using the current session's model and without requiring the session itself to use that source. You must have signed in to the subscription under "Settings → Models"; sources you are not signed in to do not appear in the dropdown, and expired credentials produce an explicit error.
  • Custom: earlier versions could send searches to your own HTTP endpoint. That option no longer has a settings page; an existing custom configuration that is already active stays visible and keeps working.

Two more knobs: blocked domains (comma-separated; results from these domains are excluded) and maximum searches (how many searches per turn are allowed, so it cannot keep searching forever). There is no UI for an allow-list of domains; to use one, edit the engine configuration.

Changing the source or entering a key takes effect for new sessions.

Fetching web pages

Page fetching is a separate set of switches and keeps working even when search is off:

  • Blocked domains: comma-separated; fetching these domains is forbidden. This is a security guardrail — list your company's internal domains, for example, and a link cannot pull intranet content out.
  • JS rendering: when on, dynamic pages are rendered in a headless browser before the body is extracted. Chromium must be installed first (npx playwright install chromium); if it is missing, fetching silently falls back to plain extraction rather than erroring out. Off by default.