zed-industries/zed · error · LanguageModelCompletionError

ChatGPT subscription compaction returned multiple replacemen

Error message

ChatGPT subscription compaction returned multiple replacement contexts

What it means

While consuming the compaction event stream, more than one CompactionUpdate::Finished event arrived. The protocol allows exactly one replacement context per compaction, so a second one indicates the upstream response stream is malformed or duplicated.

Source

Thrown at crates/openai_subscribed/src/openai_subscribed.rs:842

                        responses_request,
                        &extra_headers,
                    )
                    .await
                    .map_err(LanguageModelCompletionError::from)
                })
                .await?;
            let mapper = OpenAiResponseEventMapper::new(PROVIDER_ID);
            let mut event_stream = language_model::stream_in_background(
                mapper.map_stream(response_stream.boxed()).boxed(),
                cx.background_executor().clone(),
            );
            let mut compacted_context = None;
            let mut usage = language_model::TokenUsage::default();

            while let Some(event) = event_stream.next().await {
                match event? {
                    LanguageModelCompletionEvent::Compaction(
                        language_model::CompactionUpdate::Finished(context),
                    ) => {
                        if compacted_context.replace(context).is_some() {
                            return Err(LanguageModelCompletionError::Other(anyhow!(
                                "ChatGPT subscription compaction returned multiple replacement contexts"
                            )));
                        }
                    }
                    LanguageModelCompletionEvent::UsageUpdate(updated_usage) => {
                        usage = updated_usage;
                    }
                    _ => {}
                }
            }

            let context = compacted_context.ok_or_else(|| {
                LanguageModelCompletionError::Other(anyhow!(
                    "ChatGPT subscription compaction returned no replacement context"
                ))

View on GitHub (pinned to 5a9b9558db)

Solutions

  1. Retry the compaction request; a duplicated finished event is usually a transient stream glitch
  2. If it reproduces consistently, capture the raw event stream and report it — the model/endpoint is emitting multiple compaction completions
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at crates/openai_subscribed/src/openai_subscribed.rs:810 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of zed-industries/zed@5a9b9558db (2026-08-20). Data as JSON: /api/errors/0a4d82c76a1addaf. Report an issue: GitHub.