Security requirements have a way of getting lost between design and implementation. A threat model gets approved in a design review, then the team moves on. Weeks later, a pull request lands that quietly violates one of those requirements—not because anyone was careless, but because the person reviewing the code never saw the original design context.
Dropbox has been wrestling with this exact problem. Their engineering organization is large, their codebase is sprawling, and their security documents live in systems that aren't naturally connected to code review. So they built a bridge: an integration that pulls relevant security context directly into the pull request review flow.
The underlying pieces are MCP (Model Context Protocol) and Dash, Dropbox's internal knowledge system. MCP provides a standardized way for AI systems to request and receive context, while Dash serves as the indexed, searchable layer over the company's internal documentation. Together, they let a code review agent look up threat models and security requirements without the human reviewer having to go hunting.
This isn't about automating security decisions. It's about reducing the friction that causes security intent to be missed in the first place.
The Problem: Design and Code Live in Different Worlds
In many organizations, threat models, design docs, and security requirements are standalone artifacts. They're stored separately from the codebase, often in a wiki or a document management system. As the system evolves, these documents drift out of sync with reality. A requirement that made sense at design time might be obsolete by implementation time, or it might still be critical but nobody remembers it exists.
The result is a recurring pattern: engineers and reviewers have to manually reconstruct the security intent behind a code change. That's time-consuming, and it's exactly the kind of manual cross-checking that gets skipped under deadline pressure.
The Architecture: Dash as the Context Layer, MCP as the Protocol
Dropbox's solution builds on Dash's existing enterprise security features: permission-based retrieval, encryption, and audit logs. Dash already respects the organization's access boundaries, so sensitive documents are only visible to people who should see them. The new piece is the MCP integration, which lets AI systems query Dash for relevant context during developer workflows.
Here's how it works in practice. When a pull request is created, the system identifies the code changes involved. It then uses MCP to retrieve relevant threat models and security requirements from Dash. Those documents show up directly in the code review interface. The reviewer no longer has to switch to a separate system and search for the right design doc—it's already there, attached to the PR.
The key architectural choice was to use MCP as the orchestration layer rather than building a one-off integration into CI or the code review tool. As Ishan Mishra, an engineering lead at Dropbox, explained in an interview with InfoQ, this avoids creating bespoke integrations for each workflow. MCP provides a standardized way for Dash to act as a context provider, which means the code review agent doesn't need to know where information lives or how retrieval works. It just asks for relevant context, and Dash handles the rest, including access control.
From Retrieval to Analysis: Comparing Context to Code
The initial version of the system was essentially a retrieval mechanism—find the relevant document and attach it to the PR. But that alone wasn't enough. A document dump doesn't tell you whether the code actually complies with the requirements.
The next step was to make the agent compare the retrieved context against the pull request itself. Instead of just attaching a threat model, the agent identifies which security requirements apply to the changed code and highlights potential gaps between the original design intent and the actual implementation.
This is a subtle but important shift. The system isn't just saying, "Here's a document that might be relevant." It's saying, "Here's a specific requirement from that document, and here's where the code might not meet it." That's much more useful in a review context.
Mishra emphasized that the system doesn't replace security reviewers. It makes code review more grounded in design intent, rather than being a generic quality check. The reviewer still makes the final call, but they have the relevant context right in front of them.
Trust Without False Confidence
One of the biggest risks with AI-assisted security review is that developers start to believe the AI has certified the code as secure. That's a dangerous illusion.
Dropbox has been careful to design against this. The system is positioned as a tool for gathering evidence and reducing manual cross-checking, not as a source of truth. Every finding must be traceable: the reviewer should be able to see the specific security requirement, where it came from, and the corresponding code. If the system can't back up a finding with both the requirement and the implementation, it doesn't surface it.
This traceability is crucial for trust. If a developer can't verify why the system flagged something, they'll start ignoring it. And if the system produces too many false positives, they'll lose faith entirely.
Developer feedback is also part of the loop. By collecting feedback on the accuracy, relevance, and actionability of results, the team can identify where retrieval or reasoning needs improvement. The system gets better over time, and the quality of subsequent reviews improves.
Reliability Means Relevance, Not Just Uptime
Scaling this to a large engineering organization isn't just about making the system fast enough. The hardest part, according to Mishra, is finding the right context.
Design documents and code don't always have a direct, obvious relationship. Keyword search isn't enough. Semantic retrieval helps bridge the gap, but only if the results are genuinely relevant and specific enough to act on.
Developers already get a lot of automated feedback during code review. They have a low tolerance for noise. Even if a finding is technically correct, if it's not relevant to the current code change, it damages trust. So reliability means more than just low latency and high uptime—it means the output is relevant, specific, actionable, and grounded in the code itself.
Maintaining that level of quality requires continuous evaluation. The team reviews the system's output, incorporates developer feedback, and iterates on retrieval and reasoning capabilities.
Balancing Depth, Latency, and Developer Trust
Code review is an interactive process. Developers don't want a research report; they want a few key pieces of context at the moment they need them.
Dropbox's approach is to retrieve enough context to understand the likely design intent, then present concise, evidence-based findings. They deliberately avoid surfacing every weak signal. If the system can't clearly connect a requirement to the current code, it errs on the side of silence.
This restraint is a form of respect for the developer's attention. Latency matters, but so does not burning out the reviewer with noise. The trust comes from relevance, traceability, and knowing when to hold back.
Lessons for AI-Assisted Engineering Workflows
Mishra's biggest takeaway from this project is that AI agents become far more valuable when they can draw on the organization's past decisions, not just the immediate task at hand. Many AI coding tools focus on generating or reviewing code in isolation. That's useful, but it misses the bigger question: why was this code written in the first place?
The same pattern applies beyond security. Privacy requirements, API formatting conventions, architectural decisions—all of these are organizational knowledge that can be connected to implementation through the same MCP + Dash approach.
The broader lesson is that AI assistance shouldn't just make engineers write code faster. It should help organizations preserve and apply the knowledge they've already accumulated at the critical moments where decisions are made.
For Dropbox, that means security design documents are no longer passive artifacts. They're active inputs to the engineering workflow, showing up exactly where they're needed most: in the code review.
Comments (0)
Please sign in to post a comment.
Don't have an account? Create one
No comments yet. Be the first to comment!