Industry-Leading AI Security for MCP Ecosystems
Runlayer ToolGuard is an industry-leading suite of specialized machine learning models that protect your MCP environment from tool poisoning, prompt injection, and output manipulation attacks. With fast 50-100ms inference times, ToolGuard delivers real-time threat detection without compromising performance.Currently featuring four specialized threat classification models, with additional models in active development to address emerging attack vectors.
The Models
Tool List Guard
Scans tool definitions at registration to detect risky descriptions, prompt injection attempts, and hidden instructions before tools are made available to your environment.Tool Call Guard
Scans tool execution outputs in real-time to detect risky responses, data exfiltration attempts, and prompt injection before they reach your LLMs.Tool Intent Guard
Detects tool intent drift from prompt injections that lead to data exfiltration, privilege escalation, credential theft, and infrastructure damage. Unlike the Tool Call Guard which evaluates individual responses, Tool Intent Guard analyzes tool inputs and outputs together to detect semantic misalignment — catching cases where a tool’s actual behavior diverges from what was requested.Prompt Guard
Prompt Guard is rolling out gradually. If you don’t see it under Settings → Security Scanners, it isn’t enabled for your workspace yet.
- Runlayer agents — the run’s input is scanned with the agent’s instructions as the system prompt. A blocked prompt fails the run before the agent starts, and the requester sees that Runlayer blocked it.
- Client hooks — prompts submitted in clients with Runlayer hooks installed. Claude Code stops a blocked prompt before the model sees it; other clients record the finding as an alert.
- Hooks SDK — bots built on the SDK call
beforePrompt/before_prompt, which throws on a blocked prompt so the bot can refuse before calling its model.
Skill File Scanning
ToolGuard can also scan skill files uploaded to the platform. Each file’s content is analyzed using the same threat classification models. Repeat scans of unchanged content are served from cache, and large files are handled automatically. Skill file scanning runs when skills are uploaded via the CLI (skills push), imported from a GitHub URL, or created/updated via the API, producing per-file risk scores and an overall skill-level classification.
Skill Risk Policy
Admins can configure how the platform responds when a skill scan detects elevated risk. Navigate to Settings → Security Scanners to set the action for each risk tier:- Block — the skill import is rejected
- Alert — the skill is imported with a warning badge visible in the UI; acceptance is logged to the Audit Log
- Allow — the skill is imported without restriction
Threat Categorization
Flagged tools are automatically classified into specific attack categories. The full taxonomy includes:- Prompt Injection
- Data Exfiltration
- Privilege Escalation
- Destructive Action
- Unauthorized Communication
- Resource Abuse
- Shadow Persistence
- Context Poisoning
- Guardrail Bypass
- Supply Chain Compromise
LLM categorization requires the Bedrock integration to be enabled in your deployment. When disabled, violations retain the default ToolGuard reason.
MITRE ATLAS Mapping
Runlayer maps known runtime findings, ToolGuard risk categories, and deterministic skill-scanner rules to the MITRE ATLAS AI threat taxonomy. Backend API responses expose the mapping metadata:- Security audit event details use
atlas_techniques. - Incident groups, security tool scores, and skill import findings use
atlas.
What a Finding Shows
Findings explain the reasoning behind a risk assessment, not just a score. Each Tool List Guard finding includes:- Confidence score and risk tier — the model’s 0.0–1.0 score, mapped to a tier (see Risk Tiers)
- Threat categories — the attack categories assigned by Threat Categorization (above)
- Areas of concern — the specific excerpt of the tool definition that triggered the detection, displayed under Area of concern on the connector detail page alongside the tool’s name and full description — so reviewers see exactly which text caused the flag.
Additional specialized models are in development to address new attack vectors as they emerge in the MCP ecosystem.
Why Industry-Leading?
Purpose-Built for MCP - Custom-trained threat classification models specifically designed for MCP ecosystem attacks. High Performance - Fast inference with typical scan times of 50-100ms. Continuously Evolving - Models are regularly refined based on emerging threat patterns. Battle-Tested - Deployed in production environments protecting real-world MCP deployments. Enterprise-Ready - Complete audit logging, flexible configuration, and Security Dashboard integration.Configuration
Navigate to Settings → Security Scanners to enable Runlayer ToolGuard models.Scanner coverage
Different scanners run at different points in the agent flow:
User prompts and model responses appear in Sessions when full session scanning is enabled. Prompt Guard scans each submitted prompt; the other per-call ToolGuard scanners focus on MCP and local tool traffic; AgentGuard is the session-level scanner for behavior drift across the conversation.
Sensitivity Levels
Each scanner phase (Tool List Guard, Tool Call Guard, Tool Intent Guard) has a configurable sensitivity that controls how aggressively it flags findings:
Sensitivity is set globally in Settings → Security Scanners and can be overridden per connector, or per client or local tool. Connectors without an explicit override inherit the global value.
Scanner tuning is global, per-connector, or per-client. For self-hosted
deployments, Tool List Guard risk-tier thresholds can also be tuned with the
environment variables listed under Risk Tiers.
Violation Actions
Each scanner has a configurable action that controls what happens when it detects a finding. The available actions depend on the scanner type:
Not every scanner supports every action. The table below shows which actions are available for each scanner:
Defaults: PII detection defaults to Alert. Invisible character detection and credential detection default to Mask. ToolGuard ML scanners default to Block.
Actions are set globally in Settings → Security Scanners and can be overridden per connector or per client or local tool.
Per-Type Actions
PII detection, credential detection, and invisible character detection also take an action per detected type — each built-in PII type, each custom PII rule, each credential category, and each invisible-character category. Open the scanner’s rule list and pick an available action for that row; leaving it on Inherit follows the scanner’s own action. So a scanner set to Alert can still block Social Security numbers, mask email addresses, and ignore IP addresses entirely. Invisible character detection has six categories:
Wherever no category rules are in effect, ANSI colour codes, Isolated zero-width characters, C1 control characters and Encoded hidden text default to Allow. Ordinary colour output then produces no scanner event. An explicitly saved empty map instead makes every category inherit the scanner action; use Reset to default in the global rule dialog to restore the built-in ANSI allowance. Admins can set any category to Alert, Mask, or Block at any supported scope; detections then create incidents. Hidden characters is the one category that cannot be set to Allow individually. Setting the whole Invisible character detection scanner to Allow applies Allow to categories set to Inherit; any explicit per-category Alert, Mask, or Block action still runs.
The last three categories are allowed by default, and saved category maps name them as Allow explicitly. Isolated zero-width characters is common in pasted text, so enable it per connector (a database, not a chat transcript) rather than globally. Encoded hidden text and C1 control characters are rarely legitimate; while they are allowed, Runlayer logs what they would have matched so the rate can be checked before enabling them. They follow the same scope rules as every other category. A narrower scope that overrides the scanner’s action without saving its own category rules stops using the broader scope’s rules; the built-in defaults apply there instead, so these three and ANSI colour codes stay allowed on that scope until you set an action on them.
Allowing ANSI styling also allows foreground colours that may make text hard to see against a matching terminal background (for example, black text on a dark background). The scanner cannot infer the viewer’s terminal background from tool output, so it cannot check whether the text will be legible. The model still receives the text; this changes how it appears to a human viewing the terminal.
Per-type actions follow the same scope rules as the scanner action: set them globally, then override them per connector, per client, per local-tool family, or per tool. Reset to global clears the overrides on that scope so its rows inherit again.
Custom Security Messaging
When a scanner blocks a call, Runlayer returns an explanation to the calling agent (and the user). By default this ends with generic guidance to contact your Runlayer administrator. Admins can replace that guidance with their own — for example, pointing users to a specific Slack channel or internal runbook instead of an inbox. Navigate to Settings → Security Scanners → Edit Security Messaging. Each message has a fixed prefix that is always shown (the violation details and audit-log link); your custom text replaces only the closing What to do guidance. A live preview shows exactly what agents will receive. The following messages can be customized:
Messages support a small set of
{{variable}} placeholders — such as {{server_name}}, {{tool_name}}, {{reason}}, and {{audit_log_link}} — that are filled in at runtime. The editor lists the variables available for each message. Leaving a message unset falls back to the built-in default.
PII Detection
PII scanning uses pattern-based detection with validators to identify sensitive data in MCP traffic. The following built-in PII types are detected:
Admins can also add custom PII rules with regex patterns in Settings → Security Scanners. Custom rules run alongside built-in patterns and appear in audit logs with a
CUSTOM label. Every built-in type and custom rule takes its own action — see Per-Type Actions.
There is no PHI preset. MRN is the built-in health identifier, and it is label-anchored: it matches record numbers that appear next to an explicit identifying label, so an unlabelled bare number is not matched. Add custom PII rules for any other health identifiers your connectors carry, such as member or claim numbers, and for health identifiers that appear without a label.
Custom PII rule patterns use RE2
syntax (a linear-time engine, so a pathological pattern can’t slow down
scanning) — see Regular Expression Syntax for the
full set of supported features and the differences from Python
re. A
pattern RE2 cannot compile is rejected when you save the rule. If an older
saved rule uses an unsupported construct, it is skipped — scanning continues
with your other rules — and an audit event plus an admin alert flags the
rule so you can update it (most lookarounds rewrite cleanly with anchors or
\b).One quieter change to watch for: the shorthand classes \d, \w, \s and
the word boundary \b are ASCII-only. A rule using them on non-ASCII
text still saves and runs but matches differently — in both directions.
\d/\w match less (non-Latin digits and accented letters no longer
count), so a rule can silently miss PII. \b can also match more: an
accented letter now counts as a word boundary, so \bSECRET\b matches
inside éSECRETé where it previously didn’t — new masking, alerting, or
blocking can fire. Neither shift is rejected or alerted, so review rules
that touch non-ASCII text. Where you need Unicode-aware matching, spell it
out with an explicit range or a Unicode property class (e.g. \p{L} for
letters, \p{Nd} for decimal digits).PII Scan Direction
PII detection can be applied to tool inputs, outputs, or both. The direction controls which traffic the PII scanner inspects:
Set the direction globally in Settings → Security Scanners (the gear button on the PII detection row) and override it per connector or per client or local tool. Connectors without an override inherit the global value.
Per-connector overrides
A connector can have its own scanner actions, PII direction, per-type actions, and sensitivity. Anything left on inherit keeps following Settings → Security Scanners. Changing these settings requires the Manage security policies capability.1
Open the connector's Security tab
Go to Settings → Manage connectors, click the connector, then open its Security tab.
2
Pick an action
Under Security Scanners, open the scanner’s dropdown and pick an action. PII, credential, and invisible character detection offer Allow, Alert, Mask, and Block; the ToolGuard rows offer Allow, Alert, and Block. The row then reads Override: followed by the action. Inherit Global Settings goes back to the global action.
3
Tune the details
Click the gear button next to the dropdown. For PII detection this opens Configure PII rules: set Scan direction (Outbound, Inbound, Both, or Inherit), give any row under Built in rules or Custom rules its own action, then click Save. Credential and invisible character detection open the same kind of rule list. ToolGuard rows open Detection sensitivity (Moderate, Balanced, or Strict).
4
Override one tool (optional)
Under Per-tool overrides, choose a tool in Select tool and set its call-time scanners. A tool override wins over the connector’s settings.
Client and local tool overrides
Exceptions for one client (for example Claude Code, Cursor, or the browser extension) or one kind of local tool live at the bottom of Settings → Security Scanners, under Local Tools and Client Overrides.- Open Select local tool or client and choose a client, a local tool family (Terminal, Filesystem, or WebFetch), or a single tool under Individual tools.
- Click Add override, choose a scanner, and pick its action. The gear button opens the same PII direction, per-type, and sensitivity settings as on a connector.
- Reset clears one override; Reset all clears every override for that client or tool.
Risk Tiers
Tool List Guard assigns a risk tier to each scanned tool based on its confidence score. The default thresholds are:
Self-hosted deployments can tune these thresholds via environment variables:
RUNLAYER_TOOL_GUARD_LIST_RISK_THRESHOLD_LOW(default0.6)RUNLAYER_TOOL_GUARD_LIST_RISK_THRESHOLD_MEDIUM(default0.7)RUNLAYER_TOOL_GUARD_LIST_RISK_THRESHOLD_HIGH(default0.9)
Submitting Feedback
When a ToolGuard scan result is wrong — a benign tool flagged as risky (false positive) or a risky one that slipped through (false negative) — you can report it back to Runlayer. Feedback is used to improve future model accuracy. Submit feedback to the same API surface as the scoring endpoints, authenticated with an organization API key that has the Security Scan role (sent in thex-runlayer-api-key header):
A successful submission returns
201 with a submission_id. Feedback is retained per organization for model review.
Feedback submission isn’t available in certain self-hosted cloud environments. Where it’s unavailable, the endpoint returns
503.Monitoring
Security Dashboard - View detection timelines, violation trends, and common threat types Connector Pages - Tool List Guard warnings appear directly on connector detail pages when potentially risky tools are detected Audit Logs - Full history of detections, blocks, and configuration changes with confidence scores Sessions - Review scanner outcomes in full AI session timelines AgentGuard - Session-level behavior monitoring across the agent trajectoryBest Practices
- Use per-server overrides for high-risk external servers
- Use per-client overrides when specific AI clients (e.g., IDE vs. browser) need different scanner behavior
- Combine with MCP access policies for layered security
- Review flagged tools with your security team before blocking
Staying Ahead
Runlayer ToolGuard models are continuously refined based on emerging threat patterns in the MCP ecosystem. Our commitment to continuous innovation ensures you have industry-leading defenses as new attack techniques emerge. Deployed model versions are tracked in the ToolGuard Model Versions changelog.Model Attribution
The Runlayer ToolGuard suite utilizes GA Guard Lite for threat classification embeddings and model inputs. GA Guard Lite is licensed under Apache 2.0.
Related Resources
Security Best Practices
MCP security guidelines and recommendations
Audit Logs
View detailed activity and security logs
Sessions
Monitor scanner outcomes in AI session timelines
AgentGuard
Session-level behavior monitoring across the agent trajectory
Access Policies
Configure MCP access control policies