Skip to content

bug(claude): a prompt whose absorption times out is left in the native composer, and every later delivery refuses it as a human draft #1350

Description

@Juliusolsson05

What happened (2026-09-26, manager fleet, structured Claude sessions while they were busy)

  1. ac_agents_prompt was sent to worker W1, a Claude session in the middle of a turn. It returned stage: absorption, code: absorption-timeout, promptWritten: true, enterWritten: false, and the message "did not visibly absorb the prompt and its composer could not be recovered" (disposition: do-not-retry).
  2. The prompt text is now left in Claude's native composer, unsent.
  3. Worker W4 has shown the same state since about 02:25Z. ac_agents_input_inspect returns nativeDraft.state: occupied and readinessReason: composer-occupied, while the Agent Code draft (ac_agents_draft_get) is empty. Every later ac_agents_prompt to W4 is refused as "prompt input is occupied by a human draft". That is four refusals across 25 minutes, and no human typed in that pane. The likely origin is an earlier manager prompt that stranded the same way, perhaps around the app restart.

Why it matters

  • A failed delivery leaves our OWN text behind, and the gate then treats it as a human draft. The agent becomes unreachable for orchestration until someone clears the composer by hand, and nothing tells the sender that the "human draft" is its own stranded prompt.
  • The stranded text is also submitted along with whatever the human types next.

Expected

  • When absorption fails and recovery also fails, the delivery layer either (a) keeps a record that the composer holds its own stranded prompt, so it can reclaim it (clear it, then retry, or surface "your earlier prompt is stranded"), or (b) never leaves it behind. The composer clear and verify should happen before do-not-retry is reported.
  • composer-occupied should say whether the occupant is known to be our own stranded write.

Evidence

  • W1 ac_agents_prompt operation c7eb1822-1d65-423c-b2a5-6f83a98b4dff (outcome_unknown).
  • W4 refusals: operations a0a85f4e, 6bc085b8, d2ceab7a, 5f9b16e0, plus ac_agents_input_inspect showing composer-occupied with an empty Agent Code draft.

Owner action for now: press Enter (to send) or Esc (to clear) in the affected panes.

Activity

  1. added
    provider:claudeAffects Claude Code integration
    type:bugSomething works wrong
    class:C1-prompt-deliveryPrompt delivery inferred from the terminal screen
    sev:P1Core flow broken or badly degraded
    on Sep 27, 2026
  2. Juliusolsson05 commented on Sep 27, 2026

    @Juliusolsson05
    OwnerAuthor

    Context (manager, 03:20Z): the machine load average was 28–46. About 7 parallel tsc -b runs (13–29 min each) and a 33-min full vitest suite were running, and the Agent Code renderer was at ~115% CPU with ~60 agents open. A second delivery (W2, op 478f0e8d) wrote the prompt and Enter but timed out on acceptance. The stranded-draft path may only show under heavy load, but a load spike must not leave our own text parked in the composer and then misreport it as a human draft.

  3. Juliusolsson05 commented on Sep 27, 2026

    @Juliusolsson05
    OwnerAuthor

    Scope note from #1358. #1358 fixes this for text prompts: Agent Code now remembers a text prompt it stranded, for the same process only, and the next delivery reclaims it. That includes a delivery that starts before the stranded text has painted.

    A timed-out delivery with image attachments is not covered. Whether Ctrl+U safely removes an image pill has not been observed on a real composer, so those strands are left alone. That residual is tracked in #1359.

    🤖 Generated with Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    class:C1-prompt-deliveryPrompt delivery inferred from the terminal screenprovider:claudeAffects Claude Code integrationsev:P1Core flow broken or badly degradedtype:bugSomething works wrong

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions