Context
On 2026-05-08, the operator reported that the latest Claude Desktop UI update added focusable elements inside chat history. Space is no longer a stable prompt-focus seed: repeated wakeups expand or collapse tool-call summaries instead of focusing the prompt field.
The repository currently still defaults Claude bridge delivery to Space:
ai/scripts/bridge-daemon.mjs sets the Claude default focusSeedKey to space.
- The emitted AppleScript uses
key code 49 for that seed.
test/playwright/unit/ai/scripts/bridge-daemon.spec.mjs has a Claude regression test that explicitly expects Space.
This supersedes the closed assumption in #10660. #10658 remains the open Claude bridge prompt-focus parent, and #10664 is the Codex precedent for treating Space as unsafe and using an explicit r -> Cmd+Z -> Cmd+A/Cmd+X -> paste sequence only after validation.
Problem
The current Claude wake path can target focusable chat-history controls. Once focus is in a tool-call summary, Space toggles expansion/collapse instead of moving focus to the prompt. The destructive clear-and-paste sequence that follows can then operate from an invalid focus state or fail to place the wake payload in the prompt reliably.
This is an MX substrate regression: wake routing is the bridge between Memory Core events and the desktop harness. A flaky seed causes missed or mutated A2A wakeups and erodes trust in the shared swarm loop.
Architectural Reality
meta.focusSeedKey was documented in #10664 as a single-key non-mutating primitive. The Codex workaround is not just the value r; it is the validated probe-and-undo sequence around that value. The Claude fix must preserve that distinction:
- Do not silently replace
space with bare r and then run Cmd+A.
- Either promote a named probe-and-undo primitive shared by Codex and Claude, or extend the existing explicit Codex
r cleanup branch to Claude with comments that make the sequence contract clear.
- Keep Antigravity and other harnesses unchanged unless separately validated.
Contract Ledger Matrix
| Contract |
Current producer |
Required producer |
Consumers / tests |
| Claude bridge prompt-focus seed |
bridge-daemon.mjs defaults Claude focusSeedKey to space and emits key code 49 |
Claude must use an explicit r -> Cmd+Z probe-and-undo sequence before any destructive clear |
A2A wake delivery via bridge daemon, Claude Desktop UI |
meta.focusSeedKey semantics |
Single-key seed can be confused with multi-step probe flow |
Preserve or rename semantics so bare r is not treated as a non-mutating seed |
WakeSubscriptionService metadata, bridge daemon delivery comments |
| Codex wake behavior |
Codex has special r -> Cmd+Z cleanup and fail-closed behavior |
No regression to Codex fail-closed or validated r path |
bridge-daemon.spec.mjs Codex tests |
| Claude regression tests |
Test currently expects Space after Cmd+3 |
Tests must assert no key code 49 default for Claude and assert sequence order |
test/playwright/unit/ai/scripts/bridge-daemon.spec.mjs |
Fix
- Remove the Claude default Space seed.
- Add a Claude-safe prompt-focus sequence using
r -> Cmd+Z before Cmd+A / Cmd+X / paste.
- Keep the sequence explicit enough that future agents do not confuse it with a bare
focusSeedKey: r opt-in.
- Update comments to cite the 2026-05-08 Claude Desktop UI regression: focusable chat-history tool-call summaries make Space unsafe.
- Update and extend bridge-daemon unit coverage for Claude, while preserving Codex coverage.
Acceptance Criteria
Five-Stage Challenge Chain
- Roadmap fit: This is a direct reliability fix for A2A wake delivery and the desktop harness loop.
- Negative ROI check: Leaving Space in place costs repeated missed wakeups and operator attention; the fix is narrow and testable.
- Duplicate sweep: #10660 is the closed prior Space strategy, #10658 is the open Claude parent, and #10664 is the Codex precedent. No active duplicate found in KB ticket search.
- Prescription layer: The ticket prescribes sequence semantics and test contracts, not broad UI automation redesign.
- Avoided traps: The ticket rejects bare
focusSeedKey: r, avoids app-server scope creep, and keeps non-Claude harnesses out unless evidence exists.
Out of Scope
- Full app-server wake adapter work such as #10517.
- Reworking wake subscription routing or Memory Core delivery semantics.
- Changing Codex behavior beyond preserving current tests.
- Changing Antigravity behavior without separate validation.
- Continuing or modifying #10951 team-private retrieval work.
Related
- Parent candidate: #10658
- Superseded premise: #10660
- Codex precedent and safety matrix: #10664
Origin Session ID
1ed5570e-a33b-4a48-b05b-cda820c16bbb
Retrieval Hint
Claude Desktop focusable chat history Space tool-call summary expand collapse bridge-daemon focusSeedKey r Cmd+Z #10658 #10660 #10664
Context
On 2026-05-08, the operator reported that the latest Claude Desktop UI update added focusable elements inside chat history. Space is no longer a stable prompt-focus seed: repeated wakeups expand or collapse tool-call summaries instead of focusing the prompt field.
The repository currently still defaults Claude bridge delivery to Space:
ai/scripts/bridge-daemon.mjssets the Claude defaultfocusSeedKeytospace.key code 49for that seed.test/playwright/unit/ai/scripts/bridge-daemon.spec.mjshas a Claude regression test that explicitly expects Space.This supersedes the closed assumption in #10660. #10658 remains the open Claude bridge prompt-focus parent, and #10664 is the Codex precedent for treating Space as unsafe and using an explicit
r -> Cmd+Z -> Cmd+A/Cmd+X -> pastesequence only after validation.Problem
The current Claude wake path can target focusable chat-history controls. Once focus is in a tool-call summary, Space toggles expansion/collapse instead of moving focus to the prompt. The destructive clear-and-paste sequence that follows can then operate from an invalid focus state or fail to place the wake payload in the prompt reliably.
This is an MX substrate regression: wake routing is the bridge between Memory Core events and the desktop harness. A flaky seed causes missed or mutated A2A wakeups and erodes trust in the shared swarm loop.
Architectural Reality
meta.focusSeedKeywas documented in #10664 as a single-key non-mutating primitive. The Codex workaround is not just the valuer; it is the validated probe-and-undo sequence around that value. The Claude fix must preserve that distinction:spacewith barerand then runCmd+A.rcleanup branch to Claude with comments that make the sequence contract clear.Contract Ledger Matrix
bridge-daemon.mjsdefaults ClaudefocusSeedKeytospaceand emitskey code 49r -> Cmd+Zprobe-and-undo sequence before any destructive clearmeta.focusSeedKeysemanticsris not treated as a non-mutating seedWakeSubscriptionServicemetadata, bridge daemon delivery commentsr -> Cmd+Zcleanup and fail-closed behaviorbridge-daemon.spec.mjsCodex testskey code 49default for Claude and assert sequence ordertest/playwright/unit/ai/scripts/bridge-daemon.spec.mjsFix
r -> Cmd+ZbeforeCmd+A/Cmd+X/ paste.focusSeedKey: ropt-in.Acceptance Criteria
key code 49for the default prompt-focus path.rbefore prompt clear and emitsCmd+ZbeforeCmd+A/Cmd+X/ paste.r -> Cmd+Z -> Cmd+A/Cmd+X -> pastebehavior remains unchanged.Five-Stage Challenge Chain
focusSeedKey: r, avoids app-server scope creep, and keeps non-Claude harnesses out unless evidence exists.Out of Scope
Related
Origin Session ID
1ed5570e-a33b-4a48-b05b-cda820c16bbb
Retrieval Hint
Claude Desktop focusable chat history Space tool-call summary expand collapse bridge-daemon focusSeedKey r Cmd+Z #10658 #10660 #10664