Skip to content

Support secure dialog input on the Parallels macOS 26/27 lanes - #1258

Closed
malpern wants to merge 1 commit into
masterfrom
fix/secure-dialog-input-parallels
Closed

Support secure dialog input on the Parallels macOS 26/27 lanes#1258
malpern wants to merge 1 commit into
masterfrom
fix/secure-dialog-input-parallels

Conversation

@malpern

@malpern malpern commented Aug 8, 2026

Copy link
Copy Markdown
Owner

Granting Accessibility or Input Monitoring on macOS 27 raises an authenticated password prompt. secure-dialog-input refused every lane but Tart macOS 15, so the denied-to-allowed transition could not be automated at all on the lanes KeyPath and Typover actually test — including every "newly granted" row in docs/testing/macos-27-regression.md.

Why the Tart path could not be reused

It requires peekaboo and mcporter under /opt/homebrew inside the guest, and the Parallels desktop base has no Homebrew at all.

So this delivers the credential with the key-event transport secure_console_submit already proves out, which needs nothing installed in the guest. The plaintext is still read only from an owner-only temp file and never enters argv, logs, the guest pasteboard, or an artifact, and the accepted alphabet stays exactly as narrow.

Delivery is not success

The sheet-closed postcondition is preserved, matching the Tart lane — without it, a credential that never reached the field reports a pass. It runs through the peekaboo the base installs at a stable path.

Verified that the assertion bites: defeating the postcondition makes the suite fail with authentication sheet did not close, and the command reports passed when it should not.

Live verification on macOS 27

Not just unit-tested. On a real lease, driving Typover's first-run permission flow:

secure_dialog_input      passed
credential_transport     parallels-key-events

Then confirmed independently rather than trusting the exit status:

  • the Accessibility toggle for Typover switched on in System Settings
  • after relaunch Typover reports Accessibility, Allowed
  • Input Monitoring still reports Not yet allowed, so the grant was specific rather than a blanket change

Note for whoever automates these flows next

peekaboo click did not reliably invoke Typover's SwiftUI button — it timed out while the sheet stayed closed. peekaboo perform-action --action AXPress worked first try. That matches what p01-unmanaged-input-monitoring-spike.md already recorded for KeyPath's wizard controls, so it is now two projects with the same finding: prefer perform-action over click for SwiftUI targets.

🤖 Generated with Claude Code

Granting Accessibility or Input Monitoring on macOS 27 raises an authenticated
password prompt, and secure-dialog-input refused every lane but Tart macOS 15,
so the denied-to-allowed transition could not be automated at all on the lanes
KeyPath and Typover actually test.

The Tart path cannot simply be reused: it requires peekaboo and mcporter under
/opt/homebrew inside the guest, and the Parallels desktop base has no Homebrew.
Deliver the credential instead with the key-event transport secure_console_submit
already proves out, which needs nothing installed in the guest. The plaintext is
still read only from an owner-only temp file and never enters argv, logs, the
guest pasteboard, or an artifact, and the accepted alphabet stays as narrow.

Verify the sheet closed before reporting success, matching the Tart lane, using
the peekaboo the base now installs at a stable path. Delivery is not success;
without this check a credential that never reached the field reports a pass.

Tests cover the happy path -- key codes matching the secret exactly, Return
sent, no plaintext in logs or arguments -- and the stuck-sheet case. Defeating
the postcondition makes the suite fail, so the assertion bites.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

@malpern

malpern commented Aug 8, 2026

Copy link
Copy Markdown
Owner Author

Superseded by #1259.

The Parallels macOS 26/27 secure dialog input from this PR was ported into the vm-lab repository (commit f0ca542) along with its tests, and the sheet-closed postcondition was re-verified to fail when defeated. #1259 deletes the Scripts/lab/remote.sh this PR modifies, so merging this afterwards would resurrect a deleted file.

No work is lost — the behaviour now lives where the lab does.

@malpern malpern closed this Aug 8, 2026
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.

1 participant