Security Architecture

Security by design, not by afterthought.

Weave puts a semantic firewall, envelope-encrypted credentials, tenant-scoped access control, and an audit trail between your AI clients and the MCP servers they call.

Hosted in Germany. Where a protection is opt-in, configurable, or still being rolled out, this page says so.

MCP Firewall

Semantic execution control for tool calls

Tool calls, resource reads, and prompt gets on the gateway and MCP transports pass through a pipeline of 10 security scanners on the request and response side (some scanners apply to one direction only). Enforce mode is the default; deployments and tenant policies can switch to shadow mode, which records findings without blocking.

Secret Detection

Detects API keys, tokens, private keys, and connection strings before they reach tools or leave the platform.

PII Detection

Identifies personal data like SSNs, credit card numbers, German IBANs, and email addresses in tool arguments and results.

Prompt Injection

Catches system override attempts, role impersonation, delimiter injection, and response poisoning.

Destructive Commands

Detects dangerous shell commands (rm -rf, DROP TABLE), SQL injection, reverse shells, and force pushes.

Suspicious URLs

Detects exfiltration endpoints (webhook.site, ngrok), credentials in URLs, and internal network access attempts.

Data Exfiltration

Catches bulk data extraction patterns, SELECT *, pagination bypass, and oversized response payloads.

Tool Abuse

Detects privilege escalation (sudo), path traversal, command chaining, and subcommand injection.

SSRF

Flags request arguments that target cloud metadata, loopback, or private network addresses, including encoded IP forms.

Bidi Control Characters

Flags invisible Unicode bidirectional override characters used for visual spoofing.

Control Tags

Neutralizes instruction-like markup (<system>, <IMPORTANT>) in tool responses before it reaches the model.

What happens when a finding is detected

Block

Call rejected before it reaches the MCP server (on the response side, the result is withheld). Audit entry recorded.

Redact

Sensitive content replaced with safe placeholders. Execution continues with cleaned data.

Require Approval

Call held until the user or a tenant admin approves or denies it. Pending approvals expire after 5 minutes by default.

Log Only

Finding recorded in audit trail. Execution continues unchanged.

Transport coverage

The firewall scans the MCP transports below, not just REST.

Universal Gateway
ReqResp
Aggregated scanning per tool call
Streamable HTTP (POST)
ReqResp
Modern MCP spec (2025-11-25)
Streamable HTTP (GET)
ReqResp
Server-initiated streams, buffered scanning
SSE Transport (Legacy)
ReqResp
Buffered event assembly
JSON-RPC / REST API
ReqResp
Inline scanning of tool calls
Credential Vault

Envelope encryption with per-tenant key isolation

Credentials are encrypted with a unique per-tenant Data Encryption Key (DEK). The DEK itself is encrypted with a Key Encryption Key (KEK) held by the KMS provider configured for the deployment. If the tenant key cannot be used, encryption falls back to the platform-wide key and the fallback is logged.

Fernet Encryption

AES-128-CBC + HMAC-SHA256 authenticated encryption. Stored credentials are kept only in encrypted form in the database.

Per-Tenant DEKs

Each tenant gets a unique random encryption key. Compromise of one tenant's data does not expose others.

KMS Provider Support

KEK managed via Local Fernet (default), AWS KMS, or HashiCorp Vault Transit, selected per deployment.

Key Rotation

The vault supports tenant DEK rotation: credentials are re-encrypted under row locks in one transaction and the key version is incremented. Rotation is not yet a self-service action.

AI Never Sees Keys

MCP server credentials are decrypted server-side when a container starts and injected as environment variables, not passed through the model context.

Log Sanitization

A log filter on the backend root logger redacts common secret patterns (API keys, bearer tokens, passwords) from log messages.

Tenant Isolation & Governance

Tenant isolation with defense in depth

Tenant separation is enforced in the application layer, which scopes queries to the caller's tenant. PostgreSQL Row-Level Security (RLS) policies are in place as a database backstop and are being rolled out to fail-closed enforcement.

Row-Level Security

RLS policies on tenant-scoped tables match tenant_id against the session tenant. A runtime guard flags queries without tenant context (warn by default, reject in strict mode). Database-level fail-closed enforcement is not yet active.

Agent Identities

Four principal types (Human, Agent, Service, Workflow). API keys stored as SHA-256 hashes only — plaintext shown once at creation.

Gateway Profiles

Fine-grained access control with allow/deny rules. Pattern matching on server names, tool names, and capability types.

OAuth Scope Governance

Unknown OAuth scopes require admin approval. Predefined scope packs and scope policies classify risk (low to critical).

Connection Authorization

Servers granted an OAuth connection can call tools only while the grant is active and the connection is usable. Grants are individually revocable.

Container Hardening

MCP server containers run with a read-only root filesystem, no-new-privileges, all Linux capabilities dropped, and memory, CPU and process limits. Non-root (UID 1000) is enforced on the Kubernetes runtime; on the Docker runtime, containers run as the image's own user.

Audit Trail

Every action logged with full context

Over 90 distinct audit actions are defined across the platform. Tool calls, logins, credential access, configuration changes, and governance decisions are recorded in a tenant-scoped audit log.

MCP Activity

12 actions

Tool calls, resource reads, prompt gets, bridge requests

Security Events

25 actions

Login, OAuth flows, token revocation, device registration

Account & GDPR

6 actions

Registration, data export (Art. 20), account deletion (Art. 17)

Firewall Decisions

6 actions

Block, redact, require approval, log only, allow, confirmation resolved

Each audit entry includes: user ID, tenant ID, action, resource type, resource ID, result, IP address, timestamp, and event metadata (JSON).
Infrastructure & Compliance

Hosted in Germany. GDPR tooling built in.

German Data Centers

Platform servers and databases run on Hetzner Cloud in Germany. Sub-processors are listed in our DPA; tools you connect call their own third-party APIs.

GDPR Data Export

Self-service export (Art. 20) of account data (profile, servers, credential metadata, connections, reviews, audit entries) as JSON.

Right to Erasure

Self-service account deletion (Art. 17) that stops your containers and deletes your servers, credentials, connections, and profile. Audit log entries are retained.

TLS Everywhere

Let's Encrypt certificates with auto-renewal. HTTP traffic redirected to HTTPS at the proxy. HSTS enabled with a max-age of at least one year.

Security Headers

X-Frame-Options: DENY, X-Content-Type-Options: nosniff, Referrer-Policy, and a Permissions-Policy that disables camera, microphone, and geolocation.

Network Isolation

Docker network separation: an internal network (database, Redis, backend, MCP containers) and a web network (reverse proxy, frontend, backend). Only the reverse proxy publishes public ports.

What Weave secures vs. DIY MCP

Concern
DIY MCP Setup
Weave
Tool call security
No scanning — AI can execute anything
10 scanners on requests and responses
Credential storage
.env files, plaintext, no encryption
Envelope encryption, per-tenant DEKs, KMS support
Tenant isolation
None — single user, single config
Application-layer tenant scoping, RLS backstop in rollout
Audit trail
None — no logging of tool calls
90+ audit actions, tenant-scoped
Access control
None — full access to all tools
Gateway profiles, principal identities, scope governance
Container security
Root containers, full capabilities
Read-only FS, no-new-privileges, all capabilities dropped
Data residency
Wherever you deploy
Hosted in Germany, GDPR export and deletion built in

Questions about our security architecture?

We publish our DPA (Art. 28 GDPR), privacy policy, and legal notice. For security-specific inquiries, contact us directly.