Skip to content

fix(mcp): skip base64 image response when filename is explicitly provided to browser_take_screenshot#40577

Draft
Copilot wants to merge 2 commits intomainfrom
copilot/fix-screenshot-base64-response
Draft

fix(mcp): skip base64 image response when filename is explicitly provided to browser_take_screenshot#40577
Copilot wants to merge 2 commits intomainfrom
copilot/fix-screenshot-base64-response

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented May 1, 2026

When browser_take_screenshot is called with an explicit filename, the screenshot was saved to disk and also embedded as base64 in the MCP response — a redundant payload that can consume 70–80% of an LLM's context window for a single screenshot.

Changes

  • screenshot.ts: Guard registerImageResult behind !params.filename — image is only embedded in the MCP response when the caller did not provide an explicit destination filename.
await response.addFileResult(resolvedFile, data);
if (!params.filename)
  await response.registerImageResult(data, fileType);
  • screenshot.spec.ts: Updated browser_take_screenshot (filename: "output.png") test to expect only a text result (no image attachment) when an explicit filename is provided.

Behavior

filename param Image in MCP response
omitted ✅ included (LLM can see it)
'' (empty string) ✅ included (treated as auto-generate)
"output.png" ❌ omitted (file saved to disk only)

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • accounts.google.com
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --disable-dev-shm-usage --use-angle=swiftshader-webgl --mute-audio --crashpad-handler-pid=8030 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/home/REDACTED/work/playwright/playwright/test-results/screenshot-browser-take-screenshot-element--chrome/ms-playwright/mcp-chrome-84785ae --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,16395666331397327551,10646199456832461908,262144 --enable-features=CDPScreenshotNewSurface --disable-features=AutoDeElevate,AvoidUnnecessaryBeforeUnloadCheckSync,BoundaryEventDispatchTracksNodeRemoval,DestroyProfileOnBrowserClose,DialMediaRouteProvider,GlobalMediaControls,HttpsUpgrades,LensOverlay,MediaRouter,OptimizationHints,PaintHolding,Rend (dns block)
    • Triggering command: /opt/google/chrome/chrome /opt/google/chrome/chrome --disable-field-trial-config --disable-REDACTED-networking --disable-REDACTED-timer-throttling --disable-REDACTEDing-occluded-windows --disable-back-forward-cache --disable-breakpad --disable-client-side-phishing-detection --disable-component-extensions-with-REDACTED-pages --disable-component-update --no-default-browser-check --disable-default-apps --disable-dev-shm-usage --disable-edgeupdater --disable-features=AvoidUnnecessaryBeforeUnloadCheckSync,BoundaryEventDispatchTracksNodeRemoval,DestroyProfileOnBrowserClose,DialMediaRouteProvider,GlobalMediaControls,HttpsUpgrades,LensOverlay,MediaRouter,PaintHolding,ThirdPartyStoragePartitioning,Transl (dns block)
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --disable-dev-shm-usage --use-angle=swiftshader-webgl --mute-audio --crashpad-handler-pid=8031 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/home/REDACTED/work/playwright/playwright/test-results/screenshot-browser-take-screenshot-viewport--chrome/ms-playwright/mcp-chrome-965a9ec --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,3823535755795048791,9872173523762485258,262144 --enable-features=CDPScreenshotNewSurface --disable-features=AutoDeElevate,AvoidUnnecessaryBeforeUnloadCheckSync,BoundaryEventDispatchTracksNodeRemoval,DestroyProfileOnBrowserClose,DialMediaRouteProvider,GlobalMediaControls,HttpsUpgrades,LensOverlay,MediaRouter,OptimizationHints,PaintHolding,Rend (dns block)
  • clients2.google.com
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --disable-dev-shm-usage --use-angle=swiftshader-webgl --mute-audio --crashpad-handler-pid=8031 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/home/REDACTED/work/playwright/playwright/test-results/screenshot-browser-take-screenshot-viewport--chrome/ms-playwright/mcp-chrome-965a9ec --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,3823535755795048791,9872173523762485258,262144 --enable-features=CDPScreenshotNewSurface --disable-features=AutoDeElevate,AvoidUnnecessaryBeforeUnloadCheckSync,BoundaryEventDispatchTracksNodeRemoval,DestroyProfileOnBrowserClose,DialMediaRouteProvider,GlobalMediaControls,HttpsUpgrades,LensOverlay,MediaRouter,OptimizationHints,PaintHolding,Rend (dns block)
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --disable-dev-shm-usage --use-angle=swiftshader-webgl --mute-audio --crashpad-handler-pid=8030 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/home/REDACTED/work/playwright/playwright/test-results/screenshot-browser-take-screenshot-element--chrome/ms-playwright/mcp-chrome-84785ae --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,16395666331397327551,10646199456832461908,262144 --enable-features=CDPScreenshotNewSurface --disable-features=AutoDeElevate,AvoidUnnecessaryBeforeUnloadCheckSync,BoundaryEventDispatchTracksNodeRemoval,DestroyProfileOnBrowserClose,DialMediaRouteProvider,GlobalMediaControls,HttpsUpgrades,LensOverlay,MediaRouter,OptimizationHints,PaintHolding,Rend (dns block)
    • Triggering command: /opt/google/chrome/chrome /opt/google/chrome/chrome --disable-field-trial-config --disable-REDACTED-networking --disable-REDACTED-timer-throttling --disable-REDACTEDing-occluded-windows --disable-back-forward-cache --disable-breakpad --disable-client-side-phishing-detection --disable-component-extensions-with-REDACTED-pages --disable-component-update --no-default-browser-check --disable-default-apps --disable-dev-shm-usage --disable-edgeupdater --disable-features=AvoidUnnecessaryBeforeUnloadCheckSync,BoundaryEventDispatchTracksNodeRemoval,DestroyProfileOnBrowserClose,DialMediaRouteProvider,GlobalMediaControls,HttpsUpgrades,LensOverlay,MediaRouter,PaintHolding,ThirdPartyStoragePartitioning,Transl (dns block)
  • safebrowsingohttpgateway.googleapis.com
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --disable-dev-shm-usage --use-angle=swiftshader-webgl --mute-audio --crashpad-handler-pid=8030 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/home/REDACTED/work/playwright/playwright/test-results/screenshot-browser-take-screenshot-element--chrome/ms-playwright/mcp-chrome-84785ae --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,16395666331397327551,10646199456832461908,262144 --enable-features=CDPScreenshotNewSurface --disable-features=AutoDeElevate,AvoidUnnecessaryBeforeUnloadCheckSync,BoundaryEventDispatchTracksNodeRemoval,DestroyProfileOnBrowserClose,DialMediaRouteProvider,GlobalMediaControls,HttpsUpgrades,LensOverlay,MediaRouter,OptimizationHints,PaintHolding,Rend (dns block)
    • Triggering command: /opt/google/chrome/chrome /opt/google/chrome/chrome --disable-field-trial-config --disable-REDACTED-networking --disable-REDACTED-timer-throttling --disable-REDACTEDing-occluded-windows --disable-back-forward-cache --disable-breakpad --disable-client-side-phishing-detection --disable-component-extensions-with-REDACTED-pages --disable-component-update --no-default-browser-check --disable-default-apps --disable-dev-shm-usage --disable-edgeupdater --disable-features=AvoidUnnecessaryBeforeUnloadCheckSync,BoundaryEventDispatchTracksNodeRemoval,DestroyProfileOnBrowserClose,DialMediaRouteProvider,GlobalMediaControls,HttpsUpgrades,LensOverlay,MediaRouter,PaintHolding,ThirdPartyStoragePartitioning,Transl (dns block)
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --disable-dev-shm-usage --use-angle=swiftshader-webgl --mute-audio --crashpad-handler-pid=8031 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/home/REDACTED/work/playwright/playwright/test-results/screenshot-browser-take-screenshot-viewport--chrome/ms-playwright/mcp-chrome-965a9ec --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,3823535755795048791,9872173523762485258,262144 --enable-features=CDPScreenshotNewSurface --disable-features=AutoDeElevate,AvoidUnnecessaryBeforeUnloadCheckSync,BoundaryEventDispatchTracksNodeRemoval,DestroyProfileOnBrowserClose,DialMediaRouteProvider,GlobalMediaControls,HttpsUpgrades,LensOverlay,MediaRouter,OptimizationHints,PaintHolding,Rend (dns block)
  • www.google.com
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --disable-dev-shm-usage --use-angle=swiftshader-webgl --mute-audio --crashpad-handler-pid=8030 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/home/REDACTED/work/playwright/playwright/test-results/screenshot-browser-take-screenshot-element--chrome/ms-playwright/mcp-chrome-84785ae --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,16395666331397327551,10646199456832461908,262144 --enable-features=CDPScreenshotNewSurface --disable-features=AutoDeElevate,AvoidUnnecessaryBeforeUnloadCheckSync,BoundaryEventDispatchTracksNodeRemoval,DestroyProfileOnBrowserClose,DialMediaRouteProvider,GlobalMediaControls,HttpsUpgrades,LensOverlay,MediaRouter,OptimizationHints,PaintHolding,Rend (dns block)
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --disable-dev-shm-usage --use-angle=swiftshader-webgl --mute-audio --crashpad-handler-pid=8031 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/home/REDACTED/work/playwright/playwright/test-results/screenshot-browser-take-screenshot-viewport--chrome/ms-playwright/mcp-chrome-965a9ec --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,3823535755795048791,9872173523762485258,262144 --enable-features=CDPScreenshotNewSurface --disable-features=AutoDeElevate,AvoidUnnecessaryBeforeUnloadCheckSync,BoundaryEventDispatchTracksNodeRemoval,DestroyProfileOnBrowserClose,DialMediaRouteProvider,GlobalMediaControls,HttpsUpgrades,LensOverlay,MediaRouter,OptimizationHints,PaintHolding,Rend (dns block)
    • Triggering command: /opt/google/chrome/chrome /opt/google/chrome/chrome --disable-field-trial-config --disable-REDACTED-networking --disable-REDACTED-timer-throttling --disable-REDACTEDing-occluded-windows --disable-back-forward-cache --disable-breakpad --disable-client-side-phishing-detection --disable-component-extensions-with-REDACTED-pages --disable-component-update --no-default-browser-check --disable-default-apps --disable-dev-shm-usage --disable-edgeupdater --disable-features=AvoidUnnecessaryBeforeUnloadCheckSync,BoundaryEventDispatchTracksNodeRemoval,DestroyProfileOnBrowserClose,DialMediaRouteProvider,GlobalMediaControls,HttpsUpgrades,LensOverlay,MediaRouter,PaintHolding,ThirdPartyStoragePartitioning,Transl (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

…ided for browser_take_screenshot

Agent-Logs-Url: https://github.com/microsoft/playwright/sessions/c5b0b096-f441-411a-9107-44373adcb55f

Co-authored-by: yury-s <9798949+yury-s@users.noreply.github.com>
Copilot AI changed the title [WIP] Fix MCP response to exclude base64 image when filename is provided fix(mcp): skip base64 image response when filename is explicitly provided to browser_take_screenshot May 1, 2026
Copilot finished work on behalf of yury-s May 1, 2026 22:45
Copilot AI requested a review from yury-s May 1, 2026 22:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

browser_take_screenshot: image still returned as base64 in MCP response when filename param is provided

2 participants