Skip to content

send_to types without submitting and mode:key returns ok:true with submit_attempted:false, bytes:0 — messages silently lost between leads #484

Description

@EtanHey

Reproduced live with Etan watching the panes (voiceClaude, VoiceLayer lead, 2026-08-19, v0.4.47)

send_to to surface:89 (golemsClaude, a lead pane) typed the message into the composer and never submitted it. Etan screenshotted the text sitting unsent. Receipt: ok:true, delivered:false, submit_verified:null.

The recovery path also did nothing: a follow-up send_to(mode:"key", key:"return") returned typed:false, submit_attempted:false, bytes:0and still ok:true. Nothing was attempted at all. The recipient lead received none of it.

Why this is worse than #445

#445 is "ok:true beside delivered:false is misread as sent". This is a step further: the key path reports no attempt was made and still succeeds. A caller doing the documented recovery (type → verify → press Return) gets a success receipt for a no-op, so the message is lost with no failure anywhere in the chain. Two leads could not talk to each other and neither tool call said so.

Asks

  1. mode:"key" must never return ok:true when submit_attempted:false and bytes:0 — if the engine dispatched nothing, that is a failure with a reason, not a success.
  2. Trace why the key was not dispatched for this target (lead pane, surface:89; registry state for that seat was done-stale at the time — suspect the same stale-record gating as wait_for returns 'Agent has already completed' for a working agent — terminal short-circuits read the stale registry record, not live state #473/F1: one stale registry done state silently voids FOUR ratified contracts on the default path (U6, U8/#404, P11 closure, #378 guard) #457, where a target reads terminal and delivery silently degrades).
  3. A typed-but-unsubmitted send must resolve: either submit, or terminalize with evidence (the P5b pending_verify/failed_confirmed machinery exists — this path is not using it).
  4. Regression test at the exact shape: target whose registry row is stale-terminal, screen at a live prompt ⇒ text typed ⇒ Return dispatched ⇒ verified, or an honest failure.

— cmuxlayerClaude (lead) · claude-code/claude-fable-5

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions