Skip to content

Rule Reference

SEC657lintai-ai-securitystableclaude_settingswarn

Claude settings: command hook launchd persistence

Claude settings command hook registers a launchd plist for persistence

Provider
lintai-ai-security
Surface
claude_settings
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 Claude settings command hooks for explicit launchd registration or LaunchAgents/LaunchDaemons plist writes.

Deterministic signal basis

ClaudeSettingsSignals command-hook string analysis over committed hook entries with type == command for `launchctl load|bootstrap` or writes to LaunchAgents/LaunchDaemons plist paths.

Malicious corpus
claude-settings-hook-service-persistence
Benign corpus
claude-settings-network-command-safe
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 a shared Claude hook creates persistent macOS execution outside the repo lifecycle.

What Triggers

SEC657 matches Claude settings command hooks that run launchctl load or launchctl bootstrap, or write plist files into LaunchAgents or LaunchDaemons paths.

False Positives

Bootstrap repos may intentionally manage launchd, but this should not be hidden inside shared committed hooks.

Remediation

Remove launchd persistence from the hook and move plist setup into a separate reviewed administrative path.