From f07f3f320b12937f2ed4dc4b5071f3fe1dcacdba Mon Sep 17 00:00:00 2001 From: Andrey Avtomonov Date: Mon, 1 Jun 2026 17:41:20 +0200 Subject: [PATCH] fix: tighten codex runtime config ownership --- packages/cli/src/context/llm/codex-runtime-config.ts | 8 ++------ packages/cli/src/context/llm/codex-runtime.ts | 10 +++++++--- .../cli/test/context/llm/codex-runtime-config.test.ts | 10 +--------- packages/cli/test/context/llm/codex-runtime.test.ts | 2 +- 4 files changed, 11 insertions(+), 19 deletions(-) diff --git a/packages/cli/src/context/llm/codex-runtime-config.ts b/packages/cli/src/context/llm/codex-runtime-config.ts index 11b27b1d..70498cc5 100644 --- a/packages/cli/src/context/llm/codex-runtime-config.ts +++ b/packages/cli/src/context/llm/codex-runtime-config.ts @@ -12,18 +12,14 @@ export interface BuildCodexRuntimeConfigInput { export interface CodexRuntimeConfig { configOverrides: Record; - env: NodeJS.ProcessEnv; + env: Record; } export function buildCodexRuntimeConfig(input: BuildCodexRuntimeConfigInput): CodexRuntimeConfig { const configOverrides: Record = { - model: input.model, - approval_policy: 'never', - sandbox_mode: 'read-only', - web_search: 'disabled', history: { persistence: 'none' }, }; - const env: NodeJS.ProcessEnv = {}; + const env: Record = {}; if (input.mcp) { configOverrides.mcp_servers = { diff --git a/packages/cli/src/context/llm/codex-runtime.ts b/packages/cli/src/context/llm/codex-runtime.ts index a0e32035..bea17ee0 100644 --- a/packages/cli/src/context/llm/codex-runtime.ts +++ b/packages/cli/src/context/llm/codex-runtime.ts @@ -79,6 +79,10 @@ async function mcpForTools(input: { }); } +function runtimeToolNames(toolSet: KtxRuntimeToolSet | undefined): string[] { + return Object.values(toolSet ?? {}).map((descriptor) => descriptor.name); +} + export class CodexKtxLlmRuntime implements KtxLlmRuntimePort { private readonly runner: CodexSdkRunner; private readonly logger: KtxLogger; @@ -105,7 +109,7 @@ export class CodexKtxLlmRuntime implements KtxLlmRuntimePort { url: mcp.url, bearerTokenEnvVar: mcp.bearerTokenEnvVar, bearerToken: mcp.bearerToken, - toolNames: Object.keys(input.tools ?? {}), + toolNames: runtimeToolNames(input.tools), }, } : {}), @@ -146,7 +150,7 @@ export class CodexKtxLlmRuntime implements KtxLlmRuntimePort { url: mcp.url, bearerTokenEnvVar: mcp.bearerTokenEnvVar, bearerToken: mcp.bearerToken, - toolNames: Object.keys(input.tools ?? {}), + toolNames: runtimeToolNames(input.tools), }, } : {}), @@ -187,7 +191,7 @@ export class CodexKtxLlmRuntime implements KtxLlmRuntimePort { url: mcp.url, bearerTokenEnvVar: mcp.bearerTokenEnvVar, bearerToken: mcp.bearerToken, - toolNames: Object.keys(params.toolSet), + toolNames: runtimeToolNames(params.toolSet), }, } : {}), diff --git a/packages/cli/test/context/llm/codex-runtime-config.test.ts b/packages/cli/test/context/llm/codex-runtime-config.test.ts index 5e69de3a..464a0abf 100644 --- a/packages/cli/test/context/llm/codex-runtime-config.test.ts +++ b/packages/cli/test/context/llm/codex-runtime-config.test.ts @@ -2,13 +2,9 @@ import { describe, expect, it } from 'vitest'; import { buildCodexRuntimeConfig } from '../../../src/context/llm/codex-runtime-config.js'; describe('buildCodexRuntimeConfig', () => { - it('builds deny-by-default config without MCP tools', () => { + it('builds generic config without SDK thread-option fields', () => { expect(buildCodexRuntimeConfig({ model: 'gpt-5.3-codex' })).toEqual({ configOverrides: { - model: 'gpt-5.3-codex', - approval_policy: 'never', - sandbox_mode: 'read-only', - web_search: 'disabled', history: { persistence: 'none' }, }, env: {}, @@ -28,10 +24,6 @@ describe('buildCodexRuntimeConfig', () => { }), ).toEqual({ configOverrides: { - model: 'gpt-5.3-codex', - approval_policy: 'never', - sandbox_mode: 'read-only', - web_search: 'disabled', history: { persistence: 'none' }, mcp_servers: { ktx: { diff --git a/packages/cli/test/context/llm/codex-runtime.test.ts b/packages/cli/test/context/llm/codex-runtime.test.ts index af9f663b..3218ca5f 100644 --- a/packages/cli/test/context/llm/codex-runtime.test.ts +++ b/packages/cli/test/context/llm/codex-runtime.test.ts @@ -119,7 +119,7 @@ describe('CodexKtxLlmRuntime', () => { telemetryTags: {}, onStepFinish, toolSet: { - wiki_search: { + aliased_wiki_tool: { name: 'wiki_search', description: 'Search wiki', inputSchema: z.object({ query: z.string() }),