chenhg5/cc-connect · error

agent process exited during compress

Error message

agent process exited during compress

What it means

During a /compress operation the engine watches the agent's event stream; if the events channel closes (agent process died mid-compress) the engine notifies that queued messages were dropped with this reason, sends any text already collected, and aborts the compress. It distinguishes "compress crashed" from "compress timed out".

Source

Thrown at core/engine.go:10546

	for {
		var event Event
		var ok bool

		select {
		case <-stopCh:
			return
		case event, ok = <-events:
			if !ok {
				e.cleanupInteractiveState(sessionKey, state)
				if !auto {
					if len(textParts) > 0 {
						e.send(p, replyCtx, strings.Join(textParts, ""))
					} else {
						e.reply(p, replyCtx, e.i18n.T(MsgCompressDone))
					}
				}
				e.notifyDroppedQueuedMessages(state, fmt.Errorf("agent process exited during compress"))
				return
			}
		case <-idleCh:
			if !auto {
				e.send(p, replyCtx, fmt.Sprintf(e.i18n.T(MsgError), "compress timed out"))
			}
			e.cleanupInteractiveState(sessionKey, state)
			e.notifyDroppedQueuedMessages(state, fmt.Errorf("compress timed out"))
			return
		case <-e.ctx.Done():
			return
		}

		if state.isStopped() {
			return
		}

		if idleTimer != nil {

View on GitHub (pinned to 4000b2338a)

Solutions

  1. Restart a session and retry /compress; the partial text already streamed was delivered before the abort
  2. Check agent logs at the crash point; compression of very large contexts can OOM the agent
  3. Reduce conversation size (start /new) if compresses repeatedly kill the agent
  4. Raise memory limits if the agent is being OOM-killed during compress
Defensive patterns

Strategy: retry

Validate before calling

if err := exec.Command(agentBin, "--version").Run(); err != nil { return err }; if memAvailable() < minAgentMemBytes { return fmt.Errorf("insufficient memory for compress") }

Try / catch

On the dropped-message notification containing "agent process exited during compress", wait for the session to restart and retry /compress once before escalating.

Prevention

When it happens

Trigger: Agent process exits while a compress loop is in its event-watching select — the channelClosed branch of the compress event loop — with queued messages waiting; typically an agent crash/OOM during the (context-heavy) compression request.

Common situations: Context is huge when compressing (the compression prompt pushes the agent over memory limits); agent CLI crash on long conversations; host OOM-kill during compress.

Related errors


AI-assisted analysis of chenhg5/cc-connect@4000b2338a (2026-09-06). Data as JSON: /api/errors/c1b89c6b8e8d57d7. Report an issue: GitHub.