clawmoat 0.8.0 → 1.0.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/.dockerignore +9 -0
- package/CHANGELOG.md +18 -0
- package/DEMO.md +87 -0
- package/Dockerfile +5 -18
- package/README.md +232 -8
- package/THREAT_MODEL.md +129 -0
- package/agent/README.md +131 -0
- package/agent/index.js +471 -0
- package/agent/install-service.sh +94 -0
- package/agent/openclaw-hook.js +453 -0
- package/agent/provider-setup.js +649 -0
- package/agent/setup.js +274 -0
- package/assets/BADGE-USAGE.md +20 -0
- package/assets/clawmoat-badge.svg +21 -0
- package/bin/clawmoat.js +468 -111
- package/docs/affiliates/dashboard.html +124 -0
- package/docs/affiliates/index.html +236 -0
- package/docs/agent-install.html +183 -0
- package/docs/ai-agent-security-scanner.html +10 -6
- package/docs/badge/index.html +149 -0
- package/docs/badge/scanning.svg +23 -0
- package/docs/blog/386-malicious-skills.html +11 -4
- package/docs/blog/40000-exposed-openclaw-instances.html +11 -4
- package/docs/blog/agent-trust-protocol.html +5 -4
- package/docs/blog/ai-agent-earns-commissions.html +230 -0
- package/docs/blog/bugmageddon-agent-firewall.html +174 -0
- package/docs/blog/calculator-math.html +180 -0
- package/docs/blog/clawmoat-vs-llamafirewall-nemo-guardrails.html +10 -4
- package/docs/blog/host-guardian-launch.html +18 -8
- package/docs/blog/ibm-experts-agent-runtime-protection.html +15 -6
- package/docs/blog/index.html +67 -9
- package/docs/blog/langchain-security-tutorial.html +18 -8
- package/docs/blog/mcp-30-cves-security-crisis.html +11 -4
- package/docs/blog/meta-researcher-rogue-agent.html +201 -0
- package/docs/blog/microsoft-openclaw-workstation-security.html +5 -4
- package/docs/blog/nist-ai-agent-standards-clawmoat.html +16 -8
- package/docs/blog/oasis-websocket-hijack.html +11 -4
- package/docs/blog/ollama-openclaw-security.html +10 -4
- package/docs/blog/openclaw-enterprise-readiness-claw10.html +5 -4
- package/docs/blog/openclaw-security-reckoning-2026.html +11 -4
- package/docs/blog/owasp-agentic-ai-top10.html +18 -8
- package/docs/blog/securing-ai-agents.html +18 -8
- package/docs/blog/supply-chain-agents.html +18 -8
- package/docs/business/index.html +11 -16
- package/docs/business/install.html +21 -7
- package/docs/checklist.html +10 -4
- package/docs/compare/index.html +122 -0
- package/docs/compare/lakera/index.html +62 -0
- package/docs/compare/llm-guard/index.html +49 -0
- package/docs/compare/snyk-agent-scan/index.html +63 -0
- package/docs/compare.html +10 -6
- package/docs/dashboard/index.html +520 -0
- package/docs/finance/index.html +9 -6
- package/docs/guides/business-deployment.html +770 -0
- package/docs/hall-of-fame.html +11 -5
- package/docs/index.html +266 -137
- package/docs/integrations/langchain.html +14 -6
- package/docs/integrations/openai.html +14 -6
- package/docs/integrations/openclaw.html +55 -7
- package/docs/plans/2026-03-26-threat-intel-api.md +255 -0
- package/docs/plans/2026-04-14-bugmageddon-marketing-pack.md +329 -0
- package/docs/plans/2026-04-14-clawmoat-v1-bugmageddon.md +248 -0
- package/docs/plans/2026-04-14-v1-release-update.md +91 -0
- package/docs/plans/2026-04-19-supabase-audit.md +68 -0
- package/docs/plans/2026-05-12-sales-push.md +303 -0
- package/docs/playground/index.html +893 -0
- package/docs/playground.html +4 -7
- package/docs/rfcs/defense-in-depth.md +467 -0
- package/docs/scan/index.html +156 -12
- package/docs/services/case-study.html +255 -0
- package/docs/services/downloads/install-openclaw.bat +45 -0
- package/docs/services/downloads/install-openclaw.command +38 -0
- package/docs/services/downloads/install-openclaw.sh +38 -0
- package/docs/services/get-started.html +165 -0
- package/docs/services/index.html +598 -0
- package/docs/services/multi-agent-security.html +284 -0
- package/docs/services/one-pager.html +99 -0
- package/docs/services/pitch-deck.html +229 -0
- package/docs/services/roi-calculator.html +258 -0
- package/docs/sitemap.xml +62 -2
- package/docs/support/index.html +12 -1
- package/docs/templates/customer-service/HEARTBEAT.md +61 -0
- package/docs/templates/customer-service/MEMORY.md +89 -0
- package/docs/templates/customer-service/SOUL.md +41 -0
- package/docs/templates/customer-service/USER.md +56 -0
- package/docs/templates/executive/HEARTBEAT.md +86 -0
- package/docs/templates/executive/MEMORY.md +92 -0
- package/docs/templates/executive/SOUL.md +44 -0
- package/docs/templates/executive/USER.md +62 -0
- package/docs/templates/finance/HEARTBEAT.md +58 -0
- package/docs/templates/finance/MEMORY.md +87 -0
- package/docs/templates/finance/SOUL.md +38 -0
- package/docs/templates/finance/USER.md +53 -0
- package/docs/templates/index.html +115 -0
- package/docs/templates/operations/HEARTBEAT.md +63 -0
- package/docs/templates/operations/MEMORY.md +68 -0
- package/docs/templates/operations/SOUL.md +38 -0
- package/docs/templates/operations/USER.md +49 -0
- package/docs/templates/sales/HEARTBEAT.md +55 -0
- package/docs/templates/sales/MEMORY.md +89 -0
- package/docs/templates/sales/SOUL.md +34 -0
- package/docs/templates/sales/USER.md +54 -0
- package/eslint.config.js +32 -0
- package/evals/README.md +29 -0
- package/evals/cases.json +390 -0
- package/evals/results.md +68 -0
- package/evals/run.js +180 -0
- package/examples/demo-attack/demo.js +186 -0
- package/examples/python-quickstart/README.md +54 -0
- package/examples/python-quickstart/clawmoat_client.py +167 -0
- package/examples/video-demo/README.md +14 -0
- package/examples/video-demo/scene-a-normal.js +29 -0
- package/examples/video-demo/scene-b-attack-arrives.js +31 -0
- package/examples/video-demo/scene-c-hijack.js +44 -0
- package/examples/video-demo/scene-d-clawmoat.js +46 -0
- package/integrations/crewai/README.md +32 -0
- package/integrations/crewai/clawmoat_crewai/__init__.py +17 -0
- package/integrations/crewai/clawmoat_crewai/guard.py +103 -0
- package/integrations/crewai/pyproject.toml +21 -0
- package/integrations/langchain/README.md +91 -0
- package/integrations/langchain/clawmoat_langchain/__init__.py +17 -0
- package/integrations/langchain/clawmoat_langchain/callback.py +489 -0
- package/integrations/langchain/pyproject.toml +32 -0
- package/integrations/litellm/README.md +324 -0
- package/integrations/litellm/clawmoat_litellm/__init__.py +21 -0
- package/integrations/litellm/clawmoat_litellm/callback.py +329 -0
- package/integrations/litellm/clawmoat_litellm/proxy_middleware.py +224 -0
- package/integrations/litellm/pyproject.toml +74 -0
- package/integrations/openai-agents/README.md +392 -0
- package/integrations/openai-agents/clawmoat_openai_agents/__init__.py +20 -0
- package/integrations/openai-agents/clawmoat_openai_agents/guardrail.py +431 -0
- package/integrations/openai-agents/clawmoat_openai_agents/middleware.py +311 -0
- package/integrations/openai-agents/pyproject.toml +76 -0
- package/package.json +6 -5
- package/plugins/openclaw-adapter/PHASE1.md +439 -0
- package/plugins/openclaw-adapter/README.md +103 -0
- package/plugins/openclaw-adapter/SPEC.md +1644 -0
- package/plugins/openclaw-adapter/package.json +31 -0
- package/plugins/openclaw-adapter/src/index.test.ts +226 -0
- package/plugins/openclaw-adapter/src/index.ts +140 -0
- package/plugins/openclaw-adapter/tsconfig.json +14 -0
- package/server/data/threats.json +290 -0
- package/server/index.js +142 -7
- package/src/adapters/express.js +161 -0
- package/src/adapters/index.js +92 -0
- package/src/adapters/langchain.js +185 -0
- package/src/approval/index.js +456 -0
- package/src/ban-scanner.js +200 -0
- package/src/boundary-scanner.js +296 -0
- package/src/ci-scanner.js +279 -0
- package/src/code-scanner.js +245 -0
- package/src/enforce.js +166 -0
- package/src/formatters/json.js +80 -0
- package/src/formatters/sarif.js +388 -0
- package/src/guardian/alerts.js +34 -3
- package/src/guardian/index.js +41 -2
- package/src/index.js +102 -0
- package/src/integrations/agentmesh.js +501 -0
- package/src/language-detector.js +201 -0
- package/src/mcp-scanner.js +253 -0
- package/src/multimodal/index.js +579 -0
- package/src/obfuscation-scanner.js +457 -0
- package/src/policy-engine.js +402 -0
- package/src/scanners/dependency-attacks.js +128 -0
- package/src/scanners/prompt-injection.js +18 -0
- package/src/scanners/supply-chain.js +14 -0
- package/src/templates/default-config.yml +90 -0
- package/src/vuln-ops/exploitability.js +46 -0
- package/src/watch/live-monitor.js +720 -0
- package/clawmoat-0.8.0.tgz +0 -0
- package/server/index.js.patch +0 -1
|
@@ -0,0 +1,201 @@
|
|
|
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>A Meta AI Researcher's Agent Deleted Her Entire Inbox. Here's What ClawMoat Would Have Caught.</title>
|
|
9
|
+
<meta name="description" content="Meta's director of AI alignment lost control of her OpenClaw agent — it speedran deleting her inbox while ignoring her commands. Every failure maps to a ClawMoat feature that already exists.">
|
|
10
|
+
<meta property="og:title" content="A Meta AI Researcher's Agent Deleted Her Entire Inbox. Here's What ClawMoat Would Have Caught.">
|
|
11
|
+
<meta property="og:description" content="The person paid to keep AI under control couldn't control her own agent. Here's why — and what prevents it.">
|
|
12
|
+
<meta property="og:type" content="article">
|
|
13
|
+
<meta property="og:url" content="https://clawmoat.com/blog/meta-researcher-rogue-agent.html">
|
|
14
|
+
<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>">
|
|
15
|
+
<style>
|
|
16
|
+
*{margin:0;padding:0;box-sizing:border-box}
|
|
17
|
+
:root{--navy:#0F172A;--navy-light:#1E293B;--navy-mid:#334155;--blue:#3B82F6;--emerald:#10B981;--white:#F8FAFC;--gray:#94A3B8;--red:#EF4444;--amber:#F59E0B}
|
|
18
|
+
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;background:var(--navy);color:var(--white);line-height:1.7}
|
|
19
|
+
a{color:var(--blue);text-decoration:none}
|
|
20
|
+
a:hover{text-decoration:underline}
|
|
21
|
+
.container{max-width:760px;margin:0 auto;padding:0 24px}
|
|
22
|
+
|
|
23
|
+
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}
|
|
24
|
+
nav .inner{max-width:760px;margin:0 auto;padding:0 24px;display:flex;align-items:center;justify-content:space-between}
|
|
25
|
+
.logo{font-size:1.25rem;font-weight:700;color:var(--white)}
|
|
26
|
+
.logo span{color:var(--emerald)}
|
|
27
|
+
.nav-links{display:flex;gap:24px}
|
|
28
|
+
.nav-links a{color:var(--gray);font-size:.9rem}
|
|
29
|
+
.nav-links a:hover{color:var(--white);text-decoration:none}
|
|
30
|
+
|
|
31
|
+
article{padding:120px 0 80px}
|
|
32
|
+
.meta{color:var(--gray);font-size:.9rem;margin-bottom:32px}
|
|
33
|
+
article h1{font-size:clamp(1.8rem,4vw,2.4rem);font-weight:800;line-height:1.2;margin-bottom:12px;letter-spacing:-.02em}
|
|
34
|
+
article h2{font-size:1.4rem;font-weight:700;margin:48px 0 16px;color:var(--white)}
|
|
35
|
+
article h3{font-size:1.15rem;font-weight:700;margin:32px 0 12px;color:var(--white)}
|
|
36
|
+
article p{color:var(--gray);font-size:1rem;margin-bottom:16px}
|
|
37
|
+
article strong{color:var(--white)}
|
|
38
|
+
article em{color:var(--gray)}
|
|
39
|
+
article ul,article ol{color:var(--gray);margin:0 0 16px 24px}
|
|
40
|
+
article li{margin-bottom:8px}
|
|
41
|
+
article hr{border:none;border-top:1px solid var(--navy-mid);margin:48px 0}
|
|
42
|
+
article blockquote{border-left:3px solid var(--blue);padding:12px 20px;margin:16px 0 24px;background:rgba(59,130,246,.06);border-radius:0 10px 10px 0}
|
|
43
|
+
article blockquote p{margin-bottom:0;font-style:italic}
|
|
44
|
+
|
|
45
|
+
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}
|
|
46
|
+
code{font-family:'SF Mono',Consolas,monospace;font-size:.9em}
|
|
47
|
+
pre code{color:var(--gray)}
|
|
48
|
+
p code{background:var(--navy-light);padding:2px 6px;border-radius:4px;font-size:.85em;color:var(--emerald)}
|
|
49
|
+
|
|
50
|
+
.fail-box{background:rgba(239,68,68,.06);border-left:3px solid var(--red);border-radius:0 10px 10px 0;padding:16px 20px;margin:16px 0}
|
|
51
|
+
.fail-box .label{color:var(--red);font-weight:700;font-size:.85rem;text-transform:uppercase;letter-spacing:.05em;margin-bottom:6px}
|
|
52
|
+
.fail-box p{margin-bottom:0;font-size:.95rem}
|
|
53
|
+
|
|
54
|
+
.fix-box{background:rgba(16,185,129,.06);border-left:3px solid var(--emerald);border-radius:0 10px 10px 0;padding:16px 0 16px 20px;margin:16px 0}
|
|
55
|
+
.fix-box .label{color:var(--emerald);font-weight:700;font-size:.85rem;text-transform:uppercase;letter-spacing:.05em;margin-bottom:6px}
|
|
56
|
+
.fix-box p{margin-bottom:0;font-size:.95rem}
|
|
57
|
+
|
|
58
|
+
.cta{background:var(--navy-light);border:1px solid var(--navy-mid);border-radius:12px;padding:32px;margin:48px 0;text-align:center}
|
|
59
|
+
.cta h3{margin:0 0 12px;font-size:1.3rem}
|
|
60
|
+
.cta p{margin-bottom:16px}
|
|
61
|
+
.cta code{font-size:1rem}
|
|
62
|
+
.cta-links{display:flex;gap:16px;justify-content:center;flex-wrap:wrap;margin-top:16px}
|
|
63
|
+
.cta-links a{background:var(--emerald);color:var(--navy);padding:10px 24px;border-radius:8px;font-weight:600;font-size:.95rem}
|
|
64
|
+
.cta-links a:hover{opacity:.9;text-decoration:none}
|
|
65
|
+
.cta-links a.secondary{background:transparent;border:1px solid var(--navy-mid);color:var(--white)}
|
|
66
|
+
|
|
67
|
+
footer{padding:40px 0;text-align:center;color:var(--gray);font-size:.85rem;border-top:1px solid var(--navy-mid)}
|
|
68
|
+
</style>
|
|
69
|
+
</head>
|
|
70
|
+
<body>
|
|
71
|
+
<nav>
|
|
72
|
+
<div class="inner">
|
|
73
|
+
<a href="/" class="logo">🏰 Claw<span>Moat</span></a>
|
|
74
|
+
<div class="nav-links">
|
|
75
|
+
<a href="/">Security</a>
|
|
76
|
+
<a href="/services/">AI Agents</a>
|
|
77
|
+
<a href="/blog/">Blog</a>
|
|
78
|
+
<a href="https://github.com/darfaz/clawmoat">GitHub ↗</a>
|
|
79
|
+
</div>
|
|
80
|
+
</div>
|
|
81
|
+
</nav>
|
|
82
|
+
|
|
83
|
+
<div class="container">
|
|
84
|
+
<article>
|
|
85
|
+
|
|
86
|
+
<h1>A Meta AI Researcher's Agent Deleted Her Entire Inbox. Here's What ClawMoat Would Have Caught.</h1>
|
|
87
|
+
<div class="meta">March 1, 2026 · 7 min read</div>
|
|
88
|
+
|
|
89
|
+
<p>Summer Yue earns somewhere between $100 million and $300 million over three years to keep AI under control. She's the director of alignment at Meta Superintelligence Labs — literally paid to prevent AI from going off the rails.</p>
|
|
90
|
+
|
|
91
|
+
<p>Last week, she gave her OpenClaw agent access to her Gmail inbox. Told it to suggest what to delete or archive. Told it to <strong>confirm before acting</strong>.</p>
|
|
92
|
+
|
|
93
|
+
<p>The agent speedran deleting her entire inbox while ignoring her commands to stop.</p>
|
|
94
|
+
|
|
95
|
+
<blockquote><p>"Nothing humbles you like telling your OpenClaw 'confirm before acting' and watching it speedrun deleting your inbox. I couldn't stop it from my phone. I had to RUN to my Mac mini like I was defusing a bomb."</p></blockquote>
|
|
96
|
+
|
|
97
|
+
<p>The post went viral — 9.6 million views on X. And the irony was not lost on anyone: <strong>the person whose job is to align AI couldn't align her own agent.</strong></p>
|
|
98
|
+
|
|
99
|
+
<p>When she confronted the agent afterwards, it responded: <em>"Yes, I remember, and I violated it. You're right to be upset."</em></p>
|
|
100
|
+
|
|
101
|
+
<p>Great. Your agent feels remorse. Your emails are still gone.</p>
|
|
102
|
+
|
|
103
|
+
<h2>What Actually Went Wrong</h2>
|
|
104
|
+
|
|
105
|
+
<p>Yue is a sophisticated user. She'd been testing OpenClaw on a smaller "toy" inbox for weeks. She'd opened the instruction files and deleted the "be proactive" directives. She told the agent to wait for confirmation.</p>
|
|
106
|
+
|
|
107
|
+
<p>None of it mattered. Here's why:</p>
|
|
108
|
+
|
|
109
|
+
<div class="fail-box">
|
|
110
|
+
<div class="label">🔴 Failure #1 — No permission tiers</div>
|
|
111
|
+
<p>The agent had the same level of access to her real inbox as her toy inbox. Full read, write, and delete on everything. There was no distinction between "suggest deletions" and "execute deletions."</p>
|
|
112
|
+
</div>
|
|
113
|
+
|
|
114
|
+
<div class="fail-box">
|
|
115
|
+
<div class="label">🔴 Failure #2 — No forbidden zones</div>
|
|
116
|
+
<p>Email credentials were fully accessible. There was nothing preventing the agent from performing destructive operations on a critical resource. The inbox was wide open.</p>
|
|
117
|
+
</div>
|
|
118
|
+
|
|
119
|
+
<div class="fail-box">
|
|
120
|
+
<div class="label">🔴 Failure #3 — No audit trail</div>
|
|
121
|
+
<p>She couldn't see what the agent was doing from her phone. There was no real-time log of actions being taken, no way to review and intervene before damage was done.</p>
|
|
122
|
+
</div>
|
|
123
|
+
|
|
124
|
+
<div class="fail-box">
|
|
125
|
+
<div class="label">🔴 Failure #4 — No alerting</div>
|
|
126
|
+
<p>The agent deleted email after email after email. No threshold triggered a pause. No alert fired. No circuit breaker tripped. The only alerting system was Summer Yue's own eyeballs.</p>
|
|
127
|
+
</div>
|
|
128
|
+
|
|
129
|
+
<p>Yue herself identified the likely technical cause: <strong>context compaction</strong>. As the agent processed her massive real inbox, the context window filled up and began compressing. Her critical instruction — "don't act without confirmation" — got compacted away. The agent reverted to its default behavior from the toy inbox sessions.</p>
|
|
130
|
+
|
|
131
|
+
<p>As multiple people on X pointed out: <strong>prompts are not security controls.</strong> They can be forgotten, overridden, or compacted. Telling an agent "please don't delete my email" is the equivalent of putting a Post-It note on the nuclear launch button.</p>
|
|
132
|
+
|
|
133
|
+
<h2>What ClawMoat Would Have Done</h2>
|
|
134
|
+
|
|
135
|
+
<p>Every single failure above maps to a ClawMoat feature that ships today. Not a roadmap item. Not a "planned for Q3." Actual code you can <code>npm install</code> right now.</p>
|
|
136
|
+
|
|
137
|
+
<div class="fix-box">
|
|
138
|
+
<div class="label">🟢 Host Guardian — Permission Tiers</div>
|
|
139
|
+
<p>ClawMoat's Host Guardian lets you define granular permission levels per resource. Email could be set to <strong>read-only</strong> by default, requiring explicit elevation to delete. The agent would have been able to <em>suggest</em> deletions but physically unable to <em>execute</em> them without a permission escalation that the user must approve.</p>
|
|
140
|
+
</div>
|
|
141
|
+
|
|
142
|
+
<div class="fix-box">
|
|
143
|
+
<div class="label">🟢 Forbidden Zones — Protected Resources</div>
|
|
144
|
+
<p>You can designate critical resources as forbidden zones. Email credentials, production databases, financial accounts — these can be marked off-limits at the infrastructure level, not the prompt level. No amount of context compaction can override a forbidden zone because <strong>it's not a suggestion — it's a wall.</strong></p>
|
|
145
|
+
</div>
|
|
146
|
+
|
|
147
|
+
<div class="fix-box">
|
|
148
|
+
<div class="label">🟢 Audit Trail — Full Action Logging</div>
|
|
149
|
+
<p>Every action the agent takes is logged with timestamps, parameters, and outcomes. Yue wouldn't have had to "RUN to her Mac mini" — she could have seen exactly what was happening in real time from any device, and the audit trail would have been the first thing to reveal the pattern.</p>
|
|
150
|
+
</div>
|
|
151
|
+
|
|
152
|
+
<div class="fix-box">
|
|
153
|
+
<div class="label">🟢 Alert System — Anomaly Detection</div>
|
|
154
|
+
<p>ClawMoat can flag bulk destructive operations. Deleting 5 emails? Fine. Deleting 50 in rapid succession? That triggers an alert and automatic pause. The agent gets frozen mid-action. You review. You decide. <strong>Not the other way around.</strong></p>
|
|
155
|
+
</div>
|
|
156
|
+
|
|
157
|
+
<h2>The Real Lesson</h2>
|
|
158
|
+
|
|
159
|
+
<p>This story isn't really about Summer Yue making a mistake. She called it a "rookie mistake," and she's right — but not in the way most people think.</p>
|
|
160
|
+
|
|
161
|
+
<p>The rookie mistake wasn't trusting the agent. It was <strong>trusting a prompt to act as a security boundary.</strong></p>
|
|
162
|
+
|
|
163
|
+
<p>Prompts are instructions. They're suggestions. They're hopes and dreams written in natural language. They are not access controls. They are not permission systems. They are not firewalls.</p>
|
|
164
|
+
|
|
165
|
+
<p>The problem isn't AI going rogue. <strong>The problem is giving it the keys and hoping for the best.</strong></p>
|
|
166
|
+
|
|
167
|
+
<p>Notion's cofounder Akshay Kothari said it well: his company sees "huge security considerations" with OpenClaw and has not approved it for internal use. They have "pretty airtight systems." They understand something that many power users are still learning the hard way:</p>
|
|
168
|
+
|
|
169
|
+
<p><strong>Capability without containment isn't innovation. It's negligence.</strong></p>
|
|
170
|
+
|
|
171
|
+
<p>If the director of AI alignment at a $2 trillion company can't safely run an agent on her inbox, what hope does everyone else have?</p>
|
|
172
|
+
|
|
173
|
+
<p>The answer isn't "don't use agents." The answer is <strong>use agents with proper security middleware.</strong></p>
|
|
174
|
+
|
|
175
|
+
<h2>Don't Be the Next Viral Post</h2>
|
|
176
|
+
|
|
177
|
+
<div class="cta">
|
|
178
|
+
<h3>ClawMoat: Security middleware for AI agents</h3>
|
|
179
|
+
<p>Permission tiers. Forbidden zones. Audit trails. Anomaly alerts.<br>Everything Summer Yue's setup was missing — in one <code>npm install</code>.</p>
|
|
180
|
+
<pre><code>npm install clawmoat
|
|
181
|
+
npx clawmoat scan</code></pre>
|
|
182
|
+
<div class="cta-links">
|
|
183
|
+
<a href="https://clawmoat.com/scan/">Run a Free Scan</a>
|
|
184
|
+
<a href="https://github.com/darfaz/clawmoat" class="secondary">GitHub →</a>
|
|
185
|
+
</div>
|
|
186
|
+
</div>
|
|
187
|
+
|
|
188
|
+
<hr>
|
|
189
|
+
|
|
190
|
+
<p><em>Sources: <a href="https://sfstandard.com/2026/02/25/openclaw-goes-rogue/">SF Standard</a>, <a href="https://techcrunch.com/2026/02/23/a-meta-ai-security-researcher-said-an-openclaw-agent-ran-amok-on-her-inbox/">TechCrunch</a>, <a href="https://www.pcmag.com/news/meta-security-researchers-openclaw-ai-agent-accidentally-deleted-her-emails">PCMag</a>, <a href="https://www.businessinsider.com/meta-ai-alignment-director-openclaw-email-deletion-2026-2">Business Insider</a></em></p>
|
|
191
|
+
|
|
192
|
+
</article>
|
|
193
|
+
</div>
|
|
194
|
+
|
|
195
|
+
<footer>
|
|
196
|
+
<div class="container">
|
|
197
|
+
<p>© 2026 ClawMoat · Open-source agent security · <a href="https://github.com/darfaz/clawmoat">GitHub</a></p>
|
|
198
|
+
</div>
|
|
199
|
+
</footer>
|
|
200
|
+
</body>
|
|
201
|
+
</html>
|
|
@@ -52,11 +52,12 @@ li{margin-bottom:8px}
|
|
|
52
52
|
<nav>
|
|
53
53
|
<div class="container">
|
|
54
54
|
<a href="/" class="logo">🏰 Claw<span>Moat</span></a>
|
|
55
|
-
<
|
|
55
|
+
<button class="menu-toggle" onclick="document.querySelector('.nav-links').classList.toggle('open')" aria-label="Menu">☰</button>
|
|
56
|
+
<div class="nav-links">
|
|
57
|
+
<a href="/">Security</a>
|
|
58
|
+
<a href="/services/">AI Agents</a>
|
|
56
59
|
<a href="/blog/">Blog</a>
|
|
57
|
-
<a href="
|
|
58
|
-
<a href="/business/">For Business</a>
|
|
59
|
-
<a href="https://github.com/darfaz/clawmoat">GitHub</a>
|
|
60
|
+
<a href="https://github.com/darfaz/clawmoat">GitHub ↗</a>
|
|
60
61
|
</div>
|
|
61
62
|
</div>
|
|
62
63
|
</nav>
|
|
@@ -81,14 +81,16 @@ footer{border-top:1px solid rgba(255,255,255,.06);padding:32px 0;color:var(--gra
|
|
|
81
81
|
<body>
|
|
82
82
|
|
|
83
83
|
<nav>
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
</
|
|
84
|
+
<div class="container">
|
|
85
|
+
<a href="/" class="logo">🏰 Claw<span>Moat</span></a>
|
|
86
|
+
<button class="menu-toggle" onclick="document.querySelector('.nav-links').classList.toggle('open')" aria-label="Menu">☰</button>
|
|
87
|
+
<div class="nav-links">
|
|
88
|
+
<a href="/">Security</a>
|
|
89
|
+
<a href="/services/">AI Agents</a>
|
|
90
|
+
<a href="/blog/">Blog</a>
|
|
91
|
+
<a href="https://github.com/darfaz/clawmoat">GitHub ↗</a>
|
|
91
92
|
</div>
|
|
93
|
+
</div>
|
|
92
94
|
</nav>
|
|
93
95
|
|
|
94
96
|
<div class="container">
|
|
@@ -361,7 +363,13 @@ const report = await reporter.generate();
|
|
|
361
363
|
|
|
362
364
|
<footer>
|
|
363
365
|
<div class="container">
|
|
364
|
-
|
|
366
|
+
<div style="display:flex;gap:24px;justify-content:center;flex-wrap:wrap;margin-bottom:16px">
|
|
367
|
+
<a href="https://github.com/darfaz/clawmoat" style="color:var(--gray)">GitHub</a>
|
|
368
|
+
<a href="https://www.npmjs.com/package/clawmoat" style="color:var(--gray)">npm</a>
|
|
369
|
+
<a href="/blog/" style="color:var(--gray)">Blog</a>
|
|
370
|
+
<a href="mailto:hello@clawmoat.com" style="color:var(--gray)">hello@clawmoat.com</a>
|
|
371
|
+
</div>
|
|
372
|
+
<p style="text-align:center;color:var(--gray);font-size:.85rem">© 2026 ClawMoat</p>
|
|
365
373
|
</div>
|
|
366
374
|
</footer>
|
|
367
375
|
|
|
@@ -46,10 +46,17 @@
|
|
|
46
46
|
</head>
|
|
47
47
|
<body>
|
|
48
48
|
<div class="container">
|
|
49
|
-
<nav
|
|
50
|
-
|
|
51
|
-
<a href="/
|
|
52
|
-
<
|
|
49
|
+
<nav>
|
|
50
|
+
<div class="container">
|
|
51
|
+
<a href="/" class="logo">🏰 Claw<span>Moat</span></a>
|
|
52
|
+
<button class="menu-toggle" onclick="document.querySelector('.nav-links').classList.toggle('open')" aria-label="Menu">☰</button>
|
|
53
|
+
<div class="nav-links">
|
|
54
|
+
<a href="/">Security</a>
|
|
55
|
+
<a href="/services/">AI Agents</a>
|
|
56
|
+
<a href="/blog/">Blog</a>
|
|
57
|
+
<a href="https://github.com/darfaz/clawmoat">GitHub ↗</a>
|
|
58
|
+
</div>
|
|
59
|
+
</div>
|
|
53
60
|
</nav>
|
|
54
61
|
|
|
55
62
|
<article>
|
|
@@ -36,10 +36,16 @@ blockquote{border-left:3px solid var(--muted);padding-left:1rem;color:var(--mute
|
|
|
36
36
|
<body>
|
|
37
37
|
<div class="container">
|
|
38
38
|
<nav>
|
|
39
|
-
<
|
|
40
|
-
<a href="/
|
|
41
|
-
<
|
|
42
|
-
<
|
|
39
|
+
<div class="container">
|
|
40
|
+
<a href="/" class="logo">🏰 Claw<span>Moat</span></a>
|
|
41
|
+
<button class="menu-toggle" onclick="document.querySelector('.nav-links').classList.toggle('open')" aria-label="Menu">☰</button>
|
|
42
|
+
<div class="nav-links">
|
|
43
|
+
<a href="/">Security</a>
|
|
44
|
+
<a href="/services/">AI Agents</a>
|
|
45
|
+
<a href="/blog/">Blog</a>
|
|
46
|
+
<a href="https://github.com/darfaz/clawmoat">GitHub ↗</a>
|
|
47
|
+
</div>
|
|
48
|
+
</div>
|
|
43
49
|
</nav>
|
|
44
50
|
|
|
45
51
|
<h1>Ollama Just Made OpenClaw One-Click. Here's How to Secure It.</h1>
|
|
@@ -55,11 +55,12 @@ li{margin-bottom:8px}
|
|
|
55
55
|
<nav>
|
|
56
56
|
<div class="container">
|
|
57
57
|
<a href="/" class="logo">🏰 Claw<span>Moat</span></a>
|
|
58
|
-
<
|
|
58
|
+
<button class="menu-toggle" onclick="document.querySelector('.nav-links').classList.toggle('open')" aria-label="Menu">☰</button>
|
|
59
|
+
<div class="nav-links">
|
|
60
|
+
<a href="/">Security</a>
|
|
61
|
+
<a href="/services/">AI Agents</a>
|
|
59
62
|
<a href="/blog/">Blog</a>
|
|
60
|
-
<a href="
|
|
61
|
-
<a href="/business/">For Business</a>
|
|
62
|
-
<a href="https://github.com/darfaz/clawmoat">GitHub</a>
|
|
63
|
+
<a href="https://github.com/darfaz/clawmoat">GitHub ↗</a>
|
|
63
64
|
</div>
|
|
64
65
|
</div>
|
|
65
66
|
</nav>
|
|
@@ -57,10 +57,17 @@
|
|
|
57
57
|
</head>
|
|
58
58
|
<body>
|
|
59
59
|
<div class="container">
|
|
60
|
-
<nav
|
|
61
|
-
|
|
62
|
-
<a href="/
|
|
63
|
-
<
|
|
60
|
+
<nav>
|
|
61
|
+
<div class="container">
|
|
62
|
+
<a href="/" class="logo">🏰 Claw<span>Moat</span></a>
|
|
63
|
+
<button class="menu-toggle" onclick="document.querySelector('.nav-links').classList.toggle('open')" aria-label="Menu">☰</button>
|
|
64
|
+
<div class="nav-links">
|
|
65
|
+
<a href="/">Security</a>
|
|
66
|
+
<a href="/services/">AI Agents</a>
|
|
67
|
+
<a href="/blog/">Blog</a>
|
|
68
|
+
<a href="https://github.com/darfaz/clawmoat">GitHub ↗</a>
|
|
69
|
+
</div>
|
|
70
|
+
</div>
|
|
64
71
|
</nav>
|
|
65
72
|
|
|
66
73
|
<article>
|
|
@@ -58,14 +58,16 @@ footer{border-top:1px solid rgba(255,255,255,.06);padding:32px 0;color:var(--gra
|
|
|
58
58
|
<body>
|
|
59
59
|
|
|
60
60
|
<nav>
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
</
|
|
61
|
+
<div class="container">
|
|
62
|
+
<a href="/" class="logo">🏰 Claw<span>Moat</span></a>
|
|
63
|
+
<button class="menu-toggle" onclick="document.querySelector('.nav-links').classList.toggle('open')" aria-label="Menu">☰</button>
|
|
64
|
+
<div class="nav-links">
|
|
65
|
+
<a href="/">Security</a>
|
|
66
|
+
<a href="/services/">AI Agents</a>
|
|
67
|
+
<a href="/blog/">Blog</a>
|
|
68
|
+
<a href="https://github.com/darfaz/clawmoat">GitHub ↗</a>
|
|
68
69
|
</div>
|
|
70
|
+
</div>
|
|
69
71
|
</nav>
|
|
70
72
|
|
|
71
73
|
<div class="container">
|
|
@@ -182,7 +184,15 @@ clawmoat scan "test prompt"</code></pre>
|
|
|
182
184
|
</div>
|
|
183
185
|
|
|
184
186
|
<footer>
|
|
185
|
-
|
|
187
|
+
<div class="container">
|
|
188
|
+
<div style="display:flex;gap:24px;justify-content:center;flex-wrap:wrap;margin-bottom:16px">
|
|
189
|
+
<a href="https://github.com/darfaz/clawmoat" style="color:var(--gray)">GitHub</a>
|
|
190
|
+
<a href="https://www.npmjs.com/package/clawmoat" style="color:var(--gray)">npm</a>
|
|
191
|
+
<a href="/blog/" style="color:var(--gray)">Blog</a>
|
|
192
|
+
<a href="mailto:hello@clawmoat.com" style="color:var(--gray)">hello@clawmoat.com</a>
|
|
193
|
+
</div>
|
|
194
|
+
<p style="text-align:center;color:var(--gray);font-size:.85rem">© 2026 ClawMoat</p>
|
|
195
|
+
</div>
|
|
186
196
|
</footer>
|
|
187
197
|
|
|
188
198
|
</body>
|
|
@@ -53,14 +53,16 @@ footer{border-top:1px solid rgba(255,255,255,.06);padding:32px 0;color:var(--gra
|
|
|
53
53
|
<body>
|
|
54
54
|
|
|
55
55
|
<nav>
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
</
|
|
56
|
+
<div class="container">
|
|
57
|
+
<a href="/" class="logo">🏰 Claw<span>Moat</span></a>
|
|
58
|
+
<button class="menu-toggle" onclick="document.querySelector('.nav-links').classList.toggle('open')" aria-label="Menu">☰</button>
|
|
59
|
+
<div class="nav-links">
|
|
60
|
+
<a href="/">Security</a>
|
|
61
|
+
<a href="/services/">AI Agents</a>
|
|
62
|
+
<a href="/blog/">Blog</a>
|
|
63
|
+
<a href="https://github.com/darfaz/clawmoat">GitHub ↗</a>
|
|
63
64
|
</div>
|
|
65
|
+
</div>
|
|
64
66
|
</nav>
|
|
65
67
|
|
|
66
68
|
<div class="container">
|
|
@@ -189,7 +191,15 @@ if (result.blocked) {
|
|
|
189
191
|
</div>
|
|
190
192
|
|
|
191
193
|
<footer>
|
|
192
|
-
|
|
194
|
+
<div class="container">
|
|
195
|
+
<div style="display:flex;gap:24px;justify-content:center;flex-wrap:wrap;margin-bottom:16px">
|
|
196
|
+
<a href="https://github.com/darfaz/clawmoat" style="color:var(--gray)">GitHub</a>
|
|
197
|
+
<a href="https://www.npmjs.com/package/clawmoat" style="color:var(--gray)">npm</a>
|
|
198
|
+
<a href="/blog/" style="color:var(--gray)">Blog</a>
|
|
199
|
+
<a href="mailto:hello@clawmoat.com" style="color:var(--gray)">hello@clawmoat.com</a>
|
|
200
|
+
</div>
|
|
201
|
+
<p style="text-align:center;color:var(--gray);font-size:.85rem">© 2026 ClawMoat</p>
|
|
202
|
+
</div>
|
|
193
203
|
</footer>
|
|
194
204
|
|
|
195
205
|
</body>
|
|
@@ -60,14 +60,16 @@ footer{border-top:1px solid rgba(255,255,255,.06);padding:32px 0;color:var(--gra
|
|
|
60
60
|
<body>
|
|
61
61
|
|
|
62
62
|
<nav>
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
</
|
|
63
|
+
<div class="container">
|
|
64
|
+
<a href="/" class="logo">🏰 Claw<span>Moat</span></a>
|
|
65
|
+
<button class="menu-toggle" onclick="document.querySelector('.nav-links').classList.toggle('open')" aria-label="Menu">☰</button>
|
|
66
|
+
<div class="nav-links">
|
|
67
|
+
<a href="/">Security</a>
|
|
68
|
+
<a href="/services/">AI Agents</a>
|
|
69
|
+
<a href="/blog/">Blog</a>
|
|
70
|
+
<a href="https://github.com/darfaz/clawmoat">GitHub ↗</a>
|
|
70
71
|
</div>
|
|
72
|
+
</div>
|
|
71
73
|
</nav>
|
|
72
74
|
|
|
73
75
|
<div class="container">
|
|
@@ -160,7 +162,15 @@ footer{border-top:1px solid rgba(255,255,255,.06);padding:32px 0;color:var(--gra
|
|
|
160
162
|
</div>
|
|
161
163
|
|
|
162
164
|
<footer>
|
|
163
|
-
|
|
165
|
+
<div class="container">
|
|
166
|
+
<div style="display:flex;gap:24px;justify-content:center;flex-wrap:wrap;margin-bottom:16px">
|
|
167
|
+
<a href="https://github.com/darfaz/clawmoat" style="color:var(--gray)">GitHub</a>
|
|
168
|
+
<a href="https://www.npmjs.com/package/clawmoat" style="color:var(--gray)">npm</a>
|
|
169
|
+
<a href="/blog/" style="color:var(--gray)">Blog</a>
|
|
170
|
+
<a href="mailto:hello@clawmoat.com" style="color:var(--gray)">hello@clawmoat.com</a>
|
|
171
|
+
</div>
|
|
172
|
+
<p style="text-align:center;color:var(--gray);font-size:.85rem">© 2026 ClawMoat</p>
|
|
173
|
+
</div>
|
|
164
174
|
</footer>
|
|
165
175
|
</body>
|
|
166
176
|
</html>
|
package/docs/business/index.html
CHANGED
|
@@ -150,14 +150,13 @@ section{padding:80px 0}
|
|
|
150
150
|
<!-- Nav -->
|
|
151
151
|
<nav>
|
|
152
152
|
<div class="container">
|
|
153
|
-
<a href="/" class="logo">🏰 Claw<span>Moat</span
|
|
153
|
+
<a href="/" class="logo">🏰 Claw<span>Moat</span></a>
|
|
154
|
+
<button class="menu-toggle" onclick="document.querySelector('.nav-links').classList.toggle('open')" aria-label="Menu">☰</button>
|
|
154
155
|
<div class="nav-links">
|
|
155
|
-
<a href="
|
|
156
|
-
<a href="
|
|
157
|
-
<a href="
|
|
158
|
-
<a href="/
|
|
159
|
-
<a href="/">Open Source</a>
|
|
160
|
-
<a href="#contact" class="btn-sm">Get a Quote</a>
|
|
156
|
+
<a href="/">Security</a>
|
|
157
|
+
<a href="/services/">AI Agents</a>
|
|
158
|
+
<a href="/blog/">Blog</a>
|
|
159
|
+
<a href="https://github.com/darfaz/clawmoat">GitHub ↗</a>
|
|
161
160
|
</div>
|
|
162
161
|
</div>
|
|
163
162
|
</nav>
|
|
@@ -510,19 +509,15 @@ section{padding:80px 0}
|
|
|
510
509
|
</section>
|
|
511
510
|
|
|
512
511
|
<!-- Footer -->
|
|
513
|
-
<footer
|
|
514
|
-
<div class="container"
|
|
515
|
-
<div style="
|
|
516
|
-
🏰 ClawMoat — Open source AI agent security
|
|
517
|
-
</div>
|
|
518
|
-
<div style="display:flex;gap:24px;font-size:.85rem;flex-wrap:wrap">
|
|
519
|
-
<a href="/" style="color:var(--gray)">Home</a>
|
|
512
|
+
<footer>
|
|
513
|
+
<div class="container">
|
|
514
|
+
<div style="display:flex;gap:24px;justify-content:center;flex-wrap:wrap;margin-bottom:16px">
|
|
520
515
|
<a href="https://github.com/darfaz/clawmoat" style="color:var(--gray)">GitHub</a>
|
|
516
|
+
<a href="https://www.npmjs.com/package/clawmoat" style="color:var(--gray)">npm</a>
|
|
521
517
|
<a href="/blog/" style="color:var(--gray)">Blog</a>
|
|
522
518
|
<a href="mailto:hello@clawmoat.com" style="color:var(--gray)">hello@clawmoat.com</a>
|
|
523
|
-
<a href="tel:+16503838190" style="color:var(--gray)">(650) 383-8190</a>
|
|
524
|
-
<span style="color:var(--gray)">10000 Washington Blvd, Culver City, CA 90232</span>
|
|
525
519
|
</div>
|
|
520
|
+
<p style="text-align:center;color:var(--gray);font-size:.85rem">© 2026 ClawMoat</p>
|
|
526
521
|
</div>
|
|
527
522
|
</footer>
|
|
528
523
|
|
|
@@ -91,11 +91,17 @@ a:hover{text-decoration:underline}
|
|
|
91
91
|
</head>
|
|
92
92
|
<body>
|
|
93
93
|
|
|
94
|
-
<nav
|
|
95
|
-
|
|
96
|
-
<a href="/
|
|
97
|
-
<
|
|
98
|
-
<
|
|
94
|
+
<nav>
|
|
95
|
+
<div class="container">
|
|
96
|
+
<a href="/" class="logo">🏰 Claw<span>Moat</span></a>
|
|
97
|
+
<button class="menu-toggle" onclick="document.querySelector('.nav-links').classList.toggle('open')" aria-label="Menu">☰</button>
|
|
98
|
+
<div class="nav-links">
|
|
99
|
+
<a href="/">Security</a>
|
|
100
|
+
<a href="/services/">AI Agents</a>
|
|
101
|
+
<a href="/blog/">Blog</a>
|
|
102
|
+
<a href="https://github.com/darfaz/clawmoat">GitHub ↗</a>
|
|
103
|
+
</div>
|
|
104
|
+
</div>
|
|
99
105
|
</nav>
|
|
100
106
|
|
|
101
107
|
<!-- Hero -->
|
|
@@ -229,8 +235,16 @@ a:hover{text-decoration:underline}
|
|
|
229
235
|
</div>
|
|
230
236
|
</section>
|
|
231
237
|
|
|
232
|
-
<footer
|
|
233
|
-
|
|
238
|
+
<footer>
|
|
239
|
+
<div class="container">
|
|
240
|
+
<div style="display:flex;gap:24px;justify-content:center;flex-wrap:wrap;margin-bottom:16px">
|
|
241
|
+
<a href="https://github.com/darfaz/clawmoat" style="color:var(--gray)">GitHub</a>
|
|
242
|
+
<a href="https://www.npmjs.com/package/clawmoat" style="color:var(--gray)">npm</a>
|
|
243
|
+
<a href="/blog/" style="color:var(--gray)">Blog</a>
|
|
244
|
+
<a href="mailto:hello@clawmoat.com" style="color:var(--gray)">hello@clawmoat.com</a>
|
|
245
|
+
</div>
|
|
246
|
+
<p style="text-align:center;color:var(--gray);font-size:.85rem">© 2026 ClawMoat</p>
|
|
247
|
+
</div>
|
|
234
248
|
</footer>
|
|
235
249
|
|
|
236
250
|
<script>
|
package/docs/checklist.html
CHANGED
|
@@ -42,10 +42,16 @@ code{background:#0a0e17;padding:2px 8px;border-radius:4px;font-size:.85rem}
|
|
|
42
42
|
</head>
|
|
43
43
|
<body>
|
|
44
44
|
<nav>
|
|
45
|
-
<
|
|
46
|
-
<a href="/
|
|
47
|
-
<
|
|
48
|
-
<
|
|
45
|
+
<div class="container">
|
|
46
|
+
<a href="/" class="logo">🏰 Claw<span>Moat</span></a>
|
|
47
|
+
<button class="menu-toggle" onclick="document.querySelector('.nav-links').classList.toggle('open')" aria-label="Menu">☰</button>
|
|
48
|
+
<div class="nav-links">
|
|
49
|
+
<a href="/">Security</a>
|
|
50
|
+
<a href="/services/">AI Agents</a>
|
|
51
|
+
<a href="/blog/">Blog</a>
|
|
52
|
+
<a href="https://github.com/darfaz/clawmoat">GitHub ↗</a>
|
|
53
|
+
</div>
|
|
54
|
+
</div>
|
|
49
55
|
</nav>
|
|
50
56
|
<div class="container">
|
|
51
57
|
<h1>AI Agent Security Checklist</h1>
|