From 1f96b2729d048b86157589b8190e250451a130bd Mon Sep 17 00:00:00 2001 From: Pablo Borges <90059865+pablo-ibco@users.noreply.github.com> Date: Wed, 8 Apr 2026 13:20:59 -0300 Subject: [PATCH] fix: sanitize error responses to prevent internal detail leakage The fallback 500 error handler was sending raw error messages to clients, potentially exposing database errors, driver messages, or other internal details. The OpenAI error handler was also forwarding response headers from the upstream API. Errors are still fully logged server-side via the existing logger.error() call. --- app/src/util/api.ts | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/app/src/util/api.ts b/app/src/util/api.ts index c1b2ca45be..48e8d9ed6a 100644 --- a/app/src/util/api.ts +++ b/app/src/util/api.ts @@ -466,17 +466,14 @@ function errorHandler(err: unknown, _req: NextRequest) { { status: 400 }, ); } else if (err instanceof OpenAI.APIError) { - const { name, status, headers, message } = err; - return NextResponse.json({ name, status, headers, message }, { status }); + const { name, status, message } = err; + return NextResponse.json( + { error: { name, message } }, + { status: status ?? 500 }, + ); } else { - let errorMessage = "Unknown error"; - if ((err as Object).hasOwnProperty("message")) { - errorMessage = (err as Error).message; - } else if (err instanceof Error) { - errorMessage = (err as Object).toString(); - } return NextResponse.json( - { error: { message: "Internal server error", error: errorMessage } }, + { error: { message: "Internal server error" } }, { status: 500 }, ); }