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", () => {
29702970 });
29712971 });
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 () => {
29742974 const harness = await createHarness();
29752975 const now = "2026-01-01T00:00:00.000Z";
29762976 harness.respondToRequest.mockImplementation(() =>
29772977 Effect.fail(
29782978 new ProviderAdapterRequestError({
29792979 provider: ProviderDriverKind.make("codex"),
2980 method: "session/request_permission",
2981 detail: "Unknown pending permission request: approval-request-1",
2980 method: "item/requestApproval/decision",
2981 detail: "Unknown pending Codex approval request: approval-request-1",
29822982 }),
29832983 ),
29842984 );
apps/server/src/orchestration/Layers/ProviderCommandReactor.ts+5-3
......@@ -241,13 +241,15 @@ function isUnknownPendingApprovalRequestError(cause: Cause.Cause<ProviderService
241241 const detail = error.detail.toLowerCase();
242242 return (
243243 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")
245246 );
246247 }
247 const message = Cause.pretty(cause);
248 const message = Cause.pretty(cause).toLowerCase();
248249 return (
249250 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")
251253 );
252254}
253255