From ac6f249de111eeef707679608939e8ca9883c2d6 Mon Sep 17 00:00:00 2001 From: Martin Kessler Date: Sun, 28 Jun 2026 18:09:51 -0700 Subject: [PATCH] test(codex): cover binds without model overrides (#89535) --- .../codex/src/conversation-binding.test.ts | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/extensions/codex/src/conversation-binding.test.ts b/extensions/codex/src/conversation-binding.test.ts index 5abe2f4d6496..22e32614f063 100644 --- a/extensions/codex/src/conversation-binding.test.ts +++ b/extensions/codex/src/conversation-binding.test.ts @@ -296,6 +296,33 @@ describe("codex conversation binding", () => { expect(bindingAfterStart.networkProxyConfigFingerprint).toBe(NETWORK_PROXY_CONFIG_FINGERPRINT); }); + it("starts a new bind thread when no model override is provided", async () => { + const sessionFile = path.join(tempDir, "session.jsonl"); + const requests: Array<{ method: string; params: Record }> = []; + sharedClientMocks.getSharedCodexAppServerClient.mockResolvedValue({ + request: vi.fn(async (method: string, requestParams: Record) => { + requests.push({ method, params: requestParams }); + return { + thread: { id: "thread-new", sessionId: "session-1", cwd: tempDir }, + model: "gpt-5.5", + }; + }), + }); + + await startCodexConversationThread({ + sessionFile, + workspaceDir: tempDir, + }); + + expect(requests).toHaveLength(1); + expect(requests[0]?.method).toBe("thread/start"); + expect(requests[0]?.params).not.toHaveProperty("model"); + expect(requests[0]?.params).not.toHaveProperty("modelProvider"); + await expect(fs.readFile(`${sessionFile}.codex-app-server.json`, "utf8")).resolves.toContain( + '"model": "gpt-5.5"', + ); + }); + it("preserves Codex auth and omits the public OpenAI provider for native bind threads", async () => { const sessionFile = path.join(tempDir, "session.jsonl"); agentRuntimeMocks.ensureAuthProfileStore.mockReturnValue({