Skip to content

opencode run exits 1 after auto-compaction recovers from a provider 413 #39573

Closed as not planned

Description

@Alezander9

Description

opencode run exits 1 (and the TUI shows an error toast) when a provider rejects a request for size (HTTP 413 / ContextOverflowError), even though auto-compaction recovers: the session compacts, retries, and produces a complete correct answer. Anything scripting opencode run or tailing --format json sees the run as failed.

Cause: the auto-compact branch in processor.ts halt() publishes Session.Event.Error before attempting recovery:

ctx.needsCompaction = true
yield* events.publish(Session.Event.Error, { sessionID: ctx.sessionID, error })
return

Consumers (cli/cmd/run.ts, tui/app.tsx, app/context/notification.tsx) all treat session.error as the run's outcome. This publish is inconsistent with the rest of the codebase: it doesn't set message.error (the durable message says no error), it isn't followed by idle or a throw, and nothing consumes it — compaction is triggered by the "compact" return value. Retried 429s and the proactive overflow check are both silent.

Steps to reproduce

  1. Run a non-interactive prompt against a session large enough that the provider returns 413, with auto-compaction enabled
  2. Compaction recovers and the final answer is produced
  3. opencode run exits 1; --format json stdout contains an error event

Reproducible with the test-LLM harness: push a 413 (request_too_large), then two text replies; opencode run --format json exits 1 despite emitting the recovered output.

OpenCode version

dev (processor.ts:616)

Activity

  1. github-actions commented on Sep 29, 2026

    @github-actions
    Contributor

    To stay organized issues are automatically closed after 60 days of no activity. If the issue is still relevant please open a new one.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions