Support secure dialog input on the Parallels macOS 26/27 lanes - #1258
Closed
malpern wants to merge 1 commit into
Closed
Support secure dialog input on the Parallels macOS 26/27 lanes#1258malpern wants to merge 1 commit into
malpern wants to merge 1 commit into
Conversation
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>
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
Owner
Author
|
Superseded by #1259. The Parallels macOS 26/27 secure dialog input from this PR was ported into the vm-lab repository (commit No work is lost — the behaviour now lives where the lab does. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Granting Accessibility or Input Monitoring on macOS 27 raises an authenticated password prompt.
secure-dialog-inputrefused 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 indocs/testing/macos-27-regression.md.Why the Tart path could not be reused
It requires
peekabooandmcporterunder/opt/homebrewinside the guest, and the Parallels desktop base has no Homebrew at all.So this delivers the credential with the key-event transport
secure_console_submitalready 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 reportspassedwhen it should not.Live verification on macOS 27
Not just unit-tested. On a real lease, driving Typover's first-run permission flow:
Then confirmed independently rather than trusting the exit status:
Accessibility, AllowedNot yet allowed, so the grant was specific rather than a blanket changeNote for whoever automates these flows next
peekaboo clickdid not reliably invoke Typover's SwiftUI button — it timed out while the sheet stayed closed.peekaboo perform-action --action AXPressworked first try. That matches whatp01-unmanaged-input-monitoring-spike.mdalready recorded for KeyPath's wizard controls, so it is now two projects with the same finding: preferperform-actionoverclickfor SwiftUI targets.🤖 Generated with Claude Code