Skip to content

feat(agent): enable provider-native web search by default - #6913

Merged
M4n5ter merged 2 commits into
rust-previewfrom
codex/native-provider-search
Nov 14, 2026
Merged

M4n5ter merged 2 commits into
rust-previewfrom
codex/native-provider-search

Conversation

@M4n5ter

@M4n5ter M4n5ter commented Nov 14, 2026 •

Copy link
Copy Markdown
Member

Summary

  • Offer provider-native web search by default on supported routes. ChatGPT Subscription and DeepSeek V4 Pro use web_search. DeepSeek Flash uses deepseek_web_search.

  • Stream the official DeepSeek Responses endpoint over HTTP and carry its original search results into later requests. A provider search followed by a final answer completes the turn using the provider's original response.

  • Use the existing search activity and Markdown rendering for provider results and source links.

  • Select one search source at tool binding time. Default to provider-native search when available. Settings can put a configured custom source first. Request failures surface through the selected source.

  • Add Tavily, Brave Search, Exa, and Serper presets in Settings → Web search. A custom endpoint can configure GET or POST, query-string and JSON parameters, optional header, query-string, or body authentication, and JSON pointers for results. Presets and custom endpoints share the same request path. Credentials stay in the existing vault and are scoped to the selected preset or endpoint.

Steering

Responses currently queues steering until the turn ends when hosted tools are enabled. The default now applies that existing behavior to ChatGPT Subscription, too.

Verification

  • cargo test --locked -p maka-agent-engine -p maka-provider-protocol -p maka-providers -p maka-model -p maka-web passed (108 tests).

  • cargo fmt --all -- --check and git diff --check passed.

  • Live requests through an isolated Maka Host ran one native search each on GPT-6.1-Sol (ChatGPT Subscription), DeepSeek V4 Pro, deepseek-flash, and deepseek-v4-flash. Each follow-up reused the URL without another search.

  • Reopened the conversations in an isolated macOS desktop instance and checked the search activity and rendered citation links. Pro returned its link in answer text. ChatGPT and Flash also returned structured URL citations.

  • The search preference and settings changes passed cargo test --locked -p maka-web -p maka-app-client. The tests cover source selection, the saved Tavily preference, and the four preset wire formats.

  • An isolated Host sent real GET and POST requests to a loopback endpoint with header, query-string, body, and no authentication. The checks exercised setting revisions, endpoint credential isolation, and result mapping. Another isolated session used a loopback model with no hosted search, ran the custom search with its existing network approval flow, and returned the result as an answer link. The four preset services were verified with request and response fixtures.

  • Checked the Web search settings page in the isolated macOS desktop app. Generated SDK declarations, strict workbench and bundle type checks, and Biome passed.

AI use

  • No generative tool made a substantive contribution
  • Generative tooling made a substantive contribution

Tool(s) and scope: OpenAI Codex authored the changes and ran verification.

Checklist

  • Tests cover the change and fail without it
  • Format, typecheck and the affected suites pass locally

Does this PR entail a change in behavior?

  • Yes — described under Summary above
  • No

@M4n5ter
M4n5ter merged commit 6708da7 into rust-preview Nov 14, 2026
8 of 9 checks passed
@M4n5ter
M4n5ter deleted the codex/native-provider-search branch November 14, 2026 15:34

@Astro-Han Astro-Han left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automated review notice: This comment was posted by an automated review agent operated by Astro-Han. It is not an independent human review and does not replace one.

[P2] Update the Host-replacement recovery test for the new WebStatus contract

I checked the Web capture/default-settings changes and the existing recovery assertion. This PR changes Capture.credential_configured to custom_available in plugins/workspace/workspace-web/api/src/contract.rs and defaults Web settings to enabled. However, queued_run_keeps_native_tools_after_host_replacement in plugins/agent/native/src/owner/driver/tests.rs:3721–3729 still requires exactly available: false and credentialConfigured: false. That assertion is unchanged from the parent commit.

The actual native root job on the merged commit, checked out at 6708da787cef85d4664f23d2a6439322b707e8a1, fails this case after 8.065 seconds with unexpected WebStatus result: {"basis":{"revision":null,"credentialRevision":null},"available":true,"source":"model","customAvailable":false}. The new field/default behavior makes the old exact-value assertion impossible to satisfy. Update the fixture expectation while preserving the test's proof that restored requests retain native tools and complete after Host replacement, then rerun that case through the normal root suite.

This is a focused CI integration finding based on the original hosted log and the changed production contract/defaults. The same old assertion remains in the subsequently merged source checked at c1da07b45bf49febf7383ed010e2244e49c07de8. I have not independently run the Rust recovery test locally or completed the full 43-file review, live provider searches, settings/vault isolation, or old-database and permission acceptance. This comment attributes only the WebStatus assertion failure described above.


Automated review notice: This comment was posted by an automated review agent operated by Astro-Han. It is not an independent human review and does not replace one.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants