Skip to content
10 changes: 4 additions & 6 deletions apps/server/src/orchestration-v2/Adapters/CodexAdapterV2.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -640,12 +640,10 @@ describe("CodexAdapterV2 process spawning", () => {
model: "gpt-5.4",
config: {
"tools.update_plan.enabled": true,
mcp_servers: {
"t3-code": {
url: "http://127.0.0.1:43123/mcp",
http_headers: {
Authorization: "Bearer secret-codex-token",
},
"mcp_servers.t3-code": {
url: "http://127.0.0.1:43123/mcp",
http_headers: {
Authorization: "Bearer secret-codex-token",
},
},
},
Expand Down
12 changes: 6 additions & 6 deletions apps/server/src/orchestration-v2/Adapters/CodexAdapterV2.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1216,12 +1216,12 @@ export function codexThreadRuntimeParams(input: {
...(mcpSession === undefined
? {}
: {
mcp_servers: {
"t3-code": {
url: mcpSession.endpoint,
http_headers: {
Authorization: mcpSession.authorizationHeader,
},
// Dotted key: thread config shares Codex's `-c` override layer, so a
// whole `mcp_servers` table would replace servers added by launch args.
"mcp_servers.t3-code": {
url: mcpSession.endpoint,
http_headers: {
Authorization: mcpSession.authorizationHeader,
},
},
}),
Expand Down
6 changes: 5 additions & 1 deletion packages/effect-codex-app-server/src/replay.ts
Original file line number Diff line number Diff line change
Expand Up @@ -273,7 +273,11 @@ function normalizeThreadRequest(frame: unknown, ignoredConfigKeys: ReadonlySet<s
}
const { cwd: _cwd, model: _model, config, ...params } = record.params as Record<string, unknown>;
if (typeof config !== "object" || config === null) return { ...record, params };
const { mcp_servers: _mcpServers, ...owned } = config as Record<string, unknown>;
const owned = Object.fromEntries(
Object.entries(config as Record<string, unknown>).filter(
([key]) => key !== "mcp_servers" && !key.startsWith("mcp_servers."),
),
);
for (const key of ignoredConfigKeys) delete owned[key];
return { ...record, params: { ...params, config: owned } };
}
Expand Down
Loading