From 3f2808d8df149ace041e475c5361bba9a800699c Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 23 Apr 2026 17:47:14 -0700 Subject: [PATCH] Increase app-server websocket outbound buffer --- codex-rs/app-server/src/transport/websocket.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/codex-rs/app-server/src/transport/websocket.rs b/codex-rs/app-server/src/transport/websocket.rs index 1840231c3c57..7830189467cd 100644 --- a/codex-rs/app-server/src/transport/websocket.rs +++ b/codex-rs/app-server/src/transport/websocket.rs @@ -43,6 +43,11 @@ use tracing::error; use tracing::info; use tracing::warn; +/// WebSocket clients can briefly lag behind normal turn output bursts while the +/// writer task is healthy, so give them more headroom than internal channels. +const WEBSOCKET_OUTBOUND_CHANNEL_CAPACITY: usize = 32 * 1024; +const _: () = assert!(WEBSOCKET_OUTBOUND_CHANNEL_CAPACITY > CHANNEL_CAPACITY); + fn colorize(text: &str, style: Style) -> String { text.if_supports_color(Stream::Stderr, |value| value.style(style)) .to_string() @@ -174,7 +179,8 @@ pub(crate) async fn run_websocket_connection( StreamError: std::fmt::Display + Send + 'static, { let connection_id = next_connection_id(); - let (writer_tx, writer_rx) = mpsc::channel::(CHANNEL_CAPACITY); + let (writer_tx, writer_rx) = + mpsc::channel::(WEBSOCKET_OUTBOUND_CHANNEL_CAPACITY); let writer_tx_for_reader = writer_tx.clone(); let disconnect_token = CancellationToken::new(); if transport_event_tx