From bc501bd1a405267466048f5b5142639cdd6cfab3 Mon Sep 17 00:00:00 2001 From: "paseo-bot[bot]" <266920839+paseo-bot[bot]@users.noreply.github.com> Date: Mon, 2 Nov 2026 18:08:28 +0000 Subject: [PATCH] fix(codex): name the file in patch approvals The approval detail renderer shows the diff without its filePath. Include the file in the approval title so the pending decision identifies the change being reviewed. Co-authored-by: Okan YILDIRIM <63511519+ragokan@users.noreply.github.com> --- .../providers/codex-app-server-agent.test.ts | 2 +- .../agent/providers/codex-app-server-agent.ts | 28 +++++++++++-------- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/packages/server/src/server/agent/providers/codex-app-server-agent.test.ts b/packages/server/src/server/agent/providers/codex-app-server-agent.test.ts index a73ff0c490..b56999c4fb 100644 --- a/packages/server/src/server/agent/providers/codex-app-server-agent.test.ts +++ b/packages/server/src/server/agent/providers/codex-app-server-agent.test.ts @@ -267,7 +267,7 @@ describe("Codex file-change approvals", () => { provider: "codex", name: "CodexFileChange", kind: "tool", - title: "Apply file changes", + title: "Apply file changes: alpha.txt", description: "Apply the patch", detail: { type: "edit", 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 86f7eb073b..473a38738e 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 @@ -6781,6 +6781,10 @@ export class CodexAppServerAgentSession implements AgentSession { return !this.closed && this.activeForegroundTurnId === turnId; } + private forgetPendingToolCallDetail(itemId: string | null | undefined): void { + if (itemId) this.pendingToolCallDetails.delete(itemId); + } + private async handleItemCompletedNotification( parsed: Extract, ): Promise { @@ -6792,9 +6796,7 @@ export class CodexAppServerAgentSession implements AgentSession { if (shouldIgnoreMirroredLifecycleItem(parsed.source, parsed.item)) { return; } - if (parsed.item.id) { - this.pendingToolCallDetails.delete(parsed.item.id); - } + this.forgetPendingToolCallDetail(parsed.item.id); this.receiveAsyncQuestion(parsed.threadId, parsed.item); if (this.isUserMessageItem(parsed.item)) { await this.handleUserMessageItem(parsed); @@ -7270,20 +7272,24 @@ export class CodexAppServerAgentSession implements AgentSession { }) .parse(params); const requestId = `permission-${parsed.itemId}`; + const detail: ToolCallTimelineItem["detail"] = this.pendingToolCallDetails.get( + parsed.itemId, + ) ?? { + type: "unknown", + input: { reason: parsed.reason ?? null }, + output: null, + }; const request: AgentPermissionRequest = { id: requestId, provider: CODEX_PROVIDER, name: "CodexFileChange", kind: "tool", - title: "Apply file changes", + title: + detail.type === "edit" && detail.filePath + ? `Apply file changes: ${detail.filePath}` + : "Apply file changes", description: parsed.reason ?? undefined, - detail: this.pendingToolCallDetails.get(parsed.itemId) ?? { - type: "unknown", - input: { - reason: parsed.reason ?? null, - }, - output: null, - }, + detail, metadata: { itemId: parsed.itemId, threadId: parsed.threadId,