Filling GPT-6 Astra's 1M-Token Window Costs $10 a Call OpenAI's GPT-6 Astra, launched September 3, 2026, offers a 1M-token context window at $10 per million input tokens, making a fully filled window cost $10 per request. An engineer argues that stuffing the window is not a substitute for retrieval, citing cost, relevance, debuggability, latency, and citation benefits of retrieval pipelines. There is a moment in every LLM project where someone says the quiet thing out loud. "The context window is a million tokens now. Why are we still building a retrieval pipeline? Just put the whole codebase in." It is a reasonable question. It has an answer, and the answer is on the price sheet rather than in the architecture diagram. OpenAI announced GPT-6 Astra on 3 September 2026. It takes text and image input, returns text, and carries a 1M token context window . The launch list price for the standard tier is Put the two specs next to each other. One million tokens of context. Ten dollars per million input tokens. Fill the window and you have spent $10 before the model has emitted a single token of answer. A giant context window is not a replacement for retrieval. It is a way to pay for the retrieval you did not do. OpenAI published its own benchmark results at launch. Those are vendor-reported rather than independently verified, and worth reading in that light: GPQA Diamond at 96%, FrontierMath Tier 4 v2 at 97.6%, ARC-AGI-3 at 98.6%. None of those numbers tell you whether to fill the window. The price sheet does. Every number below is the published per-token price multiplied out. Nobody's invoice was consulted. Standard tier, one request that fills the context window: The input side is 250 times the output side. For an ordinary request shape, that ratio runs the other way and output is where your bill lives. The moment you fill a million-token window, that reverses and it is not close. Give the thing traffic. A thousand requests a day, each one stuffing the window: On the fast tier it is $20 per filled window, so double it. The retrieved version of the same feature sends about 8,000 tokens of prompt instead: Same model. Same question. Same answer length, so the output half of the bill is identical either way. The entire difference lives on the input side, and it is 125x. If your corpus is genuinely fixed across requests, check whether cached input pricing applies to your account before you accept the $10 as your real number. Caching helps most exactly where the same bytes go up over and over. It does nothing for a corpus that changes per request, and it does not change any of the other four reasons below. Cost is the loudest argument and it is not the only one. Relevance is a thing you can inspect. When you retrieve the top twelve chunks, you have a list. You can read it. You can check whether the chunk that answers the question is in it. When you stuff a million tokens, you have a haystack and a hope. Failure becomes two separable questions. A wrong answer from a retrieval pipeline splits cleanly: was the right chunk retrieved, and did the model use it. Those have different fixes. Bad retrieval means your chunking, your embedding model, or your query is wrong. Good retrieval with a bad answer means your prompt is wrong. A wrong answer out of a stuffed window is one undifferentiated problem, and the only lever you have is to rewrite the instructions and try again. Latency follows the input. A million tokens has to be sent and processed before the first token of the answer comes back. Eight thousand does not. You do not need a benchmark to know which of those a user waiting on a spinner prefers. Citations. This is the one that changes what you can ship. Retrieved chunks carry ids. Those ids go into the prompt, come back in the answer, get rendered as sources in your UI, and get written to your logs. Six months later somebody asks why the system told a customer the wrong refund policy, and you can answer, because you know which paragraph of which document version was in front of the model. Stuff the window and the honest answer to that question is "all of it". I am deliberately not making a claim here about answer quality degrading over long contexts. That is contested, it depends on the model, and I have not measured it on Astra. The four arguments above hold without it. Here is the whole pipeline in TypeScript. It is about a hundred lines. Set that against the $300,000 a month that the thousand-requests-a-day arithmetic above produces, and the build-versus-buy conversation gets short. Start by loading documents off disk. Swap this for your database, your S3 bucket, your Git repo. js import { readdir, readFile } from "node:fs/promises"; import { join } from "node:path"; export type Doc = { id: string; text: string }; export async function loadDocs dir: string : Promise