Build1 distinct publisher3 min readPublished
Agentic retrieval turns one question into an unknown number of lookups, and each is a place isolation can fail, which is why the interesting line in AWS's design is the one still leaving per-user isolation with your application.
The Engineer · Build desk

Compiled by The EngineerSomething wrong?How this is made
In a single-hop retrieval design the filter attaches in one place. Your code builds the query and appends the tenant predicate, and a reviewer can count the call sites. Agentic retrieval removes the count. The planner decides whether a question gets one lookup or a decomposition into sub-queries followed by several retrievals [8], so the number of places a filter must be present is chosen at runtime by something outside your codebase [1]. Every one of those hops has to carry it or isolation breaks [2].
AWS is precise about the other half of the requirement. The boundary must be enforced from a verified identity rather than a value sent by the client [1], and Cognito is the component that supplies that identity [10]. A tenant id in the request body is exactly what that sentence excludes, which is worth saying out loud, because it is also the cheapest thing to build.
The post states that built-in agentic retrieval honors access permissions on every hop [3]. It also lists per-user isolation among the responsibilities that stay with your application, next to authentication, the upload experience, and the chat UI [7]. Both readings can hold at once: the service enforces the attributes it is handed, and you own the correctness of the handoff [2]. The line I would want before signing this off is which component rejects a retrieval whose filter is missing, and the excerpt does not contain it.
For the every-hop guarantee to mean anything in your account, three properties have to hold. The identity-derived attribute travels in request context rather than in the question text. The planner cannot widen or drop it while rewriting sub-queries. A request that arrives without one fails instead of retrieving everything. None of those is something you can benchmark from outside; they are properties of a closed implementation, so you read the reference docs and then test behaviour with two tenants and a deliberately leaky question.
The write side has its own timing. Direct ingestion through the custom connector makes a document retrievable within seconds [5], with SQS between the upload endpoint and ingestion to absorb bursts and route repeatedly failing messages to a dead-letter queue [11], and DynamoDB holding per-document indexing status [12]. Seconds is quick enough that a document written with the wrong owner attribute is reachable by another user's next question well before anyone reads the status table.
What you stop operating is not trivial: a vector and full-text search engine, an ingestion pipeline that parses and embeds multiple modalities, and a synchronized index [13], with ingestion, storage, embedding and ranking managed and no capacity to monitor [4]. No capacity to monitor is a pleasant property right up to the moment you want a metric for how many hops actually ran. In my context the trade is worth making when the alternative is hand-building the index and the isolation logic around it, and worth making only once the binding between identity and filter is written down somewhere I can cite. That binding is an API-reference question, and this post is an architecture tour with a deployable repository attached [15].
Ranked by verification strength, evidence, and original report placement.
Each tenant's documents must stay isolated from every other tenant's, and that boundary must be enforced from a verified identity rather than a value sent by the client.
Agentic retrieval compounds the isolation problem: the agent decomposes a question into sub-queries and runs multiple retrievals, and every one of those hops must carry the tenant filter or isolation breaks.
Amazon Bedrock Managed Knowledge Base provides built-in agentic retrieval that uses iterative planning and multi-hop retrievals to answer complex questions, and it honors access permissions on every hop.
The service manages ingestion, storage, embedding and ranking, so there is no infrastructure to provision and no capacity to monitor.
The knowledge base owns the planning step that decides what to look up, the vector index, the ranker, and the model that produces the final response.
The application is responsible only for product-specific parts, such as the upload experience, the chat UI, authentication, per-user isolation, and any custom business logic.
Distinct publishers with included, body-backed reporting in this cluster.
Follow any of these and your For You feed starts watching them — no settings page required.
build
S3 to Lambda is async and at-least-once: the 3% that vanished after eight quiet months1 distinct publisher
build
Multi-protocol storage deletes the sync job, and leaves the trigger problem behind1 distinct publisher
build
AWS moves agent authorization out of the agent and into the plumbing1 distinct publisher
build
AWS's phone-ordering host is really an MCP wiring diagram with no retry button1 distinct publisher
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
Authoritative on intent, unverified on behavior
Every fact here comes from the company that operates the service, and the sensitive ones are exactly the ones an outsider cannot confirm: that permissions are honored on each hop of a planner AWS controls, and that uploads become retrievable in seconds. The mechanics score better than the guarantees — the identity path from Cognito sub to user_id tag is specific enough to argue with, and the repository is inspectable. Nothing in this reporting shows anyone having inspected it.
One publication, no deployments
The strongest demand signal AWS offers is that multi-tenant document chat 'has become a frequent request' from large-scale customers. That is a sales observation, not usage: no named tenant, no document or query volumes, no team reporting what happened after they deployed the repository. We would rather say nothing than convert a reference architecture into traction.
The introduction promises what the responsibility split withholds
The post earns credit for naming the real failure mode: one question becomes an unknown number of lookups, and each must carry the tenant filter. Then the guarantee it delivers is permission honoring inside Bedrock, while per-user isolation, and the user_id tag the filter depends on, stay in your Lambda. The seam sits precisely where the opening said isolation breaks, and nobody is named as accountable for a tag that is wrong or missing. 'No infrastructure to provision' is fair; 'the isolation problem is handled' is what a reader will hear, and that is not what was written.
Seven AWS meters in the bill of materials
This is AWS's own machine learning blog arguing that the retrieval stack you might build is undifferentiated work, and the replacement is Bedrock — surrounded by Cognito, API Gateway, Lambda, SQS, DynamoDB, S3 and CloudFront. The comparison that motivates the whole piece is drawn by the party that profits from how it comes out. Useful engineering can still be published for commercial reasons; both are true here.
Sure what was said, unsure how it holds
We can be confident about the design as described — one publisher, unambiguous, self-consistent, and the authority on its own architecture. Confidence drops on everything that would matter in production: no second account, no adoption, no measured latency, no leakage test, and a responsibility boundary the text leaves unresolved. Treat the architecture as reliable and the guarantees as pending.