mirror of
https://github.com/Wei-Shaw/sub2api.git
synced 2026-10-14 03:52:26 +08:00
ChatGPT's Codex endpoint now rejects requests whose input replays a hosted web_search_call item unless tools declares web_search, failing the stream with "response protection is unavailable". Codex local context compaction sends the full history with tools:[], so every compaction after a web search fails and the session gets stuck in a reconnect loop. For OAuth transform, passthrough and WebSocket paths, append a cached-only web_search tool when the history contains web_search_call and no web_search tool is declared. When the caller offered no tools, pin tool_choice to "none" so the injected tool cannot be invoked. The /responses/compact wire shape is left untouched. Fixes #7927