openai / openai/codex

Computer Use loses Shift through Tart or Screen Sharing into a macOS guest

Open
#42,305 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

app bug computer-use
Dominant language
Rust
Stars
125k
Forks
19.4k
PR merge metrics
PR metrics pending

Description

Summary

Computer Use type_text and shifted press_key input lose Shift when the target is a running macOS guest through either Tart’s built-in window or Apple Screen Sharing. Ordinary characters reach the guest, but uppercase letters and shifted punctuation arrive as their unshifted keys.

Environment

  • ChatGPT/Codex desktop: 26.825.51511 (7377), Apple silicon
  • Computer Use plugin: 1.0.1000633
  • @oai/sky: 0.6.24-premerge-pr-1369830-395ab116910c
  • host: macOS 26.5.2 (25F84), Mac16,10, U.S./ABC input sources
  • Tart: official 2.32.1 app, window targeted as com.github.cirruslabs.tart
  • guest: macOS 26.6.2 (25G83), U.S. keyboard layout

Minimal reproduction

  1. Run a macOS guest in Tart and focus a blank TextEdit document inside the guest.
  2. Target the Tart app with the documented macOS Computer Use API:
await sky.type_text({
  app: "com.github.cirruslabs.tart",
  text: "abc ABC @ ? _ + : / ' \"",
});
  1. Read the visible guest field.

Expected:

abc ABC @ ? _ + : / ' "

Observed:

abc abc 2 / - = ; / ' '

Sending individual shifted chords such as shift+a, shift+2, shift+slash, shift+minus, shift+equal, shift+semicolon, and shift+apostrophe through press_key also fails to produce the requested shifted characters. Sending type_text one character per awaited call does not change the result.

Controls

  • The same type_text literal matrix targeted directly at host TextEdit preserves uppercase and shifted punctuation (apart from TextEdit's normal smart-quote substitution), so the text-to-key mapping works in an ordinary host text field.
  • Host and guest layouts are both U.S.; neither has a custom modifier mapping.
  • The guest's built-in Accessibility Keyboard, enabled visibly in System Settings and clicked through Computer Use, inserts @, uppercase letters, and ? correctly into the same guest TextEdit field. A representative Qa@example.com and Can qa type this? were entered without shell, clipboard, or backend input. The setting was then turned off.
  • A neutral TextEdit field fails, so this is not application-specific to the product under test.

The original run isolated the failure from the guest layout and target application; the additional Screen Sharing reproduction below further narrows it to synthetic input crossing a remote-display or virtualization forwarding boundary. I have not tried a custom event injector or private Computer Use build.

Additional reproduction via Screen Sharing (2026-09-03)

The failure also reproduces without targeting Tart's built-in window:

  1. Start a disposable guest with tart run --vnc and connect to its exact address with Apple Screen Sharing.
  2. Focus a blank TextEdit document in the guest.
  3. Target com.apple.ScreenSharing with Computer Use.
  4. Send type_text("@"); TextEdit visibly receives 2.
  5. On a new line, send press_key("shift+2"); TextEdit again visibly receives 2.

The unrelated Tart guest already running on the host was not targeted or disturbed. The disposable reproduction guest was stopped and deleted afterward.

This broadens the isolation: the defect is not specific to Tart's built-in window. It appears when Computer Use synthetic keyboard events cross a remote-display or Virtualization.framework forwarding boundary. Direct host TextEdit remains the passing control, while the guest Accessibility Keyboard remains the passing in-guest control.

Related reports and API contract

Expected behavior

type_text and documented shifted press_key chords targeted at a macOS guest through Tart or Screen Sharing should deliver uppercase and shifted punctuation to the focused guest field, matching ordinary host typing.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the failure with sky.type_text and press_key targeting com.github.cirruslabs.tart and com.apple.ScreenSharing, comparing the host TextEdit control with a macOS guest. Trace the synthetic keyboard event path across the remote-display or virtualization boundary; done when shifted letters and punctuation arrive correctly in the guest for both APIs.

Written by the indexing model from the issue text.

Assessment

Tech stack
macos
Domain
desktop, operating-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.