Skip to content

Computer Use screenshot capture fails on Windows 10 Boot Camp with SetIsBorderRequired E_NOINTERFACE (0x80004002) #38271

Description

@willyansete7

What issue are you seeing?

Summary

Computer Use cannot capture screenshots on Windows 10 22H2 running through Apple Boot Camp.

Application and window enumeration works correctly, but every get_window_state request that includes a screenshot fails with:

SetIsBorderRequired failed: No such interface supported (0x80004002)

The problem is reproducible with ordinary Windows applications, including the Windows Settings app. It is therefore not specific to a particular application, game, rendering engine, fullscreen mode, or third-party modification.

This prevents Computer Use from visually inspecting any window or safely performing coordinate-based interactions.

Environment

  • Platform: Codex Desktop for Windows
  • Operating system: Windows 10 22H2
  • OS build family: 19045
  • Installation environment: Apple Boot Camp
  • Computer Use plugin: 26.803.81509
  • Target applications tested:
    • Windows Settings
    • Standard desktop applications
    • Hardware-accelerated applications

Windows 11 is not a practical workaround because the affected computer runs Windows through Boot Camp, for which Windows 10 is the normally supported configuration on this hardware.

What steps can reproduce the bug?

Steps to reproduce

  1. Start Codex Desktop on Windows 10 22H2.
  2. Enable or invoke the Computer Use plugin.
  3. List available applications:
const apps = await sky.list_apps();
  1. Select a window returned by list_apps(). For example, select the Windows Settings window.
  2. Rehydrate the returned window:
const targetWindow = await sky.get_window({
  id: returnedWindow.id,
  app: returnedWindow.app,
});
  1. Request a screenshot-backed window state:
await sky.get_window_state({
  window: targetWindow,
  include_screenshot: true,
  include_text: false,
});
  1. The request fails before returning a screenshot.

The same failure occurs with the default screenshot request:

await sky.get_window_state({
  window: targetWindow,
});

What is the expected behavior?

Actual behavior

Every screenshot-enabled state request fails with:

SetIsBorderRequired failed: No such interface supported (0x80004002)

No screenshot or screenshot ID is returned.

Computer Use can still:

  • list installed and running applications;
  • enumerate open windows;
  • return valid window IDs, process identifiers, and titles;
  • select and rehydrate a target window;
  • use portions of the non-visual accessibility path.

Computer Use cannot:

  • capture the selected window;
  • visually inspect its contents;
  • derive reliable coordinates;
  • safely perform screenshot-based clicks, scrolling, or dragging;
  • verify the result of a visual interaction.

Computer Use should detect whether GraphicsCaptureSession.IsBorderRequired is supported before attempting to set it.

If the property is unavailable, Computer Use should either:

  1. continue without modifying the capture-border setting; or
  2. use a compatible screenshot fallback.

An unsupported optional border property should not abort the entire screenshot request.

Expected behavior

Computer Use should detect whether GraphicsCaptureSession.IsBorderRequired is supported before attempting to set it.

If the property is unavailable, Computer Use should either:

  1. continue without modifying the capture-border setting; or
  2. use a compatible screenshot fallback.

An unsupported optional border property should not abort the entire screenshot request.

Additional information

Troubleshooting already performed

The following tests did not change the result:

  • Restarted Codex Desktop.
  • Restarted the target applications.
  • Performed a complete Windows reboot.
  • Disabled third-party overlays.
  • Tested multiple unrelated applications.
  • Tested the standard Windows Settings application.
  • Tested foreground and background windows.
  • Ensured Codex and the target applications were running at the same privilege level.
  • Disabled fullscreen behavior and fullscreen optimizations where applicable.
  • Removed application-specific modifications from the test environment.
  • Confirmed that Computer Use still enumerates applications and windows correctly.

Because Windows Settings produces the same error, the failure appears to be inside the Computer Use screenshot implementation rather than the target application.

Suspected cause

The behavior is consistent with Computer Use calling:

GraphicsCaptureSession.IsBorderRequired

on a Windows version whose available API contract does not expose that property.

Windows then returns:

E_NOINTERFACE (0x80004002)

The screenshot implementation appears to treat this optional-property failure as fatal instead of continuing without changing the capture border.

This also explains why enumeration and non-visual operations remain functional while every screenshot-enabled request fails immediately.

Suggested fix

At minimum, Computer Use should check for property support before calling SetIsBorderRequired.

For example, the implementation could use an API availability check equivalent to:

ApiInformation.IsPropertyPresent(
    "Windows.Graphics.Capture.GraphicsCaptureSession",
    "IsBorderRequired"
)

If unavailable, it should skip the border-setting call and continue with the default capture-border behavior.

For more robust Windows 10 support, the capture pipeline could operate as follows:

  1. Attempt the normal Windows Graphics Capture path.
  2. Skip SetIsBorderRequired when the property is unavailable.
  3. If Windows Graphics Capture fails or times out, fall back to PrintWindow with PW_RENDERFULLCONTENT.
  4. If PrintWindow returns an empty or black frame, fall back to BitBlt with SRCCOPY | CAPTUREBLT.
  5. Return the fallback image through the normal Computer Use screenshot interface.
  6. Synchronize the native input state before performing coordinate actions based on a fallback screenshot.
  7. Ensure temporary fallback screenshot IDs are not passed incorrectly to components that only recognize native screenshot IDs.

If fallback capture is not supported, Computer Use should at least return a clear compatibility message instead of exposing the internal SetIsBorderRequired error.

Impact

This is a complete blocker for visual Computer Use workflows on the affected system.

The plugin can identify the correct application and window, but it cannot inspect the window contents. Sending coordinate input without a screenshot would be unsafe and unreliable.

The issue is particularly significant for Boot Camp users because upgrading to Windows 11 is often unsupported or impractical on otherwise functional hardware. A compatibility check around this optional Windows API property would restore at least the normal capture attempt for Windows 10 users.

Related issue

This appears related to:

#25178

I am opening a separate report to provide an additional independent reproduction using:

  • a newer Computer Use plugin version;
  • Apple Boot Camp;
  • multiple unrelated target windows;
  • a complete reboot and environmental troubleshooting;
  • reproduction against the standard Windows Settings application.

The issue remains reproducible with Computer Use plugin version 26.803.81509.

Metadata

Metadata

Assignees

No one assigned

    Labels

    appIssues related to the Codex desktop appbugSomething isn't workingcomputer-usewindows-osIssues related to Codex on Windows systems

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions