MCP Hardening & Security Architecture (v1.6.0) â
DevDiff v1.6.0 introduces enterprise-grade hardening for Model Context Protocol (MCP) server interactions. As AI agents (Copilot, Gemini, Claude, Cursor, Windsurf) gain deeper integration into local development environments, DevDiff acts as a secure isolation layer between IDE agents and the host operating system.
đ¯ Architecture & Hardening Pillars â
đĄī¸ Hardening Features â
1. Local-First Execution Boundary â
- Zero External Network Overhead: All 8 MCP query tools (
devdiff_query_entity,devdiff_query_changes,devdiff_query_dependencies,devdiff_query_architecture,devdiff_query_search,devdiff_query_compliance,devdiff_query_stats,devdiff_query_timeline) query.devdiff/memory/codebase-index.jsonlocally. - No Cloud Indexing: AST analysis and memory lookups execute sub-50ms directly on the developer's workstation.
2. Autonomous Loop & Query Rate Limiting â
- To prevent agent infinite loops or runaway query execution, DevDiff includes an integrated token-bucket rate limiter (
RateLimiter). - Default Limit: 30 queries per minute per client connection.
- Configurable: Configurable in
.devdiff/config.json:
json
{
"mcp": {
"rateLimiting": {
"enabled": true,
"maxQueriesPerMinute": 30,
"burstSize": 5
}
}
}3. Unicode Tag-Block & Adversarial Prompt Injection Stripping â
- Hidden Unicode Tag Characters (
U+E0000..U+E007F) and zero-width spaces are frequently embedded in malicious PRs or external dependencies to perform prompt injection attacks against LLMs. - DevDiff automatically runs
PromptSanitizer.sanitize()on all tool arguments and codebase snippets before returning data to the MCP client.
4. JSON-RPC Strict Schema Validation â
- All incoming MCP tool requests are validated against strict TypeScript & Zod schemas.
- Extra parameters, unexpected object mutations, or malformed JSON payloads trigger immediate RPC error code
-32602 (Invalid Params).
đ MCP Tool Security Matrix â
| MCP Tool Name | Access Type | Path Validation | Secret Redaction | Rate Limited |
|---|---|---|---|---|
devdiff_query_entity | Read-only AST | â Required | â Enforced | â Yes |
devdiff_query_changes | Read-only Git | â Required | â Enforced | â Yes |
devdiff_query_dependencies | Read-only Graph | â Required | âšī¸ N/A | â Yes |
devdiff_query_architecture | Read-only Graph | â Required | âšī¸ N/A | â Yes |
devdiff_query_search | Read-only Index | â Required | â Enforced | â Yes |
devdiff_query_compliance | Read-only Rules | â Required | â Enforced | â Yes |
devdiff_query_stats | Read-only Metrics | â Required | âšī¸ N/A | â Yes |
devdiff_query_timeline | Read-only Git | â Required | â Enforced | â Yes |