Gemini 2.5 Pro made long context feel less like a lab stunt and more like something a product team could plan around.
Gemini 1.5 made the long-context headline unavoidable. Gemini 2.5 made the operational question sharper: what do you do when a thinking model can take a million-token context window, handle mixed inputs, and reason across large code repositories or document sets?
The answer is not “send everything.” That answer gets expensive and sloppy. The useful answer is more like: decide when preserving the original material beats retrieval, build a context plan, and evaluate whether the model actually used the extra material.
That is the shift. Long context stopped being only capacity. It became routing behavior.
repositories are a good stress test
Code repositories show why this matters.
Small-context coding agents have to guess what matters. They read a file, search for a symbol, inspect a test, then maybe miss the configuration or helper that explains the bug. Retrieval helps, but retrieval can select the wrong neighbor. Summaries help, but summaries can flatten the weird detail that matters.
Large context lets the system carry more of the repository at once: the target file, tests, route definitions, package config, docs, and a handful of related modules. That does not make the model omniscient. It does reduce the number of brittle handoffs between search, summarization, and reasoning.
For planning work, that can be useful:
task: update auth callback behavior
context:
- src/routes/auth/callback.ts
- src/lib/session.ts
- src/lib/oauth/*
- tests/auth/*
- docs/auth-flow.md
- package.json
goal:
identify files likely to change and tests likely to fail
The context is still curated. The difference is that the curated set can be larger and more coherent.
context planning becomes a feature
Once long context is practical, the context builder becomes a product component.
It should know what kind of task is being attempted. A code review needs diffs, nearby tests, owners, and relevant docs. A contract review needs the contract, amendments, policies, and a question-specific section map. A support investigation needs the ticket, account state, recent incidents, and product docs. A video analysis task needs source video, transcript, timestamps, and any user-selected region.
I would represent that plan explicitly:
{
"task_type": "repository_planning",
"context_strategy": "large_curated_context",
"sources": [
{ "path": "src/routes/auth/callback.ts", "role": "target" },
{ "path": "src/lib/session.ts", "role": "dependency" },
{ "path": "tests/auth/callback.test.ts", "role": "verification" },
{ "path": "docs/auth-flow.md", "role": "domain_context" }
],
"excluded": [
{ "path": "dist/", "reason": "generated" },
{ "path": ".env", "reason": "secret" }
]
}
That plan is a receipt. It tells the user and the system what the model saw and what it intentionally did not see.
Without a plan, long context becomes a junk drawer with a larger token budget.
retrieval still earns its keep
I would still use retrieval with Gemini 2.5-style long context.
The difference is where retrieval sits. Instead of retrieving three tiny chunks and hoping they are enough, retrieval can assemble a source set. Then long context lets the model inspect larger pieces of that set with less pre-compression.
This is a better division of labor:
permissions decide what can be used
retrieval proposes candidate sources
context planning chooses coherent source units
long context preserves enough original material
reasoning produces an answer with citations or actions
verification checks the result against the sources
The permission step is important. Large context makes it easier to over-share. A model that can read an entire repository should not automatically receive secrets, generated files, unrelated customer records, or documents outside the user’s scope.
Context size is not authorization.
thinking budget and context budget interact
Gemini 2.5 also pushed the “thinking model” framing. That matters because long context and reasoning budget compound each other.
A model asked to reason over a huge input may need more time. More time may improve the answer. It may also make the product feel slow or too expensive. If the system adds a large context window and high reasoning effort to every ambiguous request, the cost curve gets ugly fast.
The router needs to decide two budgets:
- how much source material to include
- how much reasoning effort to spend
Those choices should be related but not identical. A simple extraction from a long document may need a lot of context and modest reasoning. A hard debugging task may need moderate context and high reasoning. A quick classification may need neither.
I would log both:
case: auth-callback-plan-018
context_tokens: 214000
thinking: medium
result: accepted
review_note: missed one test file, otherwise useful
That lets the team learn whether the extra context or the extra reasoning did the work.
operational long context needs compression points
Large context does not remove summarization. It moves summarization to better places.
During a long workflow, the system may read a lot of material, make a plan, inspect files, run tools, and revise the plan. It cannot keep appending everything forever. Even with a million tokens, the useful question is what should remain live.
I like compression points that produce named artifacts:
repository map
source manifest
risk list
open questions
test plan
decision log
Those artifacts can be reviewed. They can also be reused without carrying the entire raw context into every later step.
The mistake is invisible compression: the model silently summarizes and the next step treats the summary as the source. If a later decision depends on a compressed artifact, the artifact should say what it omitted or link back to source material.
evals should test use, not capacity
A million-token window is impressive. It is not an eval.
The eval should ask whether the system used the long context well. For repository tasks, that might mean:
- identifies the right files to edit
- avoids generated or unrelated files
- finds tests that cover the changed behavior
- detects config or dependency constraints
- cites source files accurately
- handles conflicts between docs and code
For document tasks:
- finds clauses across long documents
- detects contradictions
- preserves page or section citations
- resists irrelevant repeated language
- explains uncertainty when evidence conflicts
The point is to test the workflow, not the theoretical window size. A model can accept the context and still ignore the key source.
what felt operational
Gemini 2.5 made long context feel operational because it combined the pieces product teams actually care about: large context, multimodal inputs, stronger reasoning, developer availability, and enough performance that the question moved from “is this possible?” to “where should this route be used?”
That is a practical shift.
The hard part is no longer imagining a model reading a giant input. The hard part is deciding which giant input it should read, what it is allowed to see, how much reasoning budget it gets, how the answer cites evidence, and when a smaller route would have been better.
Long context is most useful when it is treated like infrastructure. It needs budgets, manifests, permissions, evals, and reviewable compression. Without those, it is a very large prompt with a very large hiding place for mistakes.
Related posts

About Jeremy London
Engineering leader and builder in Denver. I write about AI platforms, agents, security, reliability, homelab infrastructure, and the parts of engineering work that have to survive production.