Tools: add HTTP/HTTPS proxy support for web_search and web_fetch #4047
+45
−8
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Add HTTP/HTTPS proxy support for
web_searchandweb_fetchtools via standard environment variablesHTTP_PROXYandHTTPS_PROXY.Motivation
In certain network environments (e.g., mainland China), accessing international websites requires routing through proxy servers. Currently, the
web_searchandweb_fetchtools do not support proxy configuration, causing these tools to fail in restricted network environments.Changes
Core Modifications
src/infra/net/ssrf.tscreateProxyAgent()function to read proxy configuration from environment variablescreatePinnedDispatcher()to prioritize proxy when configuredsrc/agents/tools/web-search.tscreateProxyAgent()CHANGELOG.mdDesign Rationale
src/telegram/proxy.ts)undici'sProxyAgentHTTP_PROXY,HTTPS_PROXY,http_proxy,https_proxyHTTPS_PROXY, falls back toHTTP_PROXYcreateProxyAgent()centrally implemented inssrf.tsTesting
Tested in the following environments:
npm run buildpassesnpm run lint- 0 warnings, 0 errorsBreaking Changes
No breaking changes. If proxy environment variables are not set, behavior is identical to previous version.
Additional Notes
web_fetchtool automatically gains proxy support throughcreatePinnedDispatcher()createPinnedDispatcher()also automatically gain proxy support🤖 Generated with Claude Code