From 8d65b95a59519016682e7865e94415fec7c0aec2 Mon Sep 17 00:00:00 2001 From: Alex Newman Date: Wed, 6 May 2026 14:39:42 -0700 Subject: [PATCH] fix: narrow legacy codex context cleanup --- .../integrations/CodexCliInstaller.ts | 25 ++++++++++++++++++- src/services/transcripts/config.ts | 3 +-- transcript-watch.example.json | 3 +-- 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/src/services/integrations/CodexCliInstaller.ts b/src/services/integrations/CodexCliInstaller.ts index 3e6f4210..485d52cf 100644 --- a/src/services/integrations/CodexCliInstaller.ts +++ b/src/services/integrations/CodexCliInstaller.ts @@ -182,6 +182,29 @@ function isCodexTranscriptWatch(watch: Record): boolean { return watch.name === 'codex' || watch.schema === 'codex'; } +function expandHome(inputPath: string): string { + if (inputPath === '~') return homedir(); + if (inputPath.startsWith('~/') || inputPath.startsWith('~\\')) { + return path.join(homedir(), inputPath.slice(2)); + } + return inputPath; +} + +function isLegacyCodexAgentsContext(context: Record): boolean { + if (context.mode !== 'agents') return false; + + const updateOn = context.updateOn; + const hasLegacyUpdateOn = Array.isArray(updateOn) + && updateOn.length === 2 + && updateOn.includes('session_start') + && updateOn.includes('session_end'); + if (!hasLegacyUpdateOn) return false; + + if (context.path === undefined) return true; + return typeof context.path === 'string' + && path.resolve(expandHome(context.path)) === CODEX_AGENTS_MD_PATH; +} + function disableCodexTranscriptAgentsContext(): boolean { if (!existsSync(CODEX_TRANSCRIPT_WATCH_CONFIG_PATH)) return true; @@ -192,7 +215,7 @@ function disableCodexTranscriptAgentsContext(): boolean { let changed = false; for (const watch of parsed.watches) { if (!isRecord(watch) || !isCodexTranscriptWatch(watch)) continue; - if (!isRecord(watch.context) || watch.context.mode !== 'agents') continue; + if (!isRecord(watch.context) || !isLegacyCodexAgentsContext(watch.context)) continue; delete watch.context; changed = true; } diff --git a/src/services/transcripts/config.ts b/src/services/transcripts/config.ts index f821b9bc..2a2f31f0 100644 --- a/src/services/transcripts/config.ts +++ b/src/services/transcripts/config.ts @@ -54,8 +54,7 @@ const CODEX_SAMPLE_SCHEMA: TranscriptSchema = { toolName: { coalesce: [ 'payload.name', - 'payload.type', - { value: 'web_search' } + 'payload.type' ] }, toolInput: { diff --git a/transcript-watch.example.json b/transcript-watch.example.json index 13f1e0e9..e694be7b 100644 --- a/transcript-watch.example.json +++ b/transcript-watch.example.json @@ -48,8 +48,7 @@ "toolName": { "coalesce": [ "payload.name", - "payload.type", - { "value": "web_search" } + "payload.type" ] }, "toolInput": {