From 3edc717873eaad94676bf004cf74c539e1231e98 Mon Sep 17 00:00:00 2001 From: Jio Kim Date: Thu, 30 Apr 2026 13:10:34 +0900 Subject: [PATCH] fix(mcp): skip base64 image response when filename param is provided When browser_take_screenshot is called with an explicit filename, the screenshot is saved to disk but the raw image buffer was still registered in the MCP response, embedding up to 1 MB of base64 into the LLM context. Only call registerImageResult() when no filename was supplied, preserving the current behaviour for inline visual analysis while eliminating the redundant payload for file-save calls. Fixes https://github.com/microsoft/playwright-mcp/issues/1581 --- packages/playwright-core/src/tools/backend/screenshot.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/playwright-core/src/tools/backend/screenshot.ts b/packages/playwright-core/src/tools/backend/screenshot.ts index 71342abc9e0c0..d2aeea504a2d3 100644 --- a/packages/playwright-core/src/tools/backend/screenshot.ts +++ b/packages/playwright-core/src/tools/backend/screenshot.ts @@ -67,7 +67,8 @@ const screenshot = defineTabTool({ response.addCode(`await page.screenshot(${formatObject({ ...options, path: resolvedFile.relativeName })});`); await response.addFileResult(resolvedFile, data); - await response.registerImageResult(data, fileType); + if (!params.filename) + await response.registerImageResult(data, fileType); } });