* feat(cron): enable automation triggers by default
Condition watchers, script payloads, and stream schedules were gated behind
cron.triggers.enabled=false, so the capability shipped dark and the automations
tool told the model to call it unsupported.
The gate did not buy what its warning implied. cronJobUsesToolRuntime treats
agentTurn, script, and trigger.script identically for tool policy, and jobs are
capped to the creating agent's allowlist via creatorToolAllowlist -- but an
agentTurn cron job was never gated, so unattended recurring exec with that same
creator-capped authority was already reachable. The gated paths are strictly
tighter: a condition gate gets 30s, 5 tool calls, 16KB state and a 30s minimum
interval, where an agentTurn has no such budget. Sandboxing already applies to
trigger scripts, which resolve sandbox context and redirect the workspace when
access is not rw.
Absent config now means enabled; an explicit cron.triggers.enabled: false still
disables every surface it disabled before, and the error text names the opt-out
instead of telling operators to turn something on. No new config key, no
migration.
Docs: reword the trigger warning for default-on while keeping the unattended
execution note, and record the new default in the configuration reference.
* test(cron): refresh prompt snapshots for default-on triggers
Trigger, stream-schedule, and script-payload surfaces are now advertised in the
automations tool description by default, so the committed fixtures drift.
This also records the cost: dynamicToolsJson grows 49,477 -> 52,541 chars and
the snapshot total 76,861 -> 79,925 (~766 rough tokens per prompt). That is the
price of no longer dark-shipping the capability.
* test(mcp): expect trigger surfaces by default in the tools bridge
The MCP tools bridge mirrors the scheduler gate, so an absent cron.triggers
config now advertises the trigger surface. Explicit false still narrows it and
explicit true still widens it; both assertions are unchanged.
OpenClaw threat model mapped to the MITRE ATLAS framework
Threat model (MITRE ATLAS)
Reviewing security posture or threat scenarios
Working on security features or audit responses
Version: 1.0-draft | Framework:MITRE ATLAS (Adversarial Threat Landscape for AI Systems) + data flow diagrams
This threat model documents adversarial threats to the OpenClaw AI agent platform and ClawHub skill marketplace. It is a living document maintained by the OpenClaw community. See Contributing to the threat model for how to report new threats, propose attack chains, or suggest mitigations.
Out-of-scope reports and false-positive patterns (public internet exposure, prompt-injection-only chains without a boundary bypass, mutually untrusted operators sharing one gateway host, and others) are enumerated in SECURITY.md; that file is the current source of truth for vulnerability-report scope, not this page.
Pattern detection, external content wrapping, and frontier-model robustness (2026 crowdsourced arena: 0.5% ASR on Claude Opus 4.5, 8.5% on Gemini 2.5 Pro, scored on execution plus concealment); treated as out-of-scope for vulnerability reports absent a boundary bypass (see SECURITY.md)
Residual risk
Model-tier dependent - low single-digit ASR against organic attacks on recommended frontier models, but adaptive attackers still exceed 80% against state-of-the-art defenses, and smaller/older models remain markedly easier to steer
Recommendations
Output validation and user confirmation for sensitive actions, layered on top of existing detection
T-EXEC-002: Indirect prompt injection
Attribute
Value
ATLAS ID
AML.T0051.001 - LLM Prompt Injection: Indirect
Description
Attacker embeds malicious instructions in fetched content
Content wrapping with random-boundary XML-style markers, homoglyph/special-token normalization, a security notice, and frontier-model robustness (see T-EXEC-001)
Residual risk
Model-tier dependent - recommended frontier models largely hold the wrapper boundary, but it remains soft guidance an adaptive attacker can erode; scope tool policy and sandboxing to the blast radius you accept
Recommendations
Separate execution contexts for wrapped content
T-EXEC-003: Tool argument injection
Attribute
Value
ATLAS ID
AML.T0051.000 - LLM Prompt Injection: Direct
Description
Attacker manipulates tool arguments through prompt injection
Attack vector
Crafted prompts that influence tool parameter values
Affected components
All tool invocations
Current mitigations
Exec approvals for dangerous commands
Residual risk
High - relies on user judgment
Recommendations
Argument validation, parameterized tool calls
T-EXEC-004: Exec approval bypass
Attribute
Value
ATLAS ID
AML.T0043 - Craft Adversarial Data
Description
Attacker crafts commands that bypass the approval allowlist
Attack vector
Command obfuscation, alias exploitation, path manipulation
High - normalization narrows but does not eliminate obfuscation bypass; parity-only findings between exec paths are treated as hardening, not vulnerabilities (see SECURITY.md)
Recommendations
Continue expanding command-normalization coverage against new obfuscation techniques
3.4 Persistence (AML.TA0006)
T-PERSIST-001: Malicious skill installation
Attribute
Value
ATLAS ID
AML.T0010.001 - Supply Chain Compromise: AI Software
Description
Attacker publishes a malicious skill to ClawHub
Attack vector
Create account, publish skill with hidden malicious code
ClawHub credential-pattern scanning (hardcoded secrets, credential env access paired with network sends); no execution sandboxing for skills at runtime
Residual risk
Critical - skills run with agent privileges
Recommendations
Skill execution sandboxing, credential isolation
3.8 Impact (AML.TA0011)
T-IMPACT-001: Unauthorized command execution
Attribute
Value
ATLAS ID
AML.T0031 - Erode AI Model Integrity
Description
Attacker executes arbitrary commands on the user system
Attack vector
Prompt injection combined with exec approval bypass