v0.0.288: GPT-6 Astra
v0.0.288 (2026-09-06): GPT-6 Astra
The headline is OpenAI's GPT-6 Astra. It is the default Codex model in this
cut: sign in with ChatGPT, then /model or graff --model gpt-6-astra.
Astra runs on the Responses wire with a 272k context window, mid-turn
steering, vision, hosted search, and OpenAI server-side compact.
287 stays published as-is. This is not a retag.
GPT-6 Astra
A ChatGPT login now surfaces gpt-6-astra (Codex /models client 0.153.0).
/model codex picks it. Codegraff GPT-6 aliases use the same Responses path.
What that unlocks in this binary:
- Mid-turn steering. A follow-up typed while Astra is still answering is
sent asresponse.steeron the live WebSocket, instead of waiting for the
turn to finish. GPT-5.6 and earlier still queue until the current reply
ends. - Vision. Astra accepts native image blocks (pasted, dropped, or
@
attached), the same path the desktop composer and TUI already use. - Hosted
tool_searchandweb_search. Folded tools load by name at the
end of the window instead of paying every schema up front. Hosted web search
is spliced onto Codex Responses; it is not emitted until deferred tools are
ready.GRAFF_CODEX_WEB_SEARCH=0turns the search splice off. - OpenAI compact. GPT-6+ on Codegraff uses
/responses/compact. Grok on
the same gateway keeps the client summarizer (xAI's blob path is the better
fit there). - Astra working guidance is attached only while Astra is the selected
model. Switching away drops it; a child inherits it only when the child is
also Astra.
graff --model gpt-6-astra
# or, in a session:
/model gpt-6-astraGemini, on Google's Interactions API
Gemini is a first-class provider. GEMINI_API_KEY serves gemini-* directly
instead of falling through the gateway as an uncatalogued model.
graff --model gemini-3.8-flash picks it up.
This is a fourth wire format beside Anthropic Messages, OpenAI chat, and
OpenAI Responses: a turn POSTs one Interaction and reads back execution
steps (thought / model_output / function_call), with its own
step.start / step.delta event stream. Uncatalogued Gemini inherited a
conservative 200k window and compacted at 160k. The live models are 1,048,576
tokens and compact near 838k.
Two crashes found while wiring it are gone: a top-level JSON array (how
Google's compatibility layer returns errors) no longer panics, and streamed
extra_content no longer points into per-request scratch that is reset
before the next turn.
Desktop composer
The native app composer takes real @ files, image paste, and drop. Those
attachments ride the same ACP turn path as the CLI, so Astra (and every other
vision model) sees pixels, not a path string.
Harness
- Recorded user constraints ride the root prefix as live ledger JSON,
including the empty set, so a compaction recap cannot invent a recording. A
write refreshes instructions in the same turn and drops a cached Responses
continuation. - A second bracketed paste in the same input batch no longer turns its first
newline into Enter. - A truncated tool-call argument stream cannot poison later requests in the
same turn (#752). - A plain final reply with unfinished current work gets one reconciliation
request; a remaining stop is explicit (#745). - Hosted search waits until deferred tools are ready (#746).
Downloads
All six CLI archives, the curl installer, and checksums:
| File | Platform |
|---|---|
| graff-aarch64-linux.tar.gz | Linux arm64 |
| graff-aarch64-macos.tar.gz | macOS Apple Silicon (Developer ID signed, Apple notarized) |
| graff-aarch64-windows.tar.gz | Windows arm64 |
| graff-x86_64-linux.tar.gz | Linux x86_64 |
| graff-x86_64-macos.tar.gz | macOS Intel (Developer ID signed, Apple notarized) |
| graff-x86_64-windows.tar.gz | Windows x86_64 |
| install.sh | curl installer |
| SHA256SUMS | checksums for the six archives |
curl -fsSL https://github.com/justrach/codegraff/releases/download/v0.0.288/install.sh | bashBoth macOS binaries are Developer ID Application signed (hardened runtime,
timestamped) and Apple notarized (Accepted:
a7d967a6-f5e7-45ae-afc1-7888e6d490ca aarch64,
e9b9b29b-70e5-4240-846e-567b4728bb31 x86_64). Stapling is skipped on the
bare CLI (stapler error 73); Gatekeeper checks the ticket online at first
launch. GitHub also attaches the usual source zip/tarball for the tag.