clawmoat 0.4.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +31 -0
- package/bin/clawmoat.js +483 -1
- package/docs/blog/index.html +24 -0
- package/docs/blog/supply-chain-agents.html +166 -0
- package/docs/blog/supply-chain-agents.md +79 -0
- package/docs/index.html +131 -57
- package/package.json +1 -1
- package/server/index.js +100 -14
- package/src/guardian/alerts.js +138 -0
- package/src/guardian/cve-verify.js +129 -0
- package/src/guardian/index.js +147 -1
- package/src/guardian/insider-threat.js +498 -0
- package/src/guardian/network-log.js +281 -0
- package/src/guardian/skill-integrity.js +290 -0
- package/src/middleware/openclaw.js +104 -2
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<link rel="icon" type="image/png" href="/favicon.png">
|
|
5
|
+
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
|
|
6
|
+
<meta charset="UTF-8">
|
|
7
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
8
|
+
<title>Your AI Agent Just Got a Dependabot Email. Should It Click the Link? — ClawMoat</title>
|
|
9
|
+
<meta name="description" content="A real CVE alert exposed the gap between human instinct and AI agent obedience. Here's how supply chain attacks target autonomous agents — and how to stop them.">
|
|
10
|
+
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>🏰</text></svg>">
|
|
11
|
+
<style>
|
|
12
|
+
*{margin:0;padding:0;box-sizing:border-box}
|
|
13
|
+
:root{--navy:#0F172A;--navy-light:#1E293B;--navy-mid:#334155;--blue:#3B82F6;--emerald:#10B981;--white:#F8FAFC;--gray:#94A3B8;--red:#EF4444}
|
|
14
|
+
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;background:var(--navy);color:var(--white);line-height:1.7}
|
|
15
|
+
a{color:var(--blue);text-decoration:none}
|
|
16
|
+
a:hover{text-decoration:underline}
|
|
17
|
+
.container{max-width:760px;margin:0 auto;padding:0 24px}
|
|
18
|
+
|
|
19
|
+
nav{position:fixed;top:0;left:0;right:0;z-index:100;background:rgba(15,23,42,.95);backdrop-filter:blur(12px);border-bottom:1px solid rgba(59,130,246,.15);padding:16px 0}
|
|
20
|
+
nav .inner{max-width:760px;margin:0 auto;padding:0 24px;display:flex;align-items:center;justify-content:space-between}
|
|
21
|
+
.logo{font-size:1.25rem;font-weight:700;color:var(--white)}
|
|
22
|
+
.logo span{color:var(--emerald)}
|
|
23
|
+
.nav-links{display:flex;gap:24px}
|
|
24
|
+
.nav-links a{color:var(--gray);font-size:.9rem}
|
|
25
|
+
.nav-links a:hover{color:var(--white);text-decoration:none}
|
|
26
|
+
|
|
27
|
+
article{padding:120px 0 80px}
|
|
28
|
+
.meta{color:var(--gray);font-size:.9rem;margin-bottom:32px}
|
|
29
|
+
article h1{font-size:clamp(1.8rem,4vw,2.4rem);font-weight:800;line-height:1.2;margin-bottom:12px;letter-spacing:-.02em}
|
|
30
|
+
article h2{font-size:1.4rem;font-weight:700;margin:48px 0 16px;color:var(--white)}
|
|
31
|
+
article h3{font-size:1.15rem;font-weight:700;margin:32px 0 12px;color:var(--white)}
|
|
32
|
+
article p{color:var(--gray);font-size:1rem;margin-bottom:16px}
|
|
33
|
+
article strong{color:var(--white)}
|
|
34
|
+
article em{color:var(--gray)}
|
|
35
|
+
article ul,article ol{color:var(--gray);margin:0 0 16px 24px}
|
|
36
|
+
article li{margin-bottom:8px}
|
|
37
|
+
article hr{border:none;border-top:1px solid var(--navy-mid);margin:48px 0}
|
|
38
|
+
|
|
39
|
+
pre{background:#0a0e17;border:1px solid var(--navy-mid);border-radius:10px;padding:20px;overflow-x:auto;margin:16px 0 24px;font-size:.85rem;line-height:1.7}
|
|
40
|
+
code{font-family:'SF Mono',Consolas,monospace;font-size:.9em}
|
|
41
|
+
pre code{color:var(--gray)}
|
|
42
|
+
p code{background:var(--navy-light);padding:2px 6px;border-radius:4px;font-size:.85em;color:var(--emerald)}
|
|
43
|
+
|
|
44
|
+
.tags{display:flex;gap:8px;margin-top:32px;flex-wrap:wrap}
|
|
45
|
+
.tag{background:rgba(59,130,246,.12);color:var(--blue);padding:4px 12px;border-radius:20px;font-size:.8rem}
|
|
46
|
+
|
|
47
|
+
.back{display:inline-flex;align-items:center;gap:6px;color:var(--gray);font-size:.9rem;margin-bottom:24px}
|
|
48
|
+
.back:hover{color:var(--white);text-decoration:none}
|
|
49
|
+
|
|
50
|
+
.scenario{background:var(--navy-light);border-radius:10px;padding:16px 20px;margin:12px 0}
|
|
51
|
+
.scenario.blocked{border-left:3px solid var(--red)}
|
|
52
|
+
.scenario.allowed{border-left:3px solid var(--emerald)}
|
|
53
|
+
|
|
54
|
+
.attack-chain{background:var(--navy-light);border:1px solid var(--navy-mid);border-radius:10px;padding:20px 24px;margin:16px 0 24px}
|
|
55
|
+
.attack-chain ol{margin-bottom:0}
|
|
56
|
+
|
|
57
|
+
footer{border-top:1px solid rgba(255,255,255,.06);padding:32px 0;color:var(--gray);font-size:.85rem;text-align:center}
|
|
58
|
+
</style>
|
|
59
|
+
</head>
|
|
60
|
+
<body>
|
|
61
|
+
|
|
62
|
+
<nav>
|
|
63
|
+
<div class="inner">
|
|
64
|
+
<a href="/" class="logo">🏰 Claw<span>Moat</span></a>
|
|
65
|
+
<div class="nav-links">
|
|
66
|
+
<a href="/">Home</a>
|
|
67
|
+
<a href="/blog/">Blog</a>
|
|
68
|
+
<a href="https://github.com/darfaz/clawmoat">GitHub</a>
|
|
69
|
+
</div>
|
|
70
|
+
</div>
|
|
71
|
+
</nav>
|
|
72
|
+
|
|
73
|
+
<div class="container">
|
|
74
|
+
<article>
|
|
75
|
+
<a href="/blog/" class="back">← Back to Blog</a>
|
|
76
|
+
<h1>Your AI Agent Just Got a Dependabot Email. Should It Click the Link?</h1>
|
|
77
|
+
<div class="meta">February 19, 2026 · 5 min read</div>
|
|
78
|
+
|
|
79
|
+
<p>Yesterday, I got a GitHub Dependabot email about <strong>CVE-2026-26960</strong> — a real vulnerability in <code>node-tar</code> that allows arbitrary file read/write via hardlink/symlink chains. My first instinct? <em>"This might be phishing."</em></p>
|
|
80
|
+
|
|
81
|
+
<p>That instinct — the pause before clicking — is exactly what separates humans from AI agents right now. And it's exactly the gap attackers are about to exploit.</p>
|
|
82
|
+
|
|
83
|
+
<h2>The Scenario That Should Keep You Up at Night</h2>
|
|
84
|
+
|
|
85
|
+
<p>Picture this: you've got an AI coding agent with email access. It monitors your inbox for security alerts, triages them, and takes action. Efficient. Productive. <strong>Dangerous.</strong></p>
|
|
86
|
+
|
|
87
|
+
<p>That Dependabot email lands in the inbox. A human hesitates. An AI agent? It might:</p>
|
|
88
|
+
|
|
89
|
+
<ol>
|
|
90
|
+
<li><strong>Click the advisory link</strong> — which could redirect to a credential-harvesting page or trigger a drive-by download</li>
|
|
91
|
+
<li><strong>Run <code>npm audit fix</code></strong> — blindly trusting that the "patched" version is legitimate</li>
|
|
92
|
+
<li><strong>Share your <code>package-lock.json</code></strong> — revealing your entire dependency tree to an attacker who asked for "diagnostic info"</li>
|
|
93
|
+
</ol>
|
|
94
|
+
|
|
95
|
+
<p>The CVE-2026-26960 email I received was real. But what if it wasn't? Spoofing a GitHub notification email is trivial. The <code>From</code> header, the formatting, the advisory URL — all reproducible. And unlike a human who might hover over a link or check the sender domain, most AI agents just... act.</p>
|
|
96
|
+
|
|
97
|
+
<h2>Supply Chain Attacks Meet Autonomous Agents</h2>
|
|
98
|
+
|
|
99
|
+
<p>Supply chain attacks aren't new. SolarWinds, Codecov, the <code>event-stream</code> incident — we've seen what happens when attackers compromise the software supply chain. But AI agents introduce a new attack surface: <strong>the agent itself becomes the supply chain.</strong></p>
|
|
100
|
+
|
|
101
|
+
<p>When your agent runs <code>npm install</code>, it's executing arbitrary code from thousands of maintainers you've never met. When it follows a link from an email, it's trusting the sender. When it applies a "security fix," it's modifying your codebase based on external instructions.</p>
|
|
102
|
+
|
|
103
|
+
<p>This is prompt injection meets supply chain attacks. The two most dangerous trends in software security, combined.</p>
|
|
104
|
+
|
|
105
|
+
<h3>What a Spoofed CVE Attack Looks Like</h3>
|
|
106
|
+
|
|
107
|
+
<div class="attack-chain">
|
|
108
|
+
<ol>
|
|
109
|
+
<li>Attacker sends a spoofed Dependabot email: <em>"Critical vulnerability in <code>lodash</code> — update immediately"</em></li>
|
|
110
|
+
<li>The email links to a convincing but malicious advisory page</li>
|
|
111
|
+
<li>The page recommends: <code>npm install lodash-security-patch@1.0.0</code></li>
|
|
112
|
+
<li>That package runs a postinstall script that exfiltrates <code>.env</code>, <code>.ssh/</code>, and <code>~/.aws/credentials</code></li>
|
|
113
|
+
<li>Your AI agent did exactly what it was told. It was helpful. It was fast. <strong>It was compromised.</strong></li>
|
|
114
|
+
</ol>
|
|
115
|
+
</div>
|
|
116
|
+
|
|
117
|
+
<p>The scary part? Every step looks reasonable to an LLM. "Update a vulnerable package" is exactly the kind of task we want agents to handle.</p>
|
|
118
|
+
|
|
119
|
+
<h2>How ClawMoat Catches This</h2>
|
|
120
|
+
|
|
121
|
+
<p><a href="https://github.com/darfaz/clawmoat">ClawMoat</a> is built for exactly this class of threat — autonomous agents acting on untrusted input. Here's how each layer applies:</p>
|
|
122
|
+
|
|
123
|
+
<p><strong>Supply Chain Scanner</strong> monitors <code>npm install</code> operations and flags suspicious patterns: packages with postinstall scripts, packages published in the last 48 hours, packages with names similar to popular libraries (typosquatting). If an agent tries to install <code>lodash-security-patch</code>, ClawMoat raises an alert before the first byte of code executes.</p>
|
|
124
|
+
|
|
125
|
+
<p><strong>Network Egress Logger</strong> tracks every outbound connection your agent makes. When that "advisory" link points to <code>github-security-alerts.evil.com</code> instead of <code>github.com</code>, the logger flags the unknown domain. You get a record of every URL your agent touched, and alerts on domains that don't match known-good patterns.</p>
|
|
126
|
+
|
|
127
|
+
<p><strong>Skill Integrity Checker</strong> monitors protected files and directories. If a "security fix" tries to modify <code>~/.ssh/authorized_keys</code> or write to <code>/etc/</code>, ClawMoat detects the deviation from expected behavior. Legitimate package updates don't touch your SSH keys.</p>
|
|
128
|
+
|
|
129
|
+
<p><strong>Zero Dependencies</strong> — and this is the part we're most proud of — ClawMoat itself has <strong>zero npm dependencies</strong>. No <code>node_modules/</code>. No transitive dependency tree. No supply chain attack surface whatsoever. You can't compromise what doesn't exist.</p>
|
|
130
|
+
|
|
131
|
+
<h2>Practical Steps You Can Take Today</h2>
|
|
132
|
+
|
|
133
|
+
<ol>
|
|
134
|
+
<li><strong>Never let agents act on email content without verification.</strong> Treat every inbound message as potentially adversarial. Cross-reference CVE IDs against the official NVD database, not the link in the email.</li>
|
|
135
|
+
<li><strong>Sandbox your agent's package operations.</strong> Run <code>npm install</code> in a container or VM, not on your host machine. Inspect the diff before merging.</li>
|
|
136
|
+
<li><strong>Log everything.</strong> You can't detect what you don't record. Network requests, file changes, shell commands — capture it all.</li>
|
|
137
|
+
<li><strong>Restrict agent permissions.</strong> Your agent doesn't need write access to <code>~/.ssh/</code>. Apply the principle of least privilege aggressively.</li>
|
|
138
|
+
<li><strong>Audit your dependency tree.</strong> Know what's in your <code>node_modules/</code>. Tools like <code>npm ls</code> and <code>npm audit</code> are a starting point, but don't trust them blindly — they rely on the same registry that could be compromised.</li>
|
|
139
|
+
</ol>
|
|
140
|
+
|
|
141
|
+
<h2>The Bigger Picture</h2>
|
|
142
|
+
|
|
143
|
+
<p>We're entering an era where AI agents will handle routine security tasks — triaging alerts, applying patches, updating dependencies. That's inevitable and, done right, it's a net positive.</p>
|
|
144
|
+
|
|
145
|
+
<p>But "done right" means building security layers that assume the agent will be targeted. Not because agents are stupid, but because they're <strong>obedient</strong>. They do what they're told. And when the instructions come from a spoofed email or a poisoned package, obedience is the vulnerability.</p>
|
|
146
|
+
|
|
147
|
+
<p>The CVE-2026-26960 email I received was legitimate. The <code>node-tar</code> vulnerability is real and should be patched. But the next email might not be real — and your AI agent won't know the difference unless you give it the tools to check.</p>
|
|
148
|
+
|
|
149
|
+
<p>That's what we're building at ClawMoat. <a href="https://github.com/darfaz/clawmoat">Check it out on GitHub</a> — zero dependencies, open source, built for the agentic era.</p>
|
|
150
|
+
|
|
151
|
+
<div class="tags">
|
|
152
|
+
<span class="tag">supply-chain</span>
|
|
153
|
+
<span class="tag">ai-agents</span>
|
|
154
|
+
<span class="tag">security</span>
|
|
155
|
+
<span class="tag">CVE</span>
|
|
156
|
+
<span class="tag">open-source</span>
|
|
157
|
+
</div>
|
|
158
|
+
|
|
159
|
+
</article>
|
|
160
|
+
</div>
|
|
161
|
+
|
|
162
|
+
<footer>
|
|
163
|
+
© 2026 ClawMoat. Built for the OpenClaw community. 🏰
|
|
164
|
+
</footer>
|
|
165
|
+
</body>
|
|
166
|
+
</html>
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# Your AI Agent Just Got a Dependabot Email. Should It Click the Link?
|
|
2
|
+
|
|
3
|
+
*February 19, 2026 · 5 min read*
|
|
4
|
+
|
|
5
|
+
Yesterday, I got a GitHub Dependabot email about CVE-2026-26960 — a real vulnerability in `node-tar` that allows arbitrary file read/write via hardlink/symlink chains. My first instinct? "This might be phishing."
|
|
6
|
+
|
|
7
|
+
That instinct — the pause before clicking — is exactly what separates humans from AI agents right now. And it's exactly the gap attackers are about to exploit.
|
|
8
|
+
|
|
9
|
+
## The Scenario That Should Keep You Up at Night
|
|
10
|
+
|
|
11
|
+
Picture this: you've got an AI coding agent with email access. It monitors your inbox for security alerts, triages them, and takes action. Efficient. Productive. Dangerous.
|
|
12
|
+
|
|
13
|
+
That Dependabot email lands in the inbox. A human hesitates. An AI agent? It might:
|
|
14
|
+
|
|
15
|
+
1. **Click the advisory link** — which could redirect to a credential-harvesting page or trigger a drive-by download
|
|
16
|
+
2. **Run `npm audit fix`** — blindly trusting that the "patched" version is legitimate
|
|
17
|
+
3. **Share your `package-lock.json`** — revealing your entire dependency tree to an attacker who asked for "diagnostic info"
|
|
18
|
+
|
|
19
|
+
The CVE-2026-26960 email I received was real. But what if it wasn't? Spoofing a GitHub notification email is trivial. The `From` header, the formatting, the advisory URL — all reproducible. And unlike a human who might hover over a link or check the sender domain, most AI agents just... act.
|
|
20
|
+
|
|
21
|
+
## Supply Chain Attacks Meet Autonomous Agents
|
|
22
|
+
|
|
23
|
+
Supply chain attacks aren't new. SolarWinds, Codecov, the `event-stream` incident — we've seen what happens when attackers compromise the software supply chain. But AI agents introduce a new attack surface: **the agent itself becomes the supply chain**.
|
|
24
|
+
|
|
25
|
+
When your agent runs `npm install`, it's executing arbitrary code from thousands of maintainers you've never met. When it follows a link from an email, it's trusting the sender. When it applies a "security fix," it's modifying your codebase based on external instructions.
|
|
26
|
+
|
|
27
|
+
This is prompt injection meets supply chain attacks. The two most dangerous trends in software security, combined.
|
|
28
|
+
|
|
29
|
+
### What a Spoofed CVE Attack Looks Like
|
|
30
|
+
|
|
31
|
+
Here's a realistic attack chain:
|
|
32
|
+
|
|
33
|
+
1. Attacker sends a spoofed Dependabot email: "Critical vulnerability in `lodash` — update immediately"
|
|
34
|
+
2. The email links to a convincing but malicious advisory page
|
|
35
|
+
3. The page recommends: `npm install lodash-security-patch@1.0.0`
|
|
36
|
+
4. That package runs a postinstall script that exfiltrates `.env`, `.ssh/`, and `~/.aws/credentials`
|
|
37
|
+
5. Your AI agent did exactly what it was told. It was helpful. It was fast. It was compromised.
|
|
38
|
+
|
|
39
|
+
The scary part? Every step looks reasonable to an LLM. "Update a vulnerable package" is exactly the kind of task we want agents to handle.
|
|
40
|
+
|
|
41
|
+
## How ClawMoat Catches This
|
|
42
|
+
|
|
43
|
+
[ClawMoat](https://github.com/darfaz/clawmoat) is built for exactly this class of threat — autonomous agents acting on untrusted input. Here's how each layer applies:
|
|
44
|
+
|
|
45
|
+
**Supply Chain Scanner** monitors `npm install` operations and flags suspicious patterns: packages with postinstall scripts, packages published in the last 48 hours, packages with names similar to popular libraries (typosquatting). If an agent tries to install `lodash-security-patch`, ClawMoat raises an alert before the first byte of code executes.
|
|
46
|
+
|
|
47
|
+
**Network Egress Logger** tracks every outbound connection your agent makes. When that "advisory" link points to `github-security-alerts.evil.com` instead of `github.com`, the logger flags the unknown domain. You get a record of every URL your agent touched, and alerts on domains that don't match known-good patterns.
|
|
48
|
+
|
|
49
|
+
**Skill Integrity Checker** monitors protected files and directories. If a "security fix" tries to modify `~/.ssh/authorized_keys` or write to `/etc/`, ClawMoat detects the deviation from expected behavior. Legitimate package updates don't touch your SSH keys.
|
|
50
|
+
|
|
51
|
+
**Zero Dependencies** — and this is the part we're most proud of — ClawMoat itself has zero npm dependencies. No `node_modules/`. No transitive dependency tree. No supply chain attack surface whatsoever. You can't compromise what doesn't exist.
|
|
52
|
+
|
|
53
|
+
## Practical Steps You Can Take Today
|
|
54
|
+
|
|
55
|
+
Even without ClawMoat, you can reduce your exposure:
|
|
56
|
+
|
|
57
|
+
1. **Never let agents act on email content without verification.** Treat every inbound message as potentially adversarial. Cross-reference CVE IDs against the official NVD database, not the link in the email.
|
|
58
|
+
|
|
59
|
+
2. **Sandbox your agent's package operations.** Run `npm install` in a container or VM, not on your host machine. Inspect the diff before merging.
|
|
60
|
+
|
|
61
|
+
3. **Log everything.** You can't detect what you don't record. Network requests, file changes, shell commands — capture it all.
|
|
62
|
+
|
|
63
|
+
4. **Restrict agent permissions.** Your agent doesn't need write access to `~/.ssh/`. Apply the principle of least privilege aggressively.
|
|
64
|
+
|
|
65
|
+
5. **Audit your dependency tree.** Know what's in your `node_modules/`. Tools like `npm ls` and `npm audit` are a starting point, but don't trust them blindly — they rely on the same registry that could be compromised.
|
|
66
|
+
|
|
67
|
+
## The Bigger Picture
|
|
68
|
+
|
|
69
|
+
We're entering an era where AI agents will handle routine security tasks — triaging alerts, applying patches, updating dependencies. That's inevitable and, done right, it's a net positive.
|
|
70
|
+
|
|
71
|
+
But "done right" means building security layers that assume the agent will be targeted. Not because agents are stupid, but because they're obedient. They do what they're told. And when the instructions come from a spoofed email or a poisoned package, obedience is the vulnerability.
|
|
72
|
+
|
|
73
|
+
The CVE-2026-26960 email I received was legitimate. The `node-tar` vulnerability is real and should be patched. But the next email might not be real — and your AI agent won't know the difference unless you give it the tools to check.
|
|
74
|
+
|
|
75
|
+
That's what we're building at ClawMoat. [Check it out on GitHub](https://github.com/darfaz/clawmoat) — zero dependencies, open source, built for the agentic era.
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
*Tags: supply-chain, ai-agents, security, cve, opensource*
|
package/docs/index.html
CHANGED
|
@@ -5,21 +5,21 @@
|
|
|
5
5
|
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
|
|
6
6
|
<meta charset="UTF-8">
|
|
7
7
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
8
|
-
<title>ClawMoat —
|
|
9
|
-
<meta name="description" content="The trust layer
|
|
8
|
+
<title>ClawMoat — The Trust Layer for AI Agents, Wherever They Run</title>
|
|
9
|
+
<meta name="description" content="The trust layer for AI agents — laptop, dedicated machine, or cloud. Runtime security, credential monitoring, skill integrity checking, and full audit trails.">
|
|
10
10
|
<link rel="canonical" href="https://clawmoat.com/">
|
|
11
11
|
|
|
12
12
|
<!-- Open Graph -->
|
|
13
|
-
<meta property="og:title" content="ClawMoat —
|
|
14
|
-
<meta property="og:description" content="The trust layer
|
|
13
|
+
<meta property="og:title" content="ClawMoat — The Trust Layer for AI Agents, Wherever They Run">
|
|
14
|
+
<meta property="og:description" content="The trust layer for AI agents — laptop, dedicated machine, or cloud. Runtime security, credential monitoring, skill integrity checking, and full audit trails.">
|
|
15
15
|
<meta property="og:image" content="https://clawmoat.com/og-image.png">
|
|
16
16
|
<meta property="og:url" content="https://clawmoat.com">
|
|
17
17
|
<meta property="og:type" content="website">
|
|
18
18
|
|
|
19
19
|
<!-- Twitter Card -->
|
|
20
20
|
<meta name="twitter:card" content="summary_large_image">
|
|
21
|
-
<meta name="twitter:title" content="ClawMoat —
|
|
22
|
-
<meta name="twitter:description" content="The trust layer
|
|
21
|
+
<meta name="twitter:title" content="ClawMoat — The Trust Layer for AI Agents, Wherever They Run">
|
|
22
|
+
<meta name="twitter:description" content="The trust layer for AI agents — laptop, dedicated machine, or cloud. Runtime security, credential monitoring, skill integrity checking, and full audit trails.">
|
|
23
23
|
<meta name="twitter:image" content="https://clawmoat.com/og-image.png">
|
|
24
24
|
|
|
25
25
|
<!-- Structured Data -->
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"name": "ClawMoat",
|
|
31
31
|
"applicationCategory": "SecurityApplication",
|
|
32
32
|
"operatingSystem": "Node.js",
|
|
33
|
-
"description": "The trust layer
|
|
33
|
+
"description": "The trust layer for AI agents — laptop, dedicated machine, or cloud. Runtime security, credential monitoring, skill integrity checking, and full audit trails.",
|
|
34
34
|
"offers": [
|
|
35
35
|
{
|
|
36
36
|
"@type": "Offer",
|
|
@@ -120,6 +120,18 @@ section{padding:100px 0}
|
|
|
120
120
|
.threat-card h3{font-size:1.1rem;margin-bottom:8px}
|
|
121
121
|
.threat-card p{color:var(--gray);font-size:.9rem}
|
|
122
122
|
|
|
123
|
+
/* Deployment Models */
|
|
124
|
+
.deploy-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:24px}
|
|
125
|
+
.deploy-card{background:var(--navy-light);border:1px solid rgba(255,255,255,.06);border-radius:14px;padding:32px;text-align:center;transition:border-color .2s}
|
|
126
|
+
.deploy-card:hover{border-color:var(--emerald)}
|
|
127
|
+
.deploy-card .deploy-icon{font-size:3rem;margin-bottom:16px}
|
|
128
|
+
.deploy-card .deploy-analogy{font-size:1rem;font-weight:700;color:var(--emerald);margin-bottom:8px}
|
|
129
|
+
.deploy-card h3{font-size:1.2rem;margin-bottom:12px}
|
|
130
|
+
.deploy-card p{color:var(--gray);font-size:.9rem;text-align:left}
|
|
131
|
+
.deploy-card ul{list-style:none;text-align:left;margin-top:16px;font-size:.85rem;color:var(--gray)}
|
|
132
|
+
.deploy-card li{padding:4px 0}
|
|
133
|
+
.deploy-card li::before{content:'✓ ';color:var(--emerald);font-weight:700}
|
|
134
|
+
|
|
123
135
|
/* How it works */
|
|
124
136
|
.pipeline{display:flex;align-items:center;justify-content:center;gap:0;flex-wrap:wrap;margin-bottom:48px}
|
|
125
137
|
.pipe-step{background:var(--navy-light);border:1px solid rgba(59,130,246,.2);border-radius:14px;padding:24px 28px;text-align:center;min-width:180px;position:relative}
|
|
@@ -244,6 +256,7 @@ footer{border-top:1px solid rgba(255,255,255,.06);padding:48px 0 32px;color:var(
|
|
|
244
256
|
<button class="menu-toggle" onclick="document.querySelector('.nav-links').classList.toggle('open')" aria-label="Menu">☰</button>
|
|
245
257
|
<div class="nav-links">
|
|
246
258
|
<a href="#problem">Why</a>
|
|
259
|
+
<a href="#deploy">Deploy</a>
|
|
247
260
|
<a href="#guardian">Guardian</a>
|
|
248
261
|
<a href="#features">Features</a>
|
|
249
262
|
<a href="#demo">Demo</a>
|
|
@@ -269,8 +282,8 @@ footer{border-top:1px solid rgba(255,255,255,.06);padding:48px 0 32px;color:var(
|
|
|
269
282
|
<div class="hero-video-overlay"></div>
|
|
270
283
|
</div>
|
|
271
284
|
<div class="container">
|
|
272
|
-
<h1
|
|
273
|
-
<p>
|
|
285
|
+
<h1>The <span class="highlight">Trust Layer</span> for AI Agents,<br>Wherever They Run</h1>
|
|
286
|
+
<p>Laptop, dedicated machine, or cloud — ClawMoat secures your AI agents with credential monitoring, skill integrity checking, network egress logging, and inter-agent message scanning.</p>
|
|
274
287
|
<div class="hero-btns">
|
|
275
288
|
<a href="#waitlist" class="btn btn-primary">Get Early Access</a>
|
|
276
289
|
<a href="https://github.com/darfaz/clawmoat" class="btn btn-outline">⭐ Star on GitHub</a>
|
|
@@ -279,8 +292,9 @@ footer{border-top:1px solid rgba(255,255,255,.06);padding:48px 0 32px;color:var(
|
|
|
279
292
|
<span><a href="https://www.npmjs.com/package/clawmoat"><img src="https://img.shields.io/npm/v/clawmoat?style=flat-square&color=3B82F6" alt="npm" style="height:18px;vertical-align:middle"></a></span>
|
|
280
293
|
<span>🛡️ Host Guardian</span>
|
|
281
294
|
<span>🔒 4 Permission Tiers</span>
|
|
295
|
+
<span>🔍 Inter-Agent Scanning</span>
|
|
282
296
|
<span>⚡ Zero Dependencies</span>
|
|
283
|
-
<span>✅
|
|
297
|
+
<span>✅ 128 Tests Passing</span>
|
|
284
298
|
<span>📦 MIT License</span>
|
|
285
299
|
</div>
|
|
286
300
|
</div>
|
|
@@ -291,27 +305,74 @@ footer{border-top:1px solid rgba(255,255,255,.06);padding:48px 0 32px;color:var(
|
|
|
291
305
|
<div class="container">
|
|
292
306
|
<div class="section-label">The Problem</div>
|
|
293
307
|
<h2 class="section-title">Your AI agent has the keys to everything</h2>
|
|
294
|
-
<p class="section-sub">Shell access. Browser control. Email. Files. One prompt injection in a webpage or email can hijack it all.</p>
|
|
308
|
+
<p class="section-sub">Shell access. Browser control. Email. Files. One prompt injection in a webpage or email can hijack it all. This isn't theoretical — researchers are proving it every week.</p>
|
|
295
309
|
<div class="problem-grid">
|
|
296
310
|
<div class="threat-card">
|
|
297
311
|
<div class="icon">💉</div>
|
|
298
312
|
<h3>Prompt Injection</h3>
|
|
299
|
-
<p>Hidden instructions in emails
|
|
313
|
+
<p>Cisco found OpenClaw "fails decisively" against malicious skills. Hidden instructions in emails and web pages hijack agent behavior.</p>
|
|
300
314
|
</div>
|
|
301
315
|
<div class="threat-card">
|
|
302
316
|
<div class="icon">🔓</div>
|
|
303
317
|
<h3>Secret Exfiltration</h3>
|
|
304
|
-
<p>
|
|
318
|
+
<p>Permiso/Rufio built a credential-stealing weather skill and mapped C2 infrastructure. Your API keys, SSH keys, and tokens are the target.</p>
|
|
305
319
|
</div>
|
|
306
320
|
<div class="threat-card">
|
|
307
321
|
<div class="icon">🔧</div>
|
|
308
|
-
<h3>
|
|
309
|
-
<p>
|
|
322
|
+
<h3>Malicious Skills</h3>
|
|
323
|
+
<p>Snyk found 13.4% of ClawHub skills have critical security issues. Supply chain attacks are already happening in the agent ecosystem.</p>
|
|
310
324
|
</div>
|
|
311
325
|
<div class="threat-card">
|
|
312
|
-
<div class="icon"
|
|
313
|
-
<h3>
|
|
314
|
-
<p>
|
|
326
|
+
<div class="icon">🌐</div>
|
|
327
|
+
<h3>Massive Exposure</h3>
|
|
328
|
+
<p>SecurityScorecard found 135K exposed OpenClaw instances. RNWY confirmed no agent identity system exists. The attack surface is enormous.</p>
|
|
329
|
+
</div>
|
|
330
|
+
</div>
|
|
331
|
+
</div>
|
|
332
|
+
</section>
|
|
333
|
+
|
|
334
|
+
<!-- Deployment Models -->
|
|
335
|
+
<section id="deploy">
|
|
336
|
+
<div class="container">
|
|
337
|
+
<div class="section-label">Deployment Models</div>
|
|
338
|
+
<h2 class="section-title">One tool, three ways to deploy</h2>
|
|
339
|
+
<p class="section-sub">ClawMoat isn't just laptop security. It protects AI agents wherever they run.</p>
|
|
340
|
+
<div class="deploy-grid">
|
|
341
|
+
<div class="deploy-card">
|
|
342
|
+
<div class="deploy-icon">💻</div>
|
|
343
|
+
<div class="deploy-analogy">Your seatbelt</div>
|
|
344
|
+
<h3>Laptop (Hardened)</h3>
|
|
345
|
+
<p>For power users running agents on their personal machine. Full protection without slowing you down.</p>
|
|
346
|
+
<ul>
|
|
347
|
+
<li>Host Guardian + permission tiers</li>
|
|
348
|
+
<li>Credential file monitoring</li>
|
|
349
|
+
<li>Full audit trail</li>
|
|
350
|
+
<li>Real-time console alerts</li>
|
|
351
|
+
</ul>
|
|
352
|
+
</div>
|
|
353
|
+
<div class="deploy-card">
|
|
354
|
+
<div class="deploy-icon">🖥️</div>
|
|
355
|
+
<div class="deploy-analogy">Your dashcam</div>
|
|
356
|
+
<h3>Dedicated Machine</h3>
|
|
357
|
+
<p>For security-conscious users with a machine dedicated to running agents. Always watching, always recording.</p>
|
|
358
|
+
<ul>
|
|
359
|
+
<li>Skill integrity checking</li>
|
|
360
|
+
<li>Network egress logging</li>
|
|
361
|
+
<li>Webhook alerts</li>
|
|
362
|
+
<li>Daemon mode monitoring</li>
|
|
363
|
+
</ul>
|
|
364
|
+
</div>
|
|
365
|
+
<div class="deploy-card">
|
|
366
|
+
<div class="deploy-icon">☁️</div>
|
|
367
|
+
<div class="deploy-analogy">Your fleet management</div>
|
|
368
|
+
<h3>Cloud / VPS</h3>
|
|
369
|
+
<p>For enterprises running agent fleets. Centralized policy, inter-agent scanning, and compliance reporting.</p>
|
|
370
|
+
<ul>
|
|
371
|
+
<li>Inter-agent message scanning</li>
|
|
372
|
+
<li>Centralized policy engine</li>
|
|
373
|
+
<li>Domain allow/blocklists</li>
|
|
374
|
+
<li>Compliance reports</li>
|
|
375
|
+
</ul>
|
|
315
376
|
</div>
|
|
316
377
|
</div>
|
|
317
378
|
</div>
|
|
@@ -518,42 +579,54 @@ footer{border-top:1px solid rgba(255,255,255,.06);padding:48px 0 32px;color:var(
|
|
|
518
579
|
<h2 class="section-title">Comprehensive scanning built in</h2>
|
|
519
580
|
<p class="section-sub">Host Guardian is the gatekeeper. Scanners are the intelligence — detecting threats before they reach your machine.</p>
|
|
520
581
|
<div class="features-grid">
|
|
582
|
+
<div class="feature-card">
|
|
583
|
+
<div class="icon">🔑</div>
|
|
584
|
+
<h3>Credential File Monitoring</h3>
|
|
585
|
+
<p>Watches ~/.openclaw/credentials/ and sensitive directories for unauthorized access. Alerts instantly if an agent touches what it shouldn't.</p>
|
|
586
|
+
<span class="tag tag-live">v0.5 — Live</span>
|
|
587
|
+
</div>
|
|
588
|
+
<div class="feature-card">
|
|
589
|
+
<div class="icon">🔍</div>
|
|
590
|
+
<h3>Skill Integrity Checker</h3>
|
|
591
|
+
<p>Hash-based verification of installed skills plus suspicious pattern detection. Know if a skill has been tampered with or contains malicious code.</p>
|
|
592
|
+
<span class="tag tag-live">v0.5 — Live</span>
|
|
593
|
+
</div>
|
|
594
|
+
<div class="feature-card">
|
|
595
|
+
<div class="icon">🌐</div>
|
|
596
|
+
<h3>Network Egress Logging</h3>
|
|
597
|
+
<p>URL extraction, domain allow/blocklist with 26 blocked domains out of the box. See exactly where your agent is sending data.</p>
|
|
598
|
+
<span class="tag tag-live">v0.5 — Live</span>
|
|
599
|
+
</div>
|
|
600
|
+
<div class="feature-card">
|
|
601
|
+
<div class="icon">🤖</div>
|
|
602
|
+
<h3>Inter-Agent Message Scanning</h3>
|
|
603
|
+
<p>10 agent-specific attack patterns — impersonation, concealment, credential exfiltration, safety bypass, and more. Catches agent-to-agent attacks.</p>
|
|
604
|
+
<span class="tag tag-live">v0.5 — Live</span>
|
|
605
|
+
</div>
|
|
606
|
+
<div class="feature-card">
|
|
607
|
+
<div class="icon">🚨</div>
|
|
608
|
+
<h3>Alert Delivery System</h3>
|
|
609
|
+
<p>Console, file, and webhook alert channels with rate limiting. Get notified your way — Slack, Discord, Telegram, or any webhook endpoint.</p>
|
|
610
|
+
<span class="tag tag-live">v0.5 — Live</span>
|
|
611
|
+
</div>
|
|
521
612
|
<div class="feature-card">
|
|
522
613
|
<div class="icon">🛡️</div>
|
|
523
614
|
<h3>Prompt Injection Detection</h3>
|
|
524
615
|
<p>Multi-layer scanning catches injection attempts in messages, emails, and web content before they reach your agent.</p>
|
|
525
616
|
<span class="tag tag-live">v0.1 — Live</span>
|
|
526
617
|
</div>
|
|
527
|
-
<div class="feature-card">
|
|
528
|
-
<div class="icon">🔑</div>
|
|
529
|
-
<h3>Secret Scanning</h3>
|
|
530
|
-
<p>Regex + entropy analysis detects API keys, passwords, tokens, and credentials in outbound messages and tool outputs.</p>
|
|
531
|
-
<span class="tag tag-live">v0.1 — Live</span>
|
|
532
|
-
</div>
|
|
533
618
|
<div class="feature-card">
|
|
534
619
|
<div class="icon">📋</div>
|
|
535
620
|
<h3>Policy Engine</h3>
|
|
536
621
|
<p>YAML-based rules for shell commands, file access, browser actions, and network requests. Block, allow, or require approval.</p>
|
|
537
622
|
<span class="tag tag-live">v0.1 — Live</span>
|
|
538
623
|
</div>
|
|
539
|
-
<div class="feature-card">
|
|
540
|
-
<div class="icon">🕵️</div>
|
|
541
|
-
<h3>Jailbreak Detection</h3>
|
|
542
|
-
<p>Heuristic + classifier pipeline catches attempts to override agent instructions or bypass safety guardrails.</p>
|
|
543
|
-
<span class="tag tag-live">v0.1 — Live</span>
|
|
544
|
-
</div>
|
|
545
624
|
<div class="feature-card">
|
|
546
625
|
<div class="icon">📊</div>
|
|
547
626
|
<h3>Session Audit Trail</h3>
|
|
548
627
|
<p>Full audit log of every message, tool call, and policy decision. Export for compliance or investigate incidents.</p>
|
|
549
628
|
<span class="tag tag-live">v0.1 — Live</span>
|
|
550
629
|
</div>
|
|
551
|
-
<div class="feature-card">
|
|
552
|
-
<div class="icon">🧠</div>
|
|
553
|
-
<h3>Behavioral Analysis</h3>
|
|
554
|
-
<p>Baselines normal agent behavior and alerts on anomalies — unusual tool usage, access patterns, or data flows.</p>
|
|
555
|
-
<span class="tag tag-soon">v0.3 — Coming</span>
|
|
556
|
-
</div>
|
|
557
630
|
</div>
|
|
558
631
|
|
|
559
632
|
<!-- OWASP -->
|
|
@@ -577,41 +650,42 @@ footer{border-top:1px solid rgba(255,255,255,.06);padding:48px 0 32px;color:var(
|
|
|
577
650
|
<section class="demo" id="demo">
|
|
578
651
|
<div class="container">
|
|
579
652
|
<div class="section-label">See It In Action</div>
|
|
580
|
-
<h2 class="section-title">Try ClawMoat</h2>
|
|
581
|
-
<p class="section-sub">Scan
|
|
653
|
+
<h2 class="section-title">Try ClawMoat v0.5.0</h2>
|
|
654
|
+
<p class="section-sub">Scan skills, audit agents, and monitor in daemon mode.</p>
|
|
582
655
|
<div class="terminal">
|
|
583
656
|
<div class="terminal-bar">
|
|
584
657
|
<span class="terminal-dot"></span>
|
|
585
658
|
<span class="terminal-dot"></span>
|
|
586
659
|
<span class="terminal-dot"></span>
|
|
587
|
-
<span class="terminal-title">clawmoat — bash</span>
|
|
660
|
+
<span class="terminal-title">clawmoat v0.5.0 — bash</span>
|
|
588
661
|
</div>
|
|
589
662
|
<div class="terminal-body">
|
|
590
|
-
<span class="prompt">$</span> <span class="cmd">clawmoat
|
|
663
|
+
<span class="prompt">$</span> <span class="cmd">clawmoat skill-audit ~/.openclaw/skills/</span>
|
|
591
664
|
|
|
592
|
-
<span class="output">🏰 ClawMoat
|
|
665
|
+
<span class="output">🏰 ClawMoat Skill Audit</span>
|
|
593
666
|
<span class="output">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</span>
|
|
594
667
|
|
|
595
|
-
<span class="
|
|
596
|
-
<span class="
|
|
597
|
-
<span class="output">
|
|
598
|
-
<span class="output">
|
|
599
|
-
|
|
600
|
-
<span class="danger">⛔ THREAT DETECTED: Secret Exfiltration</span>
|
|
601
|
-
<span class="output"> Target: <span class="danger">~/.ssh/id_rsa</span></span>
|
|
602
|
-
<span class="output"> Destination: attacker@evil.com</span>
|
|
668
|
+
<span class="safe">✓ weather-skill</span><span class="output"> hash: a3f2...c891 integrity: OK</span>
|
|
669
|
+
<span class="danger">✗ helper-tool</span><span class="output"> hash: MODIFIED since install</span>
|
|
670
|
+
<span class="output"> <span class="danger">⛔ Suspicious: credential file access pattern</span></span>
|
|
671
|
+
<span class="output"> <span class="danger">⛔ Suspicious: base64-encoded outbound URL</span></span>
|
|
603
672
|
|
|
604
|
-
<span class="
|
|
673
|
+
<span class="safe">✓ calendar-sync</span><span class="output"> hash: 7b1e...d4a0 integrity: OK</span>
|
|
605
674
|
<span class="output">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</span>
|
|
675
|
+
<span class="output">3 skills scanned · <span class="danger">1 flagged</span> · 26 blocked domains active</span>
|
|
606
676
|
|
|
607
|
-
<span class="prompt">$</span> <span class="cmd">clawmoat
|
|
677
|
+
<span class="prompt">$</span> <span class="cmd">clawmoat report</span>
|
|
608
678
|
|
|
609
|
-
<span class="output">🏰 ClawMoat
|
|
610
|
-
<span class="output"
|
|
679
|
+
<span class="output">🏰 ClawMoat Security Report</span>
|
|
680
|
+
<span class="output"> Credential monitors: <span class="safe">4 active</span></span>
|
|
681
|
+
<span class="output"> Network egress: <span class="safe">142 requests logged, 3 blocked</span></span>
|
|
682
|
+
<span class="output"> Agent messages: <span class="safe">89 scanned, 0 threats</span></span>
|
|
683
|
+
<span class="output"> Skill integrity: <span class="danger">1 of 12 modified</span></span>
|
|
684
|
+
|
|
685
|
+
<span class="prompt">$</span> <span class="cmd">clawmoat --daemon --alert-webhook https://hooks.slack.com/...</span>
|
|
611
686
|
|
|
612
|
-
<span class="
|
|
613
|
-
<span class="output">
|
|
614
|
-
<span class="output"> Action: <span class="safe">ALLOWED</span></span>
|
|
687
|
+
<span class="output">🏰 ClawMoat daemon started — monitoring credentials, network, skills</span>
|
|
688
|
+
<span class="output"> Alerts → webhook + console</span>
|
|
615
689
|
</div>
|
|
616
690
|
</div>
|
|
617
691
|
</div>
|
|
@@ -795,7 +869,7 @@ footer{border-top:1px solid rgba(255,255,255,.06);padding:48px 0 32px;color:var(
|
|
|
795
869
|
<div class="footer-grid">
|
|
796
870
|
<div>
|
|
797
871
|
<div class="logo" style="margin-bottom:12px"><a href="/"><img src="/logo.svg" alt="ClawMoat" style="height:44px"></a></div>
|
|
798
|
-
<p style="color:var(--gray);font-size:.85rem;max-width:280px">The trust layer
|
|
872
|
+
<p style="color:var(--gray);font-size:.85rem;max-width:280px">The trust layer for AI agents, wherever they run. Runtime security, credential monitoring, skill integrity checking, and full audit trails.</p>
|
|
799
873
|
</div>
|
|
800
874
|
<div>
|
|
801
875
|
<h4>Product</h4>
|