Retrieval-Augmented Generation, or RAG, is frequently presented as something close to a black box — an extra brain bolted onto a language model that somehow knows things the model wasn't trained on. That framing does real damage to anyone trying to reason clearly about what a RAG system can and cannot access, and about what could go wrong with it. The more useful and accurate framing is much plainer: RAG is a governed tool call.
The shift from stuffing to calling
The older, simpler approach to giving a model access to proprietary information is static context stuffing: taking entire documents and pasting their contents directly into the prompt, every time, regardless of whether that turn's question actually needs them. This has two clear problems. It carries a high token cost and adds latency, since the full document travels with every request whether it's relevant or not. And it has essentially no security filtering — if a document is in the prompt, the model can see and potentially surface any part of it, with no check on whether the person asking actually has permission to see that content.
The alternative is to treat retrieval as a tool the agent calls at run time, on demand. A typical flow: a query comes in, the agent calls a retrieval tool — something like retrieve_knowledge() — that tool applies an identity-aware access-control filter before doing anything else, a vector search runs only over the content that filter allows, and only the relevant, permitted results are injected into the prompt for that specific turn. This is ephemeral: no static document bloat sits in every conversation regardless of relevance, and identity-aware filtering happens before the search, not as an afterthought on the results.
The caveat worth keeping
It would be an overstatement to call tool-based RAG's savings absolute. The retrieval tool's own schema still has to be registered and still consumes token headroom on every single turn, whether or not it actually gets called that turn, exactly like any other tool available to the agent. The gains from moving away from static context stuffing are real and typically large, but they are not literally zero.
Why the reframing matters
Once RAG is understood as a governed tool call rather than a mysterious extra subsystem, a whole set of previously fuzzy questions become concrete and answerable. What can this system access? Whatever the retrieval tool's access-control filter permits for this specific user, at this specific moment — the same kind of question you'd ask about any other tool with scoped permissions. What gets logged? Whatever tracing infrastructure already covers every other tool call, because retrieval is a tool call. Nothing about RAG needs to be treated as exceptional once it's understood this way — which is exactly why enterprise deployments benefit from thinking about it as a governed tool call from the start, rather than retrofitting governance onto something that was designed and explained as if it were magic.
Questions to bring to your team
- Do you know exactly what data sources your organization's AI tools can currently retrieve from?
- What would you want logged every time a retrieval call is made?