authorgravatar for gitlucky@pipelab.orgJosh <gitlucky@pipelab.org> 2026-08-27 03:27:28-04:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2026-08-27 00:27:28-07:00
log230c5d4a5cc31656de3d46719e7f4d2a13369991
tree399cdced41085d3025d4766b0eebe71956b0367a
parentead4ce52a1624d9c55461f61524580978fc8b719
signature Signed by PGP key B5690EEEBB952194

fix(server): recover stale Codex approval callbacks (#5195)


2 files changed, 8 insertions(+), 6 deletions(-)

apps/server/src/orchestration/Layers/ProviderCommandReactor.test.ts+3-3
...@@ -2970,15 +2970,15 @@ describe("ProviderCommandReactor", () => {...@@ -2970,15 +2970,15 @@ describe("ProviderCommandReactor", () => {
2970 });2970 });
2971 });2971 });
29722972
2973 it("surfaces stale provider approval request failures without faking approval resolution", async () => {2973 it("normalizes stale Codex approval callbacks without faking approval resolution", async () => {
2974 const harness = await createHarness();2974 const harness = await createHarness();
2975 const now = "2026-01-01T00:00:00.000Z";2975 const now = "2026-01-01T00:00:00.000Z";
2976 harness.respondToRequest.mockImplementation(() =>2976 harness.respondToRequest.mockImplementation(() =>
2977 Effect.fail(2977 Effect.fail(
2978 new ProviderAdapterRequestError({2978 new ProviderAdapterRequestError({
2979 provider: ProviderDriverKind.make("codex"),2979 provider: ProviderDriverKind.make("codex"),
2980 method: "session/request_permission",2980 method: "item/requestApproval/decision",
2981 detail: "Unknown pending permission request: approval-request-1",2981 detail: "Unknown pending Codex approval request: approval-request-1",
2982 }),2982 }),
2983 ),2983 ),
2984 );2984 );
apps/server/src/orchestration/Layers/ProviderCommandReactor.ts+5-3
...@@ -241,13 +241,15 @@ function isUnknownPendingApprovalRequestError(cause: Cause.Cause<ProviderService...@@ -241,13 +241,15 @@ function isUnknownPendingApprovalRequestError(cause: Cause.Cause<ProviderService
241 const detail = error.detail.toLowerCase();241 const detail = error.detail.toLowerCase();
242 return (242 return (
243 detail.includes("unknown pending approval request") ||243 detail.includes("unknown pending approval request") ||
244 detail.includes("unknown pending permission request")244 detail.includes("unknown pending permission request") ||
245 detail.includes("unknown pending codex approval request")
245 );246 );
246 }247 }
247 const message = Cause.pretty(cause);248 const message = Cause.pretty(cause).toLowerCase();
248 return (249 return (
249 message.includes("unknown pending approval request") ||250 message.includes("unknown pending approval request") ||
250 message.includes("unknown pending permission request")251 message.includes("unknown pending permission request") ||
252 message.includes("unknown pending codex approval request")
251 );253 );
252}254}
253255