From fcb61c7154125aa7114d7dfd9879d3dc0d99461d Mon Sep 17 00:00:00 2001 From: Peter Dave Hello Date: Wed, 25 Feb 2026 05:19:47 +0800 Subject: [PATCH 1/3] Add OpenAI's GPT-5.3-Codex model support Reference: - https://openai.com/index/introducing-gpt-5-3-codex/ - https://developers.openai.com/api/docs/models/gpt-5.3-codex --- packages/types/src/providers/openai.ts | 18 ++++++++++++++++++ .../providers/__tests__/openai-native.spec.ts | 13 +++++++++++++ 2 files changed, 31 insertions(+) diff --git a/packages/types/src/providers/openai.ts b/packages/types/src/providers/openai.ts index af9a1ff759c..4ccdab79c71 100644 --- a/packages/types/src/providers/openai.ts +++ b/packages/types/src/providers/openai.ts @@ -63,6 +63,24 @@ export const openAiNativeModels = { description: "GPT-5.2 Codex: Our most intelligent coding model optimized for long-horizon, agentic coding tasks", }, + "gpt-5.3-codex": { + maxTokens: 128000, + contextWindow: 400000, + includedTools: ["apply_patch"], + excludedTools: ["apply_diff", "write_to_file"], + supportsImages: true, + supportsPromptCache: true, + promptCacheRetention: "24h", + supportsReasoningEffort: ["low", "medium", "high", "xhigh"], + reasoningEffort: "medium", + inputPrice: 1.75, + outputPrice: 14.0, + cacheReadsPrice: 0.175, + supportsTemperature: false, + tiers: [{ name: "priority", contextWindow: 400000, inputPrice: 3.5, outputPrice: 28.0, cacheReadsPrice: 0.35 }], + description: + "GPT-5.3 Codex: Our most intelligent coding model optimized for long-horizon, agentic coding tasks", + }, "gpt-5.2-chat-latest": { maxTokens: 16_384, contextWindow: 128_000, diff --git a/src/api/providers/__tests__/openai-native.spec.ts b/src/api/providers/__tests__/openai-native.spec.ts index ac50e6b0a1c..fefccbe3ab1 100644 --- a/src/api/providers/__tests__/openai-native.spec.ts +++ b/src/api/providers/__tests__/openai-native.spec.ts @@ -236,6 +236,19 @@ describe("OpenAiNativeHandler", () => { expect(modelInfo.info.contextWindow).toBe(1047576) }) + it("should return GPT-5.3 Codex model info when selected", () => { + const codexHandler = new OpenAiNativeHandler({ + ...mockOptions, + apiModelId: "gpt-5.3-codex", + }) + + const modelInfo = codexHandler.getModel() + expect(modelInfo.id).toBe("gpt-5.3-codex") + expect(modelInfo.info.maxTokens).toBe(128000) + expect(modelInfo.info.contextWindow).toBe(400000) + expect(modelInfo.info.supportsReasoningEffort).toEqual(["low", "medium", "high", "xhigh"]) + }) + it("should handle undefined model ID", () => { const handlerWithoutModel = new OpenAiNativeHandler({ openAiNativeApiKey: "test-api-key", From 522ef43a520ee2642c73a62cc400c8de132cebd9 Mon Sep 17 00:00:00 2001 From: Hannes Rudolph Date: Tue, 24 Feb 2026 14:25:28 -0700 Subject: [PATCH 2/3] chore: add changeset for GPT-5.3-Codex support --- .changeset/gpt-5-3-codex.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/gpt-5-3-codex.md diff --git a/.changeset/gpt-5-3-codex.md b/.changeset/gpt-5-3-codex.md new file mode 100644 index 00000000000..8b40d2a2ca8 --- /dev/null +++ b/.changeset/gpt-5-3-codex.md @@ -0,0 +1,5 @@ +--- +"roo-cline": patch +--- + +Add OpenAI's GPT-5.3-Codex model support From 2e68a13cf7d24b599b14badc04286b29c8705c17 Mon Sep 17 00:00:00 2001 From: Robot Tom Date: Tue, 24 Feb 2026 14:30:45 -0700 Subject: [PATCH 3/3] fix: rename CodeAccordian to CodeAccordion in FileChangesPanel --- webview-ui/src/__tests__/FileChangesPanel.spec.tsx | 2 +- webview-ui/src/components/chat/FileChangesPanel.tsx | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/webview-ui/src/__tests__/FileChangesPanel.spec.tsx b/webview-ui/src/__tests__/FileChangesPanel.spec.tsx index 9c5535fb7b3..2208bc127d1 100644 --- a/webview-ui/src/__tests__/FileChangesPanel.spec.tsx +++ b/webview-ui/src/__tests__/FileChangesPanel.spec.tsx @@ -25,7 +25,7 @@ vi.mock("react-i18next", () => ({ })) // Lightweight mock so we don't pull in CodeBlock/DiffView -vi.mock("@src/components/common/CodeAccordian", () => ({ +vi.mock("@src/components/common/CodeAccordion", () => ({ default: ({ path, isExpanded, diff --git a/webview-ui/src/components/chat/FileChangesPanel.tsx b/webview-ui/src/components/chat/FileChangesPanel.tsx index 7dec194e0c0..044585efe15 100644 --- a/webview-ui/src/components/chat/FileChangesPanel.tsx +++ b/webview-ui/src/components/chat/FileChangesPanel.tsx @@ -10,7 +10,7 @@ import { cn } from "@/lib/utils" import { vscode } from "@src/utils/vscode" import { fileChangesFromMessages, type FileChangeEntry } from "./utils/fileChangesFromMessages" -import CodeAccordian from "../common/CodeAccordian" +import CodeAccordion from "../common/CodeAccordion" interface FileChangesPanelProps { clineMessages: ClineMessage[] | undefined @@ -151,7 +151,7 @@ const FileChangesPanel = memo(({ clineMessages, className }: FileChangesPanelPro const isExpanded = expandedPaths.has(path) return (
-