Security
How Merlean handles your code and your data
Merlean reads source code and takes actions inside applications, so the sensible questions are what it can reach, what it keeps, and what stops it exceeding the person who asked.
The permission boundary
Merlean executes through your application using the requesting user's own credentials - the session or token their browser already holds. Every authorisation check your application performs runs on Merlean's requests exactly as it does on a request from your own frontend.
The practical consequence is the important one: Merlean cannot do anything the person asking could not do by hand. There is no service account, no elevated path, and no second permission system that could drift out of step with the first.
Repository access
Analysis needs to read your code. Merlean connects through a GitHub App installation or a GitLab OAuth connection, scoped to the repositories you select, with read access. It does not push commits, open pull requests or modify anything in your repository.
OAuth tokens and installation credentials are stored encrypted at rest. Installation tokens for GitHub Apps are short-lived and minted on demand rather than held.
- You choose which repositories are visible to the installation, and can revoke it from your provider at any time.
- What analysis produces is a structural model - routes, fields, validation rules, permission checks and workflow order - not a copy of your codebase.
- Removing the connection stops further analysis immediately.
Where execution happens
The chat executor can run on our cloud data plane or on your own infrastructure. Self-hosting means model calls and request execution stay inside your network, and the data plane reads its configuration from your environment rather than from ours.
Analysis and flow matching run on our control plane in both cases. That is the pass that reads your repository and produces the structural model, and it is worth knowing which side of the line it falls on when you are assessing the deployment.
Tenant isolation
Each workspace has its own database. Sessions, analysed flows, conversations and usage records live in that database rather than in a shared table filtered by a tenant column, so a query cannot accidentally cross a tenant boundary.
Access within a workspace is governed by roles. An owner manages members and connections; members hold read or read-and-write permissions, enforced server-side rather than only hidden in the interface.
What we do not claim
Merlean does not currently hold SOC 2, ISO 27001 or comparable third-party certification. Saying so plainly is more useful than implying otherwise: if a certification is a procurement requirement for you, tell us and we will be straight about timelines rather than about status.
Reporting a vulnerability
Email hello@merlean.ai with enough detail to reproduce the issue. We will confirm receipt, keep you informed while it is investigated, and credit you if you would like to be credited.
Questions about a specific deployment?
Self-hosting, data residency, and procurement review are all normal conversations to have before a trial rather than after one.