How It Works
When Enforce is installed, it intercepts MCP tool calls before execution:- User invokes a tool — The AI assistant requests a tool call from a shadow MCP
- Intercept — The call is captured before reaching the MCP server
- Policy evaluation — The call is checked against your organization’s policies
- Decision — The call is either:
- Allowed — Proceeds to the MCP server normally
- Blocked — Prevented and logged for security review
- Audit logging — All intercepted calls are logged for visibility
What Gets Intercepted
Enforce intercepts tool calls from shadow MCP servers (those configured directly in the client, not through Runlayer). Tool calls to Runlayer-managed MCPs are handled by the Runlayer proxy and are not affected.Allowed remote MCP URLs (allowlist)
By default, Enforce blocks remote (HTTP/S) MCP servers that do not point at your Runlayer instance. Workspace admins can add allowed remote MCP URLs under Settings → Shadow MCPs, in the Enforce section (Save allowlist). Each entry is a base URL. A tool call’s MCP URL is allowed when:- The scheme, host, and port match the entry (default ports
443/80for HTTPS / HTTP are treated the same as omitting the port). - If the entry has no path (or only
/), any path on that origin is allowed. - If the entry includes a path (for example
https://partner.example.com/mcp), the MCP URL’s path must match that prefix with a path boundary —/mcpand/mcp/streammatch;/mcpbackupdoes not.
Supported Clients
| Client | macOS | Windows |
|---|---|---|
| Cursor | ✓ | Coming soon |
| Claude Code | ✓ | Coming soon |
Additional client support is in active development. Check the Runlayer dashboard for the latest supported clients.
Deployment
MDM Deployment
Deploy Enforce across your organization directly from the Runlayer dashboard:Manual Installation
For testing or individual device setup, install Enforce directly using the Runlayer CLI. Install the Runlayer CLI:~/.runlayer/config.yaml.
Install Enforce:
| Flag | Description |
|---|---|
--install | Perform the installation |
--uninstall | Remove hooks |
--yes | Skip confirmation prompts |
--host | Validate this host exists in config before install |
--client | Install for a specific client (cursor or claude_code; default: all) |
--all-events | Register all hook events including pipeline (default: enforcement only) |
--no-enforcement | Monitoring only — register hooks but skip blocking enforcement |
--mdm | Install to enterprise location (requires elevated permissions) |
--no-enforcement when you want visibility into shadow MCP tool calls without blocking any requests. All calls are still logged and sent through the data pipeline, but no policy enforcement is applied. This is useful for a rollout phase where you want to observe before enforcing.
Uninstall:
Troubleshooting
Not intercepting calls
Not intercepting calls
- Restart the client application after installation
- Check that the client is supported (see table above)
- Ensure Enforce is installed for the correct client
Installation fails
Installation fails
- Ensure
uvis installed:curl -LsSf https://astral.sh/uv/install.sh | sh - Check network connectivity to your Runlayer instance
- Verify the host URL is correct
- Try running with verbose output for more details
Performance issues
Performance issues
- Check your Runlayer instance connectivity
- Review the number of policies being evaluated
- Contact Runlayer support if issues persist
Related Resources
Shadow MCP Overview
Understanding the shadow MCP problem
Detect
Discover shadow servers via scheduled scans
Policies
Configure access control policies
Audit Logs
View intercepted tool calls