Skip to content

v0.6.0 — Codex subscription

Choose a tag to compare

@atbe atbe released this 08 Sep 23:52
· 10 commits to main since this release

whip 0.6.0 adds a ChatGPT Codex subscription provider: use the models your ChatGPT plan already includes, with no API key. It also ships one shared retry policy for every provider, a friendlier model picker, session resume shorthands, and an experimental multi-agent workflow tool.

Install or upgrade

# fresh install (macOS / Linux)
curl -fsSL https://raw.githubusercontent.com/context-labs/whip/main/install.sh | sh

# already installed
whip update

# from source
go install github.com/context-labs/whip/cmd/whip@v0.6.0

Binaries for darwin/amd64, darwin/arm64, linux/amd64 and linux/arm64 are attached below with SHA256SUMS.

Use your Codex subscription

whip auth codex        # opens a device-code sign-in: visit the URL, enter the code
whip                   # /model now lists every model your plan includes
  • Inside a session, /auth codex does the same. Neither flow changes your default model; pick one with /model or /model <id> codex-subscription.
  • /usage shows your subscription's rate-limit windows (used %, reset countdown) without leaving whip.
  • whip auth codex logout removes the provider again. whip auth openrouter logout and whip auth --help are new too.
  • Login is stored in ~/.codex/auth.json, compatible with the Codex CLI; tokens refresh locally and are never sent to the conversation or to any host other than chatgpt.com/backend-api.
  • Subagents on the subscription default to gpt-5.6-luna; pin any model via ctrl+p › Subagent model or taskModel in config.

Migrating a pre-release config: a provider named codex is renamed to codex-subscription on first load, along with its routes, pins and cached catalog. Nothing to do by hand.

Highlights

Codex subscription provider (#130, supersedes #14)

  • New openai-codex-responses API over the Responses SSE endpoint: tool calls, reasoning replay, usage, prompt caching, streaming tool-call rows.
  • Account-scoped /codex/models catalog drives /model; plan and rollout availability come from the backend, not a hard-coded list.
  • Exhausted windows surface immediately as "Codex subscription limit reached … resets in …" rather than a retry loop. A 401 on a rotated token triggers one forced refresh and a resend.

One retry policy for every provider

  • Transient failures (transport errors, 429, 5xx, mid-stream server_error) back off exponentially, honour Retry-After, report each retry in the UI, and never replay output already shown — including pending tool-call rows.
  • A Retry-After beyond 60 seconds is treated as a quota, not congestion, and surfaces instead of stalling the turn.

Model pickers

  • /model and the ctrl+p Model, Subagent model and Compaction model panels show model @ provider @ endpoint rows grouped by provider, window to the terminal height, and keep the cursor on screen while scrolling.
  • Subagent and compaction models can be any configured or catalog model.

Sessions and startup

  • whip -c / --continue resumes the latest session, whip -r <id> / --resume a specific one, --browse opens the session picker.
  • New installs boot in the opencode UI mode.

Dynamic workflows (experimental)

  • A workflow tool for deterministic multi-agent orchestration, gated behind "experimental": ["workflows"] in config.

Fixes

  • Catalog-only models on a non-default provider resolve again; defaultProvider now only breaks ties between catalogs advertising the same id.
  • Removing your last provider persists cleanly and clears dangling model pins.
  • Tool-call bookkeeping (duration, exit code) is no longer erased from the live conversation when a request is built.
  • A stream that dies mid tool-call drops that call instead of persisting malformed arguments.
  • Status line keeps the spend visible on narrow terminals; several lint and test-reliability fixes.

For embedders

llm.Client is now an interface implemented by OpenAI and Codex, with Clone, SetCacheKey, Endpoint, and an optional SetOnRetry. agent.New takes the interface.

Full changelog: v0.5.14...v0.6.0