Detection rules › Elastic

GenAI or MCP Server Child Process Execution

Status
production
Kind
building block (feeds higher-level correlation rules; not a standalone alert)
Severity
low
Time window
119m
Author
Elastic
Source
github.com/elastic/detection-rules

Detects child process execution from GenAI tools or MCP (Model Context Protocol) servers. Adversaries exploit AI agents to execute system commands, exfiltrate data, or establish persistence. MCP servers provide LLMs direct access to execute shell commands, read files, and interact with external services. This building block provides visibility into AI-initiated process execution for correlation with other suspicious activity.

MITRE ATT&CK coverage

MITRE ATLAS coverage

Adversarial-ML threat framework (not MITRE ATT&CK).

Rule body

[metadata]
creation_date = "2025/12/04"
integration = ["endpoint", "windows", "sentinel_one_cloud_funnel", "m365_defender"]
maturity = "production"
updated_date = "2026/08/10"

[rule]
author = ["Elastic"]
building_block_type = "default"
description = """
Detects child process execution from GenAI tools or MCP (Model Context Protocol) servers. Adversaries exploit AI agents
to execute system commands, exfiltrate data, or establish persistence. MCP servers provide LLMs direct access to execute
shell commands, read files, and interact with external services. This building block provides visibility into
AI-initiated process execution for correlation with other suspicious activity.
"""
from = "now-119m"
index = [
    "logs-endpoint.events.process-*",
    "logs-windows.sysmon_operational-*",
    "logs-m365_defender.event-*",
    "logs-sentinel_one_cloud_funnel.*",
]
interval = "60m"
language = "eql"
license = "Elastic License v2"
name = "GenAI or MCP Server Child Process Execution"
risk_score = 21
rule_id = "b2c3d4e5-f6a7-8901-bcde-f23456789012"
severity = "low"
tags = [
    "Domain: Endpoint",
    "OS: Linux",
    "OS: macOS",
    "OS: Windows",
    "Use Case: Threat Detection",
    "Tactic: Execution",
    "Data Source: Elastic Defend",
    "Data Source: Sysmon",
    "Data Source: Microsoft Defender XDR",
    "Data Source: SentinelOne",
    "Rule Type: BBR",
    "Domain: LLM",
    "Mitre Atlas: T0053",
]
timestamp_override = "event.ingested"
type = "eql"

query = '''
process where event.type == "start" 
  and (
    // GenAI clients
    process.parent.name in (
      "Cursor", "Cursor.exe", "cursor",
      "Cursor Helper", "Cursor Helper (Plugin)", "Cursor Helper (GPU)", "Cursor Helper (Renderer)",
      "Claude", "Claude.exe", "claude",
      "Claude Helper", "Claude Helper (Plugin)", "Claude Helper (GPU)", "Claude Helper (Renderer)",
      "Windsurf", "Windsurf.exe", "windsurf",
      "Windsurf Helper", "Windsurf Helper (Plugin)", "Windsurf Helper (GPU)", "Windsurf Helper (Renderer)",
      "Code", "Code.exe", "code",
      "Code Helper", "Code Helper (Plugin)", "Code Helper (GPU)", "Code Helper (Renderer)",
      "codex", "codex.exe",
      "Copilot", "Copilot.exe", "copilot",
      "Jan", "Jan.exe", "jan",
      "Jan Helper", "Jan Helper (Plugin)", "Jan Helper (GPU)", "Jan Helper (Renderer)",
      "LM Studio", "LM Studio.exe", "lmstudio",
      "Ollama", "Ollama.exe", "ollama",
      "GPT4All", "gpt4all", "gpt4all.exe",
      "textgen.exe", "textgen", "text-generation-webui.exe", "oobabooga.exe",
      "gemini-cli.exe", "gemini-cli",
      "genaiscript.exe", "genaiscript",
      "grok.exe", "grok",
      "qwen.exe", "qwen",
      "koboldcpp.exe", "koboldcpp", "KoboldCpp",
      "llama-server", "llama-cli",
      "OpenClaw", "openclaw", "openclaw.exe",
      "Moltbot", "moltbot", "moltbot.exe",
      "Clawdbot", "clawdbot", "clawdbot.exe"
    ) or
    // OpenClaw/Moltbot/Clawdbot via Node.js
    (process.parent.name in ("node", "node.exe") and
     process.parent.command_line like~ ("*openclaw*", "*moltbot*", "*clawdbot*")) or
    // Package managers running MCP servers
    (process.parent.name in ("npx", "npx.exe", "pnpm", "pnpm.exe", "yarn", "yarn.exe", "bunx", "bunx.exe") and
     process.parent.command_line like~ ("*@modelcontextprotocol/*", "*mcp-server-*", "*mcp_server*")) or
    
    // Node/Deno/Bun running MCP servers
    (process.parent.name in ("node", "node.exe", "deno", "deno.exe", "bun", "bun.exe") and
     process.parent.command_line like~ ("*@modelcontextprotocol/*", "*mcp-server-*", "*mcp_server*")) or
    
    // Python MCP servers
    (process.parent.name like~ "python*" and
     process.parent.command_line like~ ("*-m mcp_server*", "*mcp-server-*", "*mcp_server*")) or
    
    // MCP server binaries
    process.parent.name like~ ("mcp-server*", "*-mcp-server", "*_mcp_server*") or
    process.parent.name in ("mcp-server", "mcp-server-elastic-cloud", "github-mcp-server")
  )
  and process.name != null
  // Exclusions
  and not (
    // Runtime self-spawns
    (process.parent.name in ("node", "node.exe") and process.name in ("node", "node.exe")) or
    (process.parent.name like~ "python*" and process.name like~ "python*") or
    (process.parent.name in ("deno", "deno.exe") and process.name in ("deno", "deno.exe")) or
    (process.parent.name in ("bun", "bun.exe") and process.name in ("bun", "bun.exe")) or
    
    // Electron helper noise: app -> helper, and helper -> helper
    (process.parent.name like~ ("Cursor", "Cursor.exe", "Cursor Helper*") and
     process.name like~ "Cursor Helper*") or
    (process.parent.name like~ ("Claude", "Claude.exe", "Claude Helper*") and
     process.name like~ "Claude Helper*") or
    (process.parent.name like~ ("Windsurf", "Windsurf.exe", "Windsurf Helper*") and
     process.name like~ "Windsurf Helper*") or
    (process.parent.name like~ ("Code", "Code.exe", "Code Helper*") and
     process.name like~ "Code Helper*") or
    (process.parent.name like~ ("Jan", "Jan.exe", "Jan Helper*") and
     process.name like~ "Jan Helper*") or
    (process.parent.name like~ ("LM Studio", "LM Studio.exe", "LM Studio Helper*") and
     process.name like~ ("LM Studio", "LM Studio.exe", "LM Studio Helper*")) or
    (process.parent.name like~ ("Ollama", "Ollama.exe", "Ollama Helper*") and
     process.name like~ "Ollama Helper*") or

    // GenAI client same-name self-spawns (explicit pairs; no field-to-field compare)
    (process.parent.name like~ ("cursor", "cursor.exe") and
     process.name like~ ("cursor", "cursor.exe")) or
    (process.parent.name like~ ("claude", "claude.exe") and
     process.name like~ ("claude", "claude.exe")) or
    (process.parent.name like~ ("windsurf", "windsurf.exe") and
     process.name like~ ("windsurf", "windsurf.exe")) or
    (process.parent.name like~ ("code", "code.exe") and
     process.name like~ ("code", "code.exe")) or
    (process.parent.name like~ ("codex", "codex.exe") and
     process.name like~ ("codex", "codex.exe")) or
    (process.parent.name like~ ("copilot", "copilot.exe") and
     process.name like~ ("copilot", "copilot.exe")) or
    (process.parent.name like~ ("jan", "jan.exe") and
     process.name like~ ("jan", "jan.exe")) or
    (process.parent.name like~ ("ollama", "ollama.exe") and
     process.name like~ ("ollama", "ollama.exe")) or

    // docker
    (process.name in ("docker", "docker.exe") and process.args == "context" and process.args == "ls") or
    // env probes: ps/getconf/lsb_release by name; neighbor/arp/which by args or /bin/sh -c
    (
      process.name in ("ps", "getconf", "lsb_release") or
      process.args in (
        "ip neigh show",
        "arp -a -n -l",
        "ip neighbor show dev wlan0",
        "ip neighbor show dev eth0",
        "arp -a | findstr /C:---"
      ) or
      process.command_line in (
        "/bin/sh -c ip neigh show",
        "/bin/sh -c arp -a -n -l",
        "/bin/sh -c /bin/ps -ax -o pid=,ppid=,pcpu=,pmem=,command=",
        "/bin/sh -c which ps"
      )
    ) or
    // git
    (process.name in ("git", "git.exe") and (
      (process.args == "remote" and process.args == "get-url" and process.args == "origin") or
      (process.args == "symbolic-ref" and process.args == "refs/remotes/origin/HEAD" and process.args == "--short") or
      (process.args == "rev-parse" and process.args == "--abbrev-ref" and process.args == "HEAD") or
      (process.args == "status" and process.args == "-z" and process.args == "-uall") or
      (process.args == "config" and process.args == "--get" and process.args == "commit.template") or
      (process.args == "config" and process.args == "user.email") or
      (process.args == "rev-parse" and process.args == "--show-toplevel")
    )) or
    // version / help
    process.args in ("--version", "--help", "-v", "-h", "-V", "version", "help")
  )
'''


