diff --git a/packages/server/src/server/agent/providers/codex-app-server-agent.features.test.ts b/packages/server/src/server/agent/providers/codex-app-server-agent.features.test.ts index 6fe71f9616..ff0dab49a6 100644 --- a/packages/server/src/server/agent/providers/codex-app-server-agent.features.test.ts +++ b/packages/server/src/server/agent/providers/codex-app-server-agent.features.test.ts @@ -521,6 +521,19 @@ describe("Codex app-server provider controls", () => { }); }); + test("removing the legacy Fast key after opening leaves the speed the session opened with", async () => { + const { session, appServer } = await createConnectedSession({ + providerOptions: { fast_mode: true }, + }); + expect(session.openOptionsPatch).toEqual({ service_tier: "priority", fast_mode: null }); + + // The stored options now hold `service_tier`; `fast_mode` is an alias no longer in them. + await expect(session.applyOptions?.({ fast_mode: null })).resolves.toEqual({}); + + await session.startTurn("hello"); + await expect(appServer.waitForTurnStart()).resolves.toMatchObject({ serviceTier: "priority" }); + }); + test("a patch that sets another option keeps the running sandbox and an explicit speed", async () => { const { session, appServer } = await createConnectedSession({ providerOptions: { sandbox_mode: "read-only", service_tier: "default", fast_mode: true }, diff --git a/packages/server/src/server/agent/providers/codex-app-server-agent.ts b/packages/server/src/server/agent/providers/codex-app-server-agent.ts index e6f205c508..82dab386cc 100644 --- a/packages/server/src/server/agent/providers/codex-app-server-agent.ts +++ b/packages/server/src/server/agent/providers/codex-app-server-agent.ts @@ -4752,7 +4752,8 @@ export class CodexAppServerAgentSession implements AgentSession { private requestedTierFrom(options: ProviderOptions): string | null { if ("service_tier" in options) return readCodexServiceTier(options); - if (options.fast_mode === null) return null; + // Opening moved a legacy Fast into `service_tier`, so removing the alias changes no speed. + if (options.fast_mode === null) return this.requestedServiceTier; return options.fast_mode ? "fast" : "default"; }