TL;DR — OpenAI agent turns now use the Responses API: GPT-6 Astra is back with tool calls, GPT-6 Sol and Luna reason while they work, and GPT-6 Sol is the new OpenAI default.
3.5.0 had to work around GPT-6 on Chat Completions, the only OpenAI API Codeep
spoke: Astra could not call tools there at all, and Sol and Luna could only
with reasoning switched off. Codeep now talks to OpenAI's Responses API for
agent turns. Before turning it on, it was checked against OpenAI with real
requests: Astra calls tools, Sol reasons at high while calling two tools at
once, and the reasoning Codeep hands back between tool calls is accepted.
Upgrade notes
- This reverses two 3.5.0 upgrade notes. GPT-6 Sol and Luna no longer run
agent turns with reasoning off —/thinkingapplies to them again — and
GPT-6 Astra is back in the OpenAI picker. If 3.5.0 moved you from Astra
to Sol, you stay on Sol; pick Astra again with/modelif you want it. - The OpenAI default model is now GPT-6 Sol ($2/$10). It applies when you
switch to OpenAI; a model you already picked is kept. - Proxies stay on Chat Completions. With
OPENAI_BASE_URLset (Azure,
LiteLLM and the like) nothing changes, and there GPT-6 Astra still cannot
call tools — Codeep says so once instead of quietly falling back to text
tools. - Kill switch, for this release:
CODEEP_OPENAI_WIRE_API=chat(or the
config keyopenaiWireApi) puts OpenAI agent turns back on Chat
Completions.
Added
- OpenAI Responses API for agent turns on the official endpoint. Codeep
keeps its own history as before (store: false); the reasoning a model
produced is handed back to it within one run and never written to your
session files. - A cut-off reply now says it hit the output limit, and a reply that reached
it while still thinking tells you instead of ending silently.
Changed
- Agent turns on OpenAI get at least 32K output tokens (64K at Max), because
reasoning counts toward that limit on the Responses API.
Internal
- The requests Codeep makes to the Responses API are pinned by tests built from
recordings of the real exchange (src/utils/__fixtures__/responses/recorded/),
made withscripts/record-responses-fixture.mjs— a script the maintainer
runs with their own key, which asks before sending anything and never
stores the key.