[[rule.threat]]
framework = "MITRE ATT&CK"
[[rule.threat.technique]]
id = "T1059"
name = "Command and Scripting Interpreter"
reference = "https://attack.mitre.org/techniques/T1059/"


[rule.threat.tactic]
id = "TA0002"
name = "Execution"
reference = "https://attack.mitre.org/tactics/TA0002/"

Stages and Predicates

Stage 1: process

process where event.type == "start"
  and (
    process.parent.name in (
      "Cursor", "Cursor.exe", "cursor",
      "Cursor Helper", "Cursor Helper (Plugin)", "Cursor Helper (GPU)", "Cursor Helper (Renderer)",
      "Claude", "Claude.exe", "claude",
      "Claude Helper", "Claude Helper (Plugin)", "Claude Helper (GPU)", "Claude Helper (Renderer)",
      "Windsurf", "Windsurf.exe", "windsurf",
      "Windsurf Helper", "Windsurf Helper (Plugin)", "Windsurf Helper (GPU)", "Windsurf Helper (Renderer)",
      "Code", "Code.exe", "code",
      "Code Helper", "Code Helper (Plugin)", "Code Helper (GPU)", "Code Helper (Renderer)",
      "codex", "codex.exe",
      "Copilot", "Copilot.exe", "copilot",
      "Jan", "Jan.exe", "jan",
      "Jan Helper", "Jan Helper (Plugin)", "Jan Helper (GPU)", "Jan Helper (Renderer)",
      "LM Studio", "LM Studio.exe", "lmstudio",
      "Ollama", "Ollama.exe", "ollama",
      "GPT4All", "gpt4all", "gpt4all.exe",
      "textgen.exe", "textgen", "text-generation-webui.exe", "oobabooga.exe",
      "gemini-cli.exe", "gemini-cli",
      "genaiscript.exe", "genaiscript",
      "grok.exe", "grok",
      "qwen.exe", "qwen",
      "koboldcpp.exe", "koboldcpp", "KoboldCpp",
      "llama-server", "llama-cli",
      "OpenClaw", "openclaw", "openclaw.exe",
      "Moltbot", "moltbot", "moltbot.exe",
      "Clawdbot", "clawdbot", "clawdbot.exe"
    ) or
    (process.parent.name in ("node", "node.exe") and
     process.parent.command_line like~ ("*openclaw*", "*moltbot*", "*clawdbot*")) or
    (process.parent.name in ("npx", "npx.exe", "pnpm", "pnpm.exe", "yarn", "yarn.exe", "bunx", "bunx.exe") and
     process.parent.command_line like~ ("*@modelcontextprotocol/*", "*mcp-server-*", "*mcp_server*")) or
    (process.parent.name in ("node", "node.exe", "deno", "deno.exe", "bun", "bun.exe") and
     process.parent.command_line like~ ("*@modelcontextprotocol/*", "*mcp-server-*", "*mcp_server*")) or
    (process.parent.name like~ "python*" and
     process.parent.command_line like~ ("*-m mcp_server*", "*mcp-server-*", "*mcp_server*")) or
    process.parent.name like~ ("mcp-server*", "*-mcp-server", "*_mcp_server*") or
    process.parent.name in ("mcp-server", "mcp-server-elastic-cloud", "github-mcp-server")
  )
  and process.name != null
  and not (
    (process.parent.name in ("node", "node.exe") and process.name in ("node", "node.exe")) or
    (process.parent.name like~ "python*" and process.name like~ "python*") or
    (process.parent.name in ("deno", "deno.exe") and process.name in ("deno", "deno.exe")) or
    (process.parent.name in ("bun", "bun.exe") and process.name in ("bun", "bun.exe")) or
    (process.parent.name like~ ("Cursor", "Cursor.exe", "Cursor Helper*") and
     process.name like~ "Cursor Helper*") or
    (process.parent.name like~ ("Claude", "Claude.exe", "Claude Helper*") and
     process.name like~ "Claude Helper*") or
    (process.parent.name like~ ("Windsurf", "Windsurf.exe", "Windsurf Helper*") and
     process.name like~ "Windsurf Helper*") or
    (process.parent.name like~ ("Code", "Code.exe", "Code Helper*") and
     process.name like~ "Code Helper*") or
    (process.parent.name like~ ("Jan", "Jan.exe", "Jan Helper*") and
     process.name like~ "Jan Helper*") or
    (process.parent.name like~ ("LM Studio", "LM Studio.exe", "LM Studio Helper*") and
     process.name like~ ("LM Studio", "LM Studio.exe", "LM Studio Helper*")) or
    (process.parent.name like~ ("Ollama", "Ollama.exe", "Ollama Helper*") and
     process.name like~ "Ollama Helper*") or
    (process.parent.name like~ ("cursor", "cursor.exe") and
     process.name like~ ("cursor", "cursor.exe")) or
    (process.parent.name like~ ("claude", "claude.exe") and
     process.name like~ ("claude", "claude.exe")) or
    (process.parent.name like~ ("windsurf", "windsurf.exe") and
     process.name like~ ("windsurf", "windsurf.exe")) or
    (process.parent.name like~ ("code", "code.exe") and
     process.name like~ ("code", "code.exe")) or
    (process.parent.name like~ ("codex", "codex.exe") and
     process.name like~ ("codex", "codex.exe")) or
    (process.parent.name like~ ("copilot", "copilot.exe") and
     process.name like~ ("copilot", "copilot.exe")) or
    (process.parent.name like~ ("jan", "jan.exe") and
     process.name like~ ("jan", "jan.exe")) or
    (process.parent.name like~ ("ollama", "ollama.exe") and
     process.name like~ ("ollama", "ollama.exe")) or
    (process.name in ("docker", "docker.exe") and process.args == "context" and process.args == "ls") or
    (
      process.name in ("ps", "getconf", "lsb_release") or
      process.args in (
        "ip neigh show",
        "arp -a -n -l",
        "ip neighbor show dev wlan0",
        "ip neighbor show dev eth0",
        "arp -a | findstr /C:---"
      ) or
      process.command_line in (
        "/bin/sh -c ip neigh show",
        "/bin/sh -c arp -a -n -l",
        "/bin/sh -c /bin/ps -ax -o pid=,ppid=,pcpu=,pmem=,command=",
        "/bin/sh -c which ps"
      )
    ) or
    (process.name in ("git", "git.exe") and (
      (process.args == "remote" and process.args == "get-url" and process.args == "origin") or
      (process.args == "symbolic-ref" and process.args == "refs/remotes/origin/HEAD" and process.args == "--short") or
      (process.args == "rev-parse" and process.args == "--abbrev-ref" and process.args == "HEAD") or
      (process.args == "status" and process.args == "-z" and process.args == "-uall") or
      (process.args == "config" and process.args == "--get" and process.args == "commit.template") or
      (process.args == "config" and process.args == "user.email") or
      (process.args == "rev-parse" and process.args == "--show-toplevel")
    )) or
    process.args in ("--version", "--help", "-v", "-h", "-V", "version", "help")
  )

Exclusions

The rule actively suppresses these predicates.

FieldKindExcluded valuesSearch
process.argseq--abbrev-refexcludes:process.args field:"process.args" value:"--abbrev-ref"
process.argseqHEADexcludes:process.args field:"process.args" value:"HEAD"
process.argseqrev-parseexcludes:process.args field:"process.args" value:"rev-parse"
process.argseq--getexcludes:process.args field:"process.args" value:"--get"
process.argseqcommit.templateexcludes:process.args field:"process.args" value:"commit.template"
process.argseqconfigexcludes:process.args field:"process.args" value:"config"
process.argseq--shortexcludes:process.args field:"process.args" value:"--short"
process.argseqrefs/remotes/origin/HEADexcludes:process.args field:"process.args" value:"refs/remotes/origin/HEAD"
process.argseqsymbolic-refexcludes:process.args field:"process.args" value:"symbolic-ref"
process.argseq--show-toplevelexcludes:process.args field:"process.args" value:"--show-toplevel"
process.argseq-uallexcludes:process.args field:"process.args" value:"-uall"
process.argseq-zexcludes:process.args field:"process.args" value:"-z"
process.argseqstatusexcludes:process.args field:"process.args" value:"status"
process.argsequser.emailexcludes:process.args field:"process.args" value:"user.email"
process.argseqget-urlexcludes:process.args field:"process.args" value:"get-url"
process.argseqoriginexcludes:process.args field:"process.args" value:"origin"
process.argseqremoteexcludes:process.args field:"process.args" value:"remote"
process.nameingit, git.exeexcludes:process.name field:"process.name" value:"git" field:"process.name" value:"git.exe"
process.argseqcontextexcludes:process.args field:"process.args" value:"context"
process.argseqlsexcludes:process.args field:"process.args" value:"ls"
process.nameindocker, docker.exeexcludes:process.name field:"process.name" value:"docker" field:"process.name" value:"docker.exe"
process.nameeqclaude, claude.exeexcludes:process.name field:"process.name" value:"claude" field:"process.name" value:"claude.exe"
process.parent.nameeqclaude, claude.exeexcludes:process.parent.name field:"process.parent.name" value:"claude" field:"process.parent.name" value:"claude.exe"
process.nameeqcode, code.exeexcludes:process.name field:"process.name" value:"code" field:"process.name" value:"code.exe"
process.parent.nameeqcode, code.exeexcludes:process.parent.name field:"process.parent.name" value:"code" field:"process.parent.name" value:"code.exe"
process.nameeqcodex, codex.exeexcludes:process.name field:"process.name" value:"codex" field:"process.name" value:"codex.exe"
process.parent.nameeqcodex, codex.exeexcludes:process.parent.name field:"process.parent.name" value:"codex" field:"process.parent.name" value:"codex.exe"
process.nameeqcopilot, copilot.exeexcludes:process.name field:"process.name" value:"copilot" field:"process.name" value:"copilot.exe"
process.parent.nameeqcopilot, copilot.exeexcludes:process.parent.name field:"process.parent.name" value:"copilot" field:"process.parent.name" value:"copilot.exe"
process.nameeqcursor, cursor.exeexcludes:process.name field:"process.name" value:"cursor" field:"process.name" value:"cursor.exe"
process.parent.nameeqcursor, cursor.exeexcludes:process.parent.name field:"process.parent.name" value:"cursor" field:"process.parent.name" value:"cursor.exe"
process.nameeqjan, jan.exeexcludes:process.name field:"process.name" value:"jan" field:"process.name" value:"jan.exe"
process.parent.nameeqjan, jan.exeexcludes:process.parent.name field:"process.parent.name" value:"jan" field:"process.parent.name" value:"jan.exe"
process.nameeqollama, ollama.exeexcludes:process.name field:"process.name" value:"ollama" field:"process.name" value:"ollama.exe"
process.parent.nameeqollama, ollama.exeexcludes:process.parent.name field:"process.parent.name" value:"ollama" field:"process.parent.name" value:"ollama.exe"
process.nameeqwindsurf, windsurf.exeexcludes:process.name field:"process.name" value:"windsurf" field:"process.name" value:"windsurf.exe"
process.parent.nameeqwindsurf, windsurf.exeexcludes:process.parent.name field:"process.parent.name" value:"windsurf" field:"process.parent.name" value:"windsurf.exe"
process.nameinbun, bun.exeexcludes:process.name field:"process.name" value:"bun" field:"process.name" value:"bun.exe"
process.parent.nameinbun, bun.exeexcludes:process.parent.name field:"process.parent.name" value:"bun" field:"process.parent.name" value:"bun.exe"
process.nameindeno, deno.exeexcludes:process.name field:"process.name" value:"deno" field:"process.name" value:"deno.exe"
process.parent.nameindeno, deno.exeexcludes:process.parent.name field:"process.parent.name" value:"deno" field:"process.parent.name" value:"deno.exe"
process.nameinnode, node.exeexcludes:process.name field:"process.name" value:"node" field:"process.name" value:"node.exe"
process.parent.nameinnode, node.exeexcludes:process.parent.name field:"process.parent.name" value:"node" field:"process.parent.name" value:"node.exe"
process.namestarts_withClaude Helperexcludes:process.name field:"process.name" value:"Claude Helper"
process.parent.namewildcardClaude, Claude.exe, Claude Helper*excludes:process.parent.name field:"process.parent.name" value:"Claude" field:"process.parent.name" value:"Claude.exe" field:"process.parent.name" value:"Claude Helper*"
process.namestarts_withCode Helperexcludes:process.name field:"process.name" value:"Code Helper"
process.parent.namewildcardCode, Code.exe, Code Helper*excludes:process.parent.name field:"process.parent.name" value:"Code" field:"process.parent.name" value:"Code.exe" field:"process.parent.name" value:"Code Helper*"
process.namestarts_withCursor Helperexcludes:process.name field:"process.name" value:"Cursor Helper"
process.parent.namewildcardCursor, Cursor.exe, Cursor Helper*excludes:process.parent.name field:"process.parent.name" value:"Cursor" field:"process.parent.name" value:"Cursor.exe" field:"process.parent.name" value:"Cursor Helper*"
process.namestarts_withJan Helperexcludes:process.name field:"process.name" value:"Jan Helper"
process.parent.namewildcardJan, Jan.exe, Jan Helper*excludes:process.parent.name field:"process.parent.name" value:"Jan" field:"process.parent.name" value:"Jan.exe" field:"process.parent.name" value:"Jan Helper*"
process.namestarts_withOllama Helperexcludes:process.name field:"process.name" value:"Ollama Helper"
process.parent.namewildcardOllama, Ollama.exe, Ollama Helper*excludes:process.parent.name field:"process.parent.name" value:"Ollama" field:"process.parent.name" value:"Ollama.exe" field:"process.parent.name" value:"Ollama Helper*"
process.namestarts_withWindsurf Helperexcludes:process.name field:"process.name" value:"Windsurf Helper"
process.parent.namewildcardWindsurf, Windsurf.exe, Windsurf Helper*excludes:process.parent.name field:"process.parent.name" value:"Windsurf" field:"process.parent.name" value:"Windsurf.exe" field:"process.parent.name" value:"Windsurf Helper*"
process.namestarts_withpythonexcludes:process.name field:"process.name" value:"python"
process.parent.namestarts_withpythonexcludes:process.parent.name field:"process.parent.name" value:"python"
process.namewildcardLM Studio, LM Studio.exe, LM Studio Helper*excludes:process.name field:"process.name" value:"LM Studio" field:"process.name" value:"LM Studio.exe" field:"process.name" value:"LM Studio Helper*"
process.parent.namewildcardLM Studio, LM Studio.exe, LM Studio Helper*excludes:process.parent.name field:"process.parent.name" value:"LM Studio" field:"process.parent.name" value:"LM Studio.exe" field:"process.parent.name" value:"LM Studio Helper*"
process.argsin--help, --version, -V, -h, -v, help, versionexcludes:process.args
process.argsinarp -a -n -l, arp -a | findstr /C:---, ip neigh show, ip neighbor show dev eth0, ip neighbor show dev wlan0excludes:process.args
process.command_linein/bin/sh -c /bin/ps -ax -o pid=,ppid=,pcpu=,pmem=,command=, /bin/sh -c arp -a -n -l, /bin/sh -c ip neigh show, /bin/sh -c which psexcludes:process.command_line
process.nameingetconf, lsb_release, psexcludes:process.name field:"process.name" value:"getconf" field:"process.name" value:"lsb_release" field:"process.name" value:"ps"

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
event.typeeq
  • start corpus 1078 (elastic 1078)
field:"event.type" kind:eq value:"start"
process.nameis_not_null
  • (no value, null check)
field:"process_name" kind:is_not_null
process.parent.command_linewildcard
  • *-m mcp_server*
  • *@modelcontextprotocol/*
  • *clawdbot* corpus 2 (elastic 2)
  • *mcp-server-*
  • *mcp_server*
  • *moltbot* corpus 2 (elastic 2)
  • *openclaw* corpus 2 (elastic 2)
field:"ParentCommandLine" kind:wildcard
process.parent.namein
  • Claude
  • Claude Helper
  • Claude Helper (GPU)
  • Claude Helper (Plugin)
  • Claude Helper (Renderer)
  • Claude.exe
  • Clawdbot
  • Code
  • Code Helper
  • Code Helper (GPU)
  • Code Helper (Plugin)
  • Code Helper (Renderer)
  • Code.exe
  • Copilot
  • Copilot.exe
  • Cursor
  • Cursor Helper
  • Cursor Helper (GPU)
  • Cursor Helper (Plugin)
  • Cursor Helper (Renderer)
  • Cursor.exe
  • GPT4All
  • Jan
  • Jan Helper
  • Jan Helper (GPU)
  • Jan Helper (Plugin)
  • Jan Helper (Renderer)
  • Jan.exe
  • KoboldCpp
  • LM Studio
  • LM Studio.exe
  • Moltbot
  • Ollama
  • Ollama.exe
  • OpenClaw
  • Windsurf
  • Windsurf Helper
  • Windsurf Helper (GPU)
  • Windsurf Helper (Plugin)
  • Windsurf Helper (Renderer)
  • +52 more values (see full rule source)
field:"parent_process_name" kind:in
process.parent.namewildcard
  • *-mcp-server
  • *_mcp_server*
  • mcp-server*
  • python* corpus 25 (elastic 25)
field:"parent_process_name" kind:wildcard