-
-
Notifications
You must be signed in to change notification settings - Fork 79.1k
Gateway should enforce runTimeoutSeconds and emit terminal child.timeout event #87444
Copy link
Copy link
Labels
P1High-priority user-facing bug, regression, or broken workflow.High-priority user-facing bug, regression, or broken workflow.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.ClawSweeper found a high-confidence source-level issue reproduction.impact:message-lossChannel message delivery can be lost, duplicated, or misrouted.Channel message delivery can be lost, duplicated, or misrouted.impact:session-stateSession, memory, transcript, context, or agent state can drift or corrupt.Session, memory, transcript, context, or agent state can drift or corrupt.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.Very strong issue quality with high-confidence source-level or clear reproduction.
Metadata
Metadata
Assignees
Labels
P1High-priority user-facing bug, regression, or broken workflow.High-priority user-facing bug, regression, or broken workflow.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.ClawSweeper found a high-confidence source-level issue reproduction.impact:message-lossChannel message delivery can be lost, duplicated, or misrouted.Channel message delivery can be lost, duplicated, or misrouted.impact:session-stateSession, memory, transcript, context, or agent state can drift or corrupt.Session, memory, transcript, context, or agent state can drift or corrupt.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.Very strong issue quality with high-confidence source-level or clear reproduction.
Type
Fields
Give feedbackNo fields configured for issues without a type.
Problem
When sessions_spawn is called with runTimeoutSeconds, the value is accepted but does not appear to be enforced as a hard release signal. Today (2026-05-27) two subagent runs in the same workspace stalled past their declared timeouts:
The parent was parked via sessions_yield expecting a push-based completion event. None arrived. Recovery required a full gateway restart.
Expected behavior
At exactly runTimeoutSeconds after spawn, the gateway should:
This should happen regardless of whether the underlying agent process is still alive — runTimeoutSeconds is a contract with the parent, not a hint to the child.
Repro sketch
Workaround
Today the only recovery is gateway restart. A subagents action='kill' would be the manual escape hatch (filed separately).
Impact
Any multi-lane orchestration is fragile under transient failures. Parent agents cannot make progress decisions because the contract they were given (timeout) is not honored.