Skip to content

Rule Reference

SEC654lintai-ai-securitystablejsonwarn

MCP config: launchd persistence

MCP configuration command registers a launchd plist for persistence

Provider
lintai-ai-security
Surface
json
Scope
per_file
Tier
stable
Severity
warn
Confidence
high
Detection
structural
Remediation
message_only

Activation Model

Preset Membership

This rule is part of the builtin activation graph through these preset memberships.

Lifecycle

Stable Lifecycle Contract

State

stable_gated

Graduation rationale

Checks committed MCP launch paths for explicit launchd registration or LaunchAgents/LaunchDaemons plist writes.

Deterministic signal basis

JsonSignals command-plus-args analysis over ArtifactKind::McpConfig for `launchctl load|bootstrap` or writes to LaunchAgents/LaunchDaemons plist paths.

Malicious corpus
mcp-command-service-persistence
Benign corpus
mcp-safe-basic
structured evidence required remediation reviewed
Canonical note

Structural stable rule intended as a high-precision check with deterministic evidence.

Nearby Signals

Related Rules

Why It Matters

Launchd registration from shared MCP config can establish persistent macOS execution controlled through the repository.

What Triggers

SEC654 matches MCP command definitions that run launchctl load or launchctl bootstrap, or write plist files into LaunchAgents or LaunchDaemons locations.

False Positives

Provisioning servers may manage launchd intentionally, but that should remain explicit and reviewed.

Remediation

Remove launchd persistence from the MCP config and keep plist installation outside ordinary shared server launch paths.