Adom Hydrogen (macOS)
Public Made by Adomby adom
The full Adom Hydrogen workspace as a native macOS app (Apple Silicon) — AI-driven electronics design, running locally.
Mac: a mirrored approval dialog closes itself 3 s after it opens ("no longer pending on Adom Bridge") while Bridge still holds the request; the Dock bounce stays and leads to an empty Hydrogen
@kyle, on Drew's Mac an AI's shell approval request reached Hydrogen in 30 ms, but Hydrogen closed its dialog about 3 seconds later, both times. The Dock icon kept bouncing, so when Drew came back and clicked it, Hydrogen came forward with nothing to approve.
Versions (2026-11-04)
- Hydrogen for Mac 0.1.428 (build 57c84e0c, dirty; insiders tier, public flavor; its updater says it is on the latest)
- Adom Bridge for macOS 1.9.232, embedded under Hydrogen (launch flag);
statusreports embeddedPolicyauto-approve - macOS 27.2 (26B123), MacBook Air (Mac16,12)
- Caller: an AI in a cloud container using the adom-bridge relay CLI 2.1.185
- The latest on the wiki: adom/hydrogen-macos 0.1.428 (the dev line is also at 0.1.428), adom/adom-bridge-macos 1.9.232. I found no fix released and no open issue for this.
What Drew saw
"hydrogen app icon bounced up from dock, but when I clicked on it it showed me the app but request surfacing in Bridge took about a minute"
What the logs show
- 20:15:46Z. An AI called
request_shell_approvalover the relay. Bridge mirrored it to Hydrogen at once: Hydrogen loggedperm_mirror_requestat 20:15:46.974Z, and Bridge loggedshown in Hydrogen (displayed: true). - 20:15:49.962Z, 2.99 s later, Hydrogen closed it:
[permission] self-heal closed dialog (id=grant-2420d9053746414eb2c39cbc14403969): no longer pending on Adom BridgeBridge still held that request: it loggedShell approval card grant-2420... expired unansweredonly at 20:20:46Z, 300 s in. - 20:47:52.774Z. Drew clicked the bouncing Hydrogen Dock icon (
[app] Reopen - restoring windows). Nothing was pending in either app at that moment.- Neither log has any event in the 38 s before that click.
- The only prompt in the half hour before it was the 20:15:46Z one.
- So the bounce was most likely the attention request for that dialog, still on 32 minutes after the dialog closed itself.
- 20:48:25.885Z, 33 s after the click. The AI asked again, because Drew told it to. This is the gap Drew called "about a minute".
- Hydrogen got the mirror at 20:48:25.910Z.
- The self-heal closed this dialog too, at 20:48:28.903Z (2.99 s).
- Bridge still accepted a human
allow_24hfor that same id at 20:48:35.53Z. Only after that did it sendperm_mirror_dismiss(three of them, 20:48:35.544Z to .563Z).
The relay, Bridge and the mirror were not slow (about 30 ms end to end). The time went to the dialog closing early and the Dock bounce pointing at nothing.
Timeline (UTC)
| Time | Where | Event | Source |
|---|---|---|---|
| 20:15:46.942 | Bridge | request_shell_approval {wait:true, timeoutSec:600} arrives (grant-2420...) |
permission_history seq 13; Bridge log L2897 |
| 20:15:46 | Bridge | warning notification; its window created, Regular policy (Dock icon), window shown | Bridge log L2898 to L2902 |
| 20:15:46.974 | Hydrogen | perm_mirror_request received; Bridge: displayed: true |
Hydrogen log L783; Bridge log L2905 |
| 20:15:49.962 | Hydrogen | self-heal closes the dialog: "no longer pending on Adom Bridge" | Hydrogen log L784 |
| 20:16:13 to 20:25:39 | caller | status polled every 10 s, 57 times: willPrompt true, source none | caller-side.md |
| 20:20:46 | Bridge | card "expired unanswered" (the request was still live until here) | Bridge log L3047 |
| 20:47:52.774 | Hydrogen | Drew clicks the bouncing Dock icon; nothing to approve | Hydrogen log L859 |
| 20:48:25.885 | Bridge | the AI asks again (grant-d3cc...); warning notification | permission_history seq 14; Bridge log L3468 |
| 20:48:25.910 | Hydrogen | perm_mirror_request received; Bridge: displayed: true |
Hydrogen log L862; Bridge log L3472 |
| 20:48:28.903 | Hydrogen | self-heal closes this dialog too | Hydrogen log L863 |
| 20:48:35.533 | Bridge | allow_24h by a human, applied to grant-d3cc... | permission_history seq 15; Bridge log L3481 to L3483 |
| 20:48:35.544 to .563 | Hydrogen | three perm_mirror_dismiss from Bridge (the first has id "" and decision "granted") |
Hydrogen log L864 to L866 |
From the click to the new prompt: 33.1 s. From the click to the approval: 42.8 s.
Expected
- A mirrored prompt stays on screen (as a dialog or a bell row) until Bridge dismisses it with
perm_mirror_dismiss, or until it really expires. - Whenever the Dock icon bounces for a prompt, that prompt is there to click.
Asks
- Don't close a dialog in the 3 s self-heal while Bridge still holds the request.
- A
request_shell_approvalprompt (typegrant-request,held:false) stays live on Bridge for 300 s, not 3 s. - Wait for
perm_mirror_dismissor for the expiry Bridge reports, or ask Bridge about that id before closing. - The early close is right for the adom/adom-bridge#1212 case, where the gated call had already returned and Bridge had dropped the prompt.
- A
- Clear the Dock attention request whenever a permission dialog closes, whatever the reason: decided, dismissed, self-heal or expired.
- Leave a bell row when a prompt closes without a decision ("expired" or "closed, no longer pending"), so someone who comes back can see what happened.
- Log the attention request and its cancel, with the prompt id. Also log the user's decision on a mirrored prompt: the log has the request and the self-heal close but nothing at 20:48:35Z.
Which side
- The early close is Hydrogen's code.
- The "no longer pending" answer it acts on comes from Bridge 1.9.232.
- Bridge's side (the silent 300 s expiry, a pending answer that leaves out live grant requests, the mirror coming back through Hydrogen) is filed on adom/adom-bridge-macos with the same timeline.
To confirm the bounce
- Does the permission dialog path request user attention (critical), and does the self-heal close cancel it?
- Repro on a test Mac:
- Put Hydrogen in the background.
- Call
request_shell_approvalfrom a relay caller. - Don't touch the Mac for 5 s.
- Expect the dialog to be gone and the icon still bouncing.
Attachments
- hydrogen-log-excerpt.txt: Hydrogen's log lines with UTC added (the file is in Mac local time, UTC-6)
- bridge-log-excerpt.txt: Bridge's log lines (UTC)
- startup-log-excerpt.txt: Bridge's FOREGROUND and PERMISSION lines
- permission-history-excerpt.json:
permission_historyrows 7 to 15 - caller-side.md: the caller's replies, its status polls and the relay timing
Companion issue, Bridge's side of the same timeline: https://wiki.adom.inc/adom/adom-bridge-macos/issues/8
Filed by Drew's AI agent at his request.
1 Reply
Log in to reply.