Summary
Kit now retries transient openai-subscription failures internally, but the parent sees no bounded progress while those retries are occurring. A long-running subagent(...) call can therefore appear stalled until it succeeds or exhausts its retry budget.
Split from #35 after the overload termination itself was fixed by #32 and released in v0.1.98.
Current behavior
The provider calculates the retry attempt and wait, then sleeps without emitting a runtime progress event. This is especially opaque when subagent(...) runs inside compose(background=true).
Desired behavior
Emit sanitized, bounded retry progress that a parent and UI can observe. Each update should include at least:
- provider route;
- current attempt number;
- reason category without raw provider payloads;
- next delay; and
- cumulative retry/backoff time.
Updates should be rate-limited or coalesced so sustained provider failures do not flood transcripts. The terminal result should remain the single success or failure result.
Suggested coverage
- A fake provider fails N times and succeeds: assert observable attempt updates and one final success.
- An always-failing provider: assert bounded updates followed by exhaustion.
- Exercise foreground subagents and
compose(background=true).
- Assert updates contain no provider message body, credentials, prompts, or customer identifiers.
Environment
- Originally observed with Kit
0.1.96 on Darwin 25.6.0 arm64.
- Confirmed as a remaining gap on Kit
0.1.105 on Darwin 25.5.0 arm64.
- Surface: ACP; provider route:
openai-subscription.
Related work
Summary
Kit now retries transient
openai-subscriptionfailures internally, but the parent sees no bounded progress while those retries are occurring. A long-runningsubagent(...)call can therefore appear stalled until it succeeds or exhausts its retry budget.Split from #35 after the overload termination itself was fixed by #32 and released in v0.1.98.
Current behavior
The provider calculates the retry attempt and wait, then sleeps without emitting a runtime progress event. This is especially opaque when
subagent(...)runs insidecompose(background=true).Desired behavior
Emit sanitized, bounded retry progress that a parent and UI can observe. Each update should include at least:
Updates should be rate-limited or coalesced so sustained provider failures do not flood transcripts. The terminal result should remain the single success or failure result.
Suggested coverage
compose(background=true).Environment
0.1.96onDarwin 25.6.0 arm64.0.1.105onDarwin 25.5.0 arm64.openai-subscription.Related work