advisor ref-mode returns docker exit 125 through the dispatch broker (TTY/attach in non-interactive host-forward context) #605

Closed
opened 2026-07-04 09:11:56 +00:00 by coilysiren · 1 comment
Owner

Symptom

ward agent advisor <owner/repo#N> "<prompt>" in ref mode, launched through the dispatch broker from a warded director (read-only) surface, fails every time with:

ward: dispatch broker: ward agent advisor --driver claude: research coilyco-flight-deck/agentic-os#<N>: exit status 125

Docker exit 125 is a pre-start container-create/run rejection (the daemon refused the container before the entrypoint ran), classically "the input device is not a TTY" when a docker run -it/attach is issued in a non-interactive context.

Reproduced 2026-07-04

Firing 16 advisor ref-mode runs across the aos backlog from a warded director surface session (broker at $WARD_DISPATCH_BROKER_ADDR), every one returned exit status 125. Constant across issues (#298 #291 #282 #268 #237 #235 #231 #228 #225 #300 #269 #252 ...). Not issue-specific.

What works vs what fails (the tell)

  • engineer ref runs from the same session, same broker, same moment: all forwarded and detached cleanly (ward dispatch broker: forwarded ... to host ward). The detached-launch path is healthy.
  • advisor --print (renders plan, launches nothing): forwards fine. So ref resolution + prompt render + broker forward are all healthy.
  • advisor real run: 125 at container launch, every time.
  • --no-tailnet does not help (rules out the live-observe tailnet/~/.aws mount as the cause).

The discriminator: engineer forwards-and-detaches (host ward launches the container natively, later, no TTY expectation). Advisor ref-mode runs its research container synchronously through the broker and waits on it, and that synchronous launch is what 125s in the non-interactive, TTY-less host-forward context.

Likely cause

The advisor research container is started with an interactive/TTY attach (-it or equivalent) even in ref mode. Ref mode is documented as "researches the issue and posts the answer as a comment" - non-interactive by nature - and the help even advertises a no-TTY one-shot (--oneshot) for the freeform path. Ref mode should launch detached / non-TTY the same way the engineer surface does, or at minimum drop -t when no terminal is attached ([ -t 0 ]).

Impact

The advisor surface is unusable through the dispatch broker from a director surface - exactly the seat the doctrine steers design/research work toward ("prefer a sibling dispatch ... warded advisor #N to design or research"). Every consult/design issue routed to advisor from a director session silently fails to launch, so the research never happens and no comment is posted. 16 intended advisor dispatches were lost to this in one session.

Fix direction

  • In the advisor ref-mode launch path (ward cmd/ward/ agent/advisor container assembly), do not request a TTY/attach when stdin/stdout is not a terminal - gate the -t/-i on [ -t 0 ], or make ref mode forward-and-detach like the engineer path and post its comment on completion.
  • Confirm against the host-side dispatch log (C:\Users\firem\.ward\agent-logs\dispatch\*-advisor-*.log) which docker invocation returns 125; that log carries the exact docker: Error response from daemon / the input device is not a TTY line this container cannot see.

Repro one-liner

ward agent advisor coilyco-flight-deck/agentic-os#269 "research this and comment" --no-tailnet
# -> ward: dispatch broker: ... research ...#269: exit status 125

Filed from a warded director read-only surface (capture-and-dispatch).

## Symptom `ward agent advisor <owner/repo#N> "<prompt>"` in **ref mode**, launched through the dispatch broker from a warded director (read-only) surface, fails **every time** with: ``` ward: dispatch broker: ward agent advisor --driver claude: research coilyco-flight-deck/agentic-os#<N>: exit status 125 ``` Docker exit **125** is a pre-start container-create/run rejection (the daemon refused the container before the entrypoint ran), classically "the input device is not a TTY" when a `docker run -it`/attach is issued in a non-interactive context. ## Reproduced 2026-07-04 Firing 16 advisor ref-mode runs across the aos backlog from a `warded director` surface session (broker at `$WARD_DISPATCH_BROKER_ADDR`), every one returned `exit status 125`. Constant across issues (#298 #291 #282 #268 #237 #235 #231 #228 #225 #300 #269 #252 ...). Not issue-specific. ## What works vs what fails (the tell) - **engineer** ref runs from the same session, same broker, same moment: **all forwarded and detached cleanly** (`ward dispatch broker: forwarded ... to host ward`). The detached-launch path is healthy. - **advisor `--print`** (renders plan, launches nothing): **forwards fine**. So ref resolution + prompt render + broker forward are all healthy. - **advisor real run**: **125 at container launch**, every time. - `--no-tailnet` does **not** help (rules out the live-observe tailnet/`~/.aws` mount as the cause). The discriminator: engineer **forwards-and-detaches** (host ward launches the container natively, later, no TTY expectation). Advisor ref-mode runs its research container **synchronously** through the broker and waits on it, and that synchronous launch is what 125s in the non-interactive, TTY-less host-forward context. ## Likely cause The advisor research container is started with an interactive/TTY attach (`-it` or equivalent) even in ref mode. Ref mode is documented as "researches the issue and posts the answer as a comment" - non-interactive by nature - and the help even advertises a no-TTY one-shot (`--oneshot`) for the freeform path. Ref mode should launch **detached / non-TTY** the same way the engineer surface does, or at minimum drop `-t` when no terminal is attached (`[ -t 0 ]`). ## Impact The advisor surface is unusable through the dispatch broker from a director surface - exactly the seat the doctrine steers design/research work toward ("prefer a sibling dispatch ... `warded advisor #N` to design or research"). Every consult/design issue routed to advisor from a director session silently fails to launch, so the research never happens and no comment is posted. 16 intended advisor dispatches were lost to this in one session. ## Fix direction - In the advisor ref-mode launch path (ward `cmd/ward/` agent/advisor container assembly), do not request a TTY/attach when stdin/stdout is not a terminal - gate the `-t`/`-i` on `[ -t 0 ]`, or make ref mode forward-and-detach like the engineer path and post its comment on completion. - Confirm against the host-side dispatch log (`C:\Users\firem\.ward\agent-logs\dispatch\*-advisor-*.log`) which docker invocation returns 125; that log carries the exact `docker: Error response from daemon` / `the input device is not a TTY` line this container cannot see. ## Repro one-liner ``` ward agent advisor coilyco-flight-deck/agentic-os#269 "research this and comment" --no-tailnet # -> ward: dispatch broker: ... research ...#269: exit status 125 ``` Filed from a warded director read-only surface (capture-and-dispatch).
Author
Owner

Closing: same advisor exit-125 cause as #604, fixed by ward#597 (4cf59d5); the #597 work explicitly examined this issue's '--no-tailnet still 125s' evidence and found the TTY theory a red herring. Live verification pending - reopen if it recurs. Re-triage 2026-07-06.

Closing: same advisor exit-125 cause as #604, fixed by ward#597 (4cf59d5); the #597 work explicitly examined this issue's '--no-tailnet still 125s' evidence and found the TTY theory a red herring. Live verification pending - reopen if it recurs. Re-triage 2026-07-06.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
coilyco-flight-deck/ward#605
No description provided.