惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google Online Security Blog
Google Online Security Blog
博客园_首页
Martin Fowler
Martin Fowler
The GitHub Blog
The GitHub Blog
T
The Blog of Author Tim Ferriss
阮一峰的网络日志
阮一峰的网络日志
WordPress大学
WordPress大学
人人都是产品经理
人人都是产品经理
宝玉的分享
宝玉的分享
博客园 - 叶小钗
Jina AI
Jina AI
罗磊的独立博客
Simon Willison's Weblog
Simon Willison's Weblog
Scott Helme
Scott Helme
D
DataBreaches.Net
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Project Zero
Project Zero
Know Your Adversary
Know Your Adversary
博客园 - Franky
AWS News Blog
AWS News Blog
S
Schneier on Security
K
Kaspersky official blog
I
Intezer
P
Proofpoint News Feed
云风的 BLOG
云风的 BLOG
L
LINUX DO - 热门话题
GbyAI
GbyAI
月光博客
月光博客
C
Cisco Blogs
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
G
GRAHAM CLULEY
P
Privacy International News Feed
P
Privacy & Cybersecurity Law Blog
Hugging Face - Blog
Hugging Face - Blog
P
Proofpoint News Feed
T
Tor Project blog
F
Fortinet All Blogs
博客园 - 三生石上(FineUI控件)
T
Threat Research - Cisco Blogs
IT之家
IT之家
H
Hackread – Cybersecurity News, Data Breaches, AI and More
H
Help Net Security
S
Security Affairs
V
Visual Studio Blog
C
CERT Recently Published Vulnerability Notes
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google DeepMind News
Google DeepMind News
S
SegmentFault 最新的问题
MongoDB | Blog
MongoDB | Blog
T
Troy Hunt's Blog

Recent Commits to openclaw:main

test: merge chat side-result checks · openclaw/openclaw@ddd2c2a test: merge cron history checks · openclaw/openclaw@f7eb746 test: merge responsive navigation shell checks · openclaw/openclaw@c2e4b47 docs(changelog): add codex oauth fixes · openclaw/openclaw@628e6cd test: merge navigation routing cases · openclaw/openclaw@5d8cecb Tests: mock channel registry bundled fallback · openclaw/openclaw@2b08233 Secrets: avoid broad web search discovery for single plugin config · openclaw/openclaw@a464f59 test: merge config view browser checks · openclaw/openclaw@20cf511 fix(status): align oauth health with runtime · openclaw/openclaw@eed7116 feat: add macOS screen snapshots for monitor preview (#67954) thanks … · openclaw/openclaw@f377db1 fix: report shared auth scopes in hello-ok (#67810) thanks @BunsDev · openclaw/openclaw@0b6c39b Auto-reply: avoid eager bundled route fallback · openclaw/openclaw@3ea1bf4 Tests: narrow session binding contract setup · openclaw/openclaw@54e4e16 fix(macOS): enable undo/redo in webchat composer text input (#34962) · openclaw/openclaw@00951dc Tests: speed up channel setup promotion · openclaw/openclaw@82b529a Docs: refresh agent instructions · openclaw/openclaw@5775fe2 fix(auth): serialize OAuth refresh across agents to fix #26322 (#67876) · openclaw/openclaw@8e79080 test: allow ollama public surface boundary test · openclaw/openclaw@7d4f1a6 Docs: add test performance guardrails · openclaw/openclaw@89706d3 Tests: restore context-engine usage proof · openclaw/openclaw@e4c4f95 Tests: slim context engine runtime coverage · openclaw/openclaw@74c198f ci: retry failed custom checkouts · openclaw/openclaw@0ee5baf test: trim duplicate provider auth onboarding cases · openclaw/openclaw@1ffc02e matrix: fix sessions_spawn --thread subagent session spawning (#67643) · openclaw/openclaw@1ce2596 test: reduce auth choice fixture churn · openclaw/openclaw@857b9cd test: mock health status config boundaries · openclaw/openclaw@9d5ab4a test: mock onboard config io boundary · openclaw/openclaw@299694d test: mock legacy state plugin boundaries · openclaw/openclaw@2713089 test: mock channel install boundaries · openclaw/openclaw@b945248 test: mock doctor preview channel boundaries · openclaw/openclaw@b1a3ad4 test: trim doctor command hotspots · openclaw/openclaw@c66f16a test: isolate agent auth and spawn hotspots · openclaw/openclaw@9285935 test: stabilize MCP startup disposal race · openclaw/openclaw@dd9d2eb test: merge browser contract server suites · openclaw/openclaw@5817a76 test: narrow ollama provider discovery setup · openclaw/openclaw@a0d9598 build: declare qa-lab aimock runtime dependency · openclaw/openclaw@24431e5 test: speed up safe-bins exec harness · openclaw/openclaw@ee856ab test: preserve tool helpers in embedded runner mocks · openclaw/openclaw@acd86a0 refactor: move memory embeddings into provider plugins · openclaw/openclaw@77e6e4c test: reuse system-run temp fixtures · openclaw/openclaw@7e9ff0f test: trim hotspot wait overhead · openclaw/openclaw@12a59b0 Check: avoid duplicate boundary prep · openclaw/openclaw@baf11b8 test: reduce hotspot fixture overhead · openclaw/openclaw@3a59edd feat(ui): overhaul settings and slash command UX (#67819) thanks @Bun… · openclaw/openclaw@2cfb660 QA Matrix: exit cleanly on failure · openclaw/openclaw@42805d2 QA Matrix: isolate scenario coverage · openclaw/openclaw@7e659e1 Matrix: refresh crypto bootstrap state · openclaw/openclaw@94081d8 QA Lab: add provider registry · openclaw/openclaw@bb7e982 Matrix: add plugin changelog · openclaw/openclaw@4acab55 test: trim more hotspot overhead · openclaw/openclaw@f485311 test: trim remaining hotspot tests · openclaw/openclaw@6ba8626 test: narrow hotspot mocks · openclaw/openclaw@dbc8179 test: isolate gemini embedding request helpers · openclaw/openclaw@cd330f5 test: trim memory and mcp hotspots · openclaw/openclaw@fd48dfa test: slim provider registry mocks · openclaw/openclaw@2e08c77 test: harden Parallels update smoke · openclaw/openclaw@1a98090 feat: default Anthropic to Opus 4.7 · openclaw/openclaw@628b454 fix: harden node-host shell payload mutability checks · openclaw/openclaw@75c551e fix: land node-host approval binding for native binaries (#66731) (th… · openclaw/openclaw@29919bb CI: add daily schedule to CodeQL workflow (#67645) · openclaw/openclaw@69d25f5 fix(gateway): capture config hash after plugin auto-enable to prevent… · openclaw/openclaw@8c11210 fix: repair sanitized replay tool results before send (#67620) (thank… · openclaw/openclaw@c3c7a99 fix: restrict HTML timeout short-circuit to transient statuses · openclaw/openclaw@de129a6 fix: keep TUI watchdog bound to active run (#67401) (thanks @xantorres) · openclaw/openclaw@3525273 Gateway/skills: dedupe skills prefix-match + drop dead fallback on log · openclaw/openclaw@d7f489f Extensions/lmstudio: back off inference preload after consecutive fai… · openclaw/openclaw@b555214 TUI/streaming: add watchdog that resets the activity indicator after … · openclaw/openclaw@f44ab20 Agents/tool-loop: enable unknown-tool stream guard by default · openclaw/openclaw@36ed367 Gateway/skills: invalidate session skills snapshot on config write · openclaw/openclaw@b23d59a fix: classify HTML provider error pages correctly (#67642) (thanks @s… · openclaw/openclaw@e588e90 fix(skills): remove unused model-usage import (#67641) · openclaw/openclaw@55f05df docs(changelog): credit codex fix superseded PRs · openclaw/openclaw@e485f24 fix(openai-codex): normalize stale transport metadata in resolution a… · openclaw/openclaw@90801ba CI: pin Docker-related GitHub Actions (#67632) · openclaw/openclaw@f697b01 Android: modernize WebView and discovery API usage (#67627) · openclaw/openclaw@44a6e50 fix(deps): bump hono to 4.12.14 and @hono/node-server to 1.19.14 (GHS… · openclaw/openclaw@fbccc18 fix(deps): bump dompurify to 3.4.0 (#67614) · openclaw/openclaw@2c2dc00 CI: add explicit permissions to all workflow jobs (fixes code-scannin… · openclaw/openclaw@01b7516 fix: register bundled TTS providers and route overrides correctly (#6… · openclaw/openclaw@6ea3cdd fix: align host tilde paths with OS home (#62804) (thanks @stainlu) · openclaw/openclaw@ecfaf64 fix: flush creds queue before reconnect socket open (#67464) (thanks … · openclaw/openclaw@405c63f fix: strip standalone <function> tool call tags from visible text (#6… · openclaw/openclaw@78df859 fix(agents): preserve cli session metadata before transcript persist … · openclaw/openclaw@898fd04 docs(changelog): move cli transcript entry · openclaw/openclaw@c1817c6 fix(agents): normalize cli transcript api field · openclaw/openclaw@3a3fae0 docs(changelog): note cli transcript persistence · openclaw/openclaw@6c343f1 fix(agents): persist cli transcript turns · openclaw/openclaw@b8ef507 fix(msteams): harden security-sensitive flows (#65841) · openclaw/openclaw@c56b56e [Dashboard] Fix exec approval modal overflow for long command content… · openclaw/openclaw@053c5b0 Docs: remove QA changelog entry · openclaw/openclaw@7fd5771 QA: fix private runtime source loading (#67428) · openclaw/openclaw@d5933af docs(gateway): correct protocol.md schema path, hello-ok example, aut… · openclaw/openclaw@489404d CI: pin Node 22 runners to 22.18.0 · openclaw/openclaw@4ffa621 models.authStatus: normalize provider ids + tighten env-backed escape… · openclaw/openclaw@f2fdb9d Update CHANGELOG.md · openclaw/openclaw@7694a92 test(parallels): clean up npm update guard jobs · openclaw/openclaw@045ea7b Plugins: prefer scanDir override paths · openclaw/openclaw@b2974da fix(dreaming): default storage.mode to "separate" so phase blocks sto… · openclaw/openclaw@8c392f0 fix(memory-core): skip dreaming transcript ingestion via session stor… · openclaw/openclaw@a1b01f0 fix: dedupe replayed exec.finished node events (#67281) · openclaw/openclaw@5dcf526
docs(security): clarify disclosure policy · openclaw/openclaw@4429ee7
vincentkoc · 2026-05-01 · via Recent Commits to openclaw:main

@@ -1,8 +1,14 @@

11

# Security Policy

223-

If you believe you've found a security issue in OpenClaw, please report it privately.

3+

If you believe you've found a security issue in OpenClaw, report it privately first.

445-

## Reporting

5+

This policy does two things: it gives researchers a clear disclosure path, and it spells out the trust model maintainers use when triaging reports. OpenClaw is local-first agent infrastructure for trusted operators; it is not designed as a shared multi-tenant boundary between adversarial users on one gateway.

6+7+

The fastest useful reports show a current, reproducible boundary bypass with demonstrated impact. Scanner output, prompt-injection-only chains, or reports that rely on hostile users sharing one trusted gateway are usually not security vulnerabilities under this model.

8+9+

Security work is shared across a number of OpenClaw maintainers, including engineers and security researchers from organizations such as NVIDIA. See the [maintainer list](CONTRIBUTING.md#maintainers).

10+11+

## Report a Security Issue

612713

Report vulnerabilities directly to the repository where the issue lives:

814

@@ -15,22 +21,50 @@ Report vulnerabilities directly to the repository where the issue lives:

15211622

For issues that don't fit a specific repo, or if you're unsure, email **[security@openclaw.ai](mailto:security@openclaw.ai)** and we'll route it.

172324+

For OpenClaw core issues, submit through a private [GitHub Security Advisory](https://github.com/openclaw/openclaw/security/advisories/new). Do not open a public issue or PR that discloses an unpatched vulnerability, exploit path, secret, or security-sensitive proof of concept.

25+26+

Maintainers may close, hide, delete, or otherwise take down public issues and PRs that disclose vulnerabilities or active security issues. We will redirect those reports through the private disclosure process so the issue can be triaged and fixed without giving attackers a public playbook.

27+1828

For full reporting instructions see our [Trust page](https://trust.openclaw.ai).

192920-

### Required in Reports

30+

OpenClaw does not currently run a paid bug bounty program. Please still disclose responsibly so we can fix real issues quickly. The best way to help the project right now is to send high-signal reports and, when practical, focused PRs.

31+32+

### What We Need

213322-

1. **Title**

23-

2. **Severity Assessment**

24-

3. **Impact**

25-

4. **Affected Component**

26-

5. **Technical Reproduction**

27-

6. **Demonstrated Impact**

28-

7. **Environment**

29-

8. **Remediation Advice**

34+

Make the report easy to reproduce and easy to route:

303531-

Reports without reproduction steps, demonstrated impact, and remediation advice will be deprioritized. Given the volume of AI-generated scanner findings, we must ensure we're receiving vetted reports from researchers who understand the issues.

36+

- What you found and why you believe it is security-relevant.

37+

- The affected component, version, and commit SHA when possible.

38+

- Reproduction steps or a proof of concept against latest `main` or the latest released version.

39+

- The actual impact, including which OpenClaw trust boundary is crossed.

40+

- Any remediation advice or focused patch you can provide.

324133-

### Report Acceptance Gate (Triage Fast Path)

42+

Reports without reproduction steps, demonstrated impact, and remediation advice are deprioritized. We receive a high volume of AI-generated scanner findings, so we prioritize vetted reports from researchers who can show how the issue crosses an OpenClaw security boundary.

43+44+

### What Usually Is Not a Security Bug

45+46+

These patterns are usually not vulnerabilities by themselves:

47+48+

- Prompt injection without a policy, auth, approval, sandbox, or tool-boundary bypass.

49+

- A trusted operator using an intentional local feature, such as local shell access or browser/script execution.

50+

- A malicious plugin after a trusted operator installs or enables it.

51+

- Multiple adversarial users sharing one Gateway host/config and expecting per-user isolation.

52+

- Scanner-only, dependency-only, or stale-path reports without a working repro and demonstrated OpenClaw impact.

53+

- Public internet exposure or risky deployment choices that the docs already recommend against.

54+55+

If you are unsure, report privately. We would rather route a careful report than miss a real boundary issue.

56+57+

### Duplicate Report Handling

58+59+

- Search existing advisories before filing.

60+

- Include likely duplicate GHSA IDs in your report when applicable.

61+

- Maintainers may close lower-quality/later duplicates in favor of the earliest high-quality canonical report.

62+63+

## Security Posture and Report Rules

64+65+

The sections below are the normative posture maintainers use for report triage. The headings are editorial; the policy text defines the boundary.

66+67+

### Detailed Report Acceptance Gate

34683569

For fastest triage, include all of the following:

3670

@@ -47,7 +81,7 @@ For fastest triage, include all of the following:

47814882

Reports that miss these requirements may be closed as `invalid` or `no-action`.

498350-

### Common False-Positive Patterns

84+

### Detailed False-Positive Patterns

51855286

These are frequently reported but are typically closed with no code change:

5387

@@ -78,26 +112,11 @@ These are frequently reported but are typically closed with no code change:

78112

- Reports that restate an already-fixed issue against later released versions without showing the vulnerable path still exists in the shipped tag or published artifact for that later version.

79113

- SSRF reports against the operator-managed HTTP/WebSocket proxy-routing feature whose only claim is that ordinary process-local HTTP clients (`fetch`, `node:http`, `node:https`, WebSocket clients, axios/got/node-fetch-style clients) can reach an internal, metadata, private, or otherwise sensitive destination when proxy routing is disabled, missing, or the operator-managed proxy policy allows it. For this feature, OpenClaw provides fail-closed proxy routing when enabled; the external proxy's destination policy is operator infrastructure, not an OpenClaw-controlled security boundary. See [Network proxy](https://docs.openclaw.ai/security/network-proxy).

8011481-

### Duplicate Report Handling

82-83-

- Search existing advisories before filing.

84-

- Include likely duplicate GHSA IDs in your report when applicable.

85-

- Maintainers may close lower-quality/later duplicates in favor of the earliest high-quality canonical report.

86-87-

## Security & Trust

88-89-

**Jamieson O'Reilly** ([@theonejvo](https://twitter.com/theonejvo)) is Security & Trust at OpenClaw. Jamieson is the founder of [Dvuln](https://dvuln.com) and brings extensive experience in offensive security, penetration testing, and security program development.

90-91-

## Bug Bounties

92-93-

OpenClaw is a labor of love. There is no bug bounty program and no budget for paid reports. Please still disclose responsibly so we can fix issues quickly.

94-

The best way to help the project right now is by sending PRs.

95-96-

## Maintainers: GHSA Updates via CLI

115+

### Maintainer GHSA Updates via CLI

9711698117

When patching a GHSA via `gh api`, include `X-GitHub-Api-Version: 2022-11-28` (or newer). Without it, some fields (notably CVSS) may not persist even if the request returns 200.

99118100-

## Operator Trust Model (Important)

119+

### Operator Trust Model

101120102121

OpenClaw does **not** model one gateway as a multi-tenant, adversarial user boundary.

103122

@@ -122,15 +141,15 @@ OpenClaw does **not** model one gateway as a multi-tenant, adversarial user boun

122141

- Implicit exec calls (no explicit host in the tool call) follow the same behavior.

123142

- This is expected in OpenClaw's one-user trusted-operator model. If you need isolation, enable sandbox mode (`non-main`/`all`) and keep strict tool policy.

124143125-

## Trusted Plugin Concept (Core)

144+

### Trusted Plugins

126145127146

Plugins/extensions are part of OpenClaw's trusted computing base for a gateway.

128147129148

- Installing or enabling a plugin grants it the same trust level as local code running on that gateway host.

130149

- Plugin behavior such as reading env/files or running host commands is expected inside this trust boundary.

131150

- Security reports must show a boundary bypass (for example unauthenticated plugin load, allowlist/policy bypass, or sandbox/path-safety bypass), not only malicious behavior from a trusted-installed plugin.

132151133-

## Out of Scope

152+

### Out of Scope

134153135154

- Public Internet Exposure

136155

- Using OpenClaw in ways that the docs recommend not to

@@ -156,7 +175,7 @@ Plugins/extensions are part of OpenClaw's trusted computing base for a gateway.

156175

- Reports whose only claim is that a platform-provided upload destination URL is untrusted (for example Microsoft Teams `fileConsent/invoke` `uploadInfo.uploadUrl`) without proving attacker control in an authenticated production flow.

157176

- SSRF reports limited to the operator-managed HTTP/WebSocket proxy-routing feature where the demonstrated mitigation is to enable/configure `proxy.enabled` with a filtering `proxy.proxyUrl`/`OPENCLAW_PROXY_URL`, or where impact depends on a permissive/misconfigured operator proxy. This only covers normal process-local HTTP(S)/WebSocket egress (`fetch`, Node HTTP(S), and similar JavaScript clients); non-HTTP egress and other features are assessed separately. See [Network proxy](https://docs.openclaw.ai/security/network-proxy).

158177159-

## Deployment Assumptions

178+

### Deployment Assumptions

160179161180

OpenClaw security guidance assumes:

162181

@@ -166,7 +185,7 @@ OpenClaw security guidance assumes:

166185

- Authenticated Gateway callers are treated as trusted operators. Session identifiers (for example `sessionKey`) are routing controls, not per-user authorization boundaries.

167186

- Multiple gateway instances can run on one machine, but the recommended model is clean per-user isolation (prefer one host/VPS per user).

168187169-

## One-User Trust Model (Personal Assistant)

188+

### One-User Trust Model

170189171190

OpenClaw's security model is "personal assistant" (one trusted operator, potentially many agents), not "shared multi-tenant bus."

172191

@@ -178,7 +197,7 @@ OpenClaw's security model is "personal assistant" (one trusted operator, potenti

178197

- For company-shared setups, use a dedicated machine/VM/container and dedicated accounts; avoid mixing personal data on that runtime.

179198

- If that host/browser profile is logged into personal accounts (for example Apple/Google/personal password manager), you have collapsed the boundary and increased personal-data exposure risk.

180199181-

## Context Visibility and Allowlists

200+

### Context Visibility and Allowlists

182201183202

OpenClaw distinguishes:

184203

@@ -196,15 +215,15 @@ Reports that only show supplemental-context visibility differences are typically

196215197216

Hardening roadmap may add explicit visibility modes (for example `all`, `allowlist`, `allowlist_quote`) so operators can opt into stricter context filtering with predictable tradeoffs.

198217199-

## Agent and Model Assumptions

218+

### Agent and Model Assumptions

200219201220

- The model/agent is **not** a trusted principal. Assume prompt/content injection can manipulate behavior.

202221

- Security boundaries come from host/config trust, auth, tool policy, sandboxing, and exec approvals.

203222

- Prompt injection by itself is not a vulnerability report unless it crosses one of those boundaries.

204223

- Hook/webhook-driven payloads should be treated as untrusted content; keep unsafe bypass flags disabled unless doing tightly scoped debugging (`hooks.gmail.allowUnsafeExternalContent`, `hooks.mappings[].allowUnsafeExternalContent`).

205224

- Weak model tiers are generally easier to prompt-inject. For tool-enabled or hook-driven agents, prefer strong modern model tiers and strict tool policy (for example `tools.profile: "messaging"` or stricter), plus sandboxing where possible.

206225207-

## Gateway and Node trust concept

226+

### Gateway and Node Trust Concept

208227209228

OpenClaw separates routing from execution, but both remain inside the same operator trust boundary:

210229

@@ -215,7 +234,7 @@ OpenClaw separates routing from execution, but both remain inside the same opera

215234

- Differences in command-risk warning heuristics between exec surfaces (`gateway`, `node`, `sandbox`) do not, by themselves, constitute a security-boundary bypass.

216235

- For untrusted-user isolation, split by trust boundary: separate gateways and separate OS users/hosts per boundary.

217236218-

## Workspace Memory Trust Boundary

237+

### Workspace Memory Trust Boundary

219238220239

`MEMORY.md` and `memory/*.md` are plain workspace files and are treated as trusted local operator state.

221240

@@ -224,15 +243,15 @@ OpenClaw separates routing from execution, but both remain inside the same opera

224243

- Example report pattern considered out of scope: "attacker writes malicious content into `memory/*.md`, then `memory_search` returns it."

225244

- If you need isolation between mutually untrusted users, split by OS user or host and run separate gateways.

226245227-

## Plugin Trust Boundary

246+

### Plugin Trust Boundary

228247229248

Plugins/extensions are loaded **in-process** with the Gateway and are treated as trusted code.

230249231250

- Plugins can execute with the same OS privileges as the OpenClaw process.

232251

- Runtime helpers (for example `runtime.system.runCommandWithTimeout`) are convenience APIs, not a sandbox boundary.

233252

- Only install plugins you trust, and prefer `plugins.allow` to pin explicit trusted plugin ids.

234253235-

## Temp Folder Boundary (Media/Sandbox)

254+

### Temp Folder Boundary

236255237256

OpenClaw uses a dedicated temp root for local media handoff and sandbox-adjacent temp artifacts:

238257

@@ -249,27 +268,27 @@ Security boundary notes:

249268

- SDK temp helpers: `src/plugin-sdk/temp-path.ts`

250269

- messaging/channel tmp guardrail: `scripts/check-no-random-messaging-tmp.mjs`

251270252-

## Operational Guidance

271+

### Operational Guidance

253272254273

For threat model + hardening guidance (including `openclaw security audit --deep` and `--fix`), see:

255274256275

- `https://docs.openclaw.ai/gateway/security`

257276258-

### Tool filesystem hardening

277+

#### Tool Filesystem Hardening

259278260279

- `tools.exec.applyPatch.workspaceOnly: true` (recommended): keeps `apply_patch` writes/deletes within the configured workspace directory.

261280

- `tools.fs.workspaceOnly: true` (optional): restricts `read`/`write`/`edit`/`apply_patch` paths and native prompt image auto-load paths to the workspace directory.

262281

- Avoid setting `tools.exec.applyPatch.workspaceOnly: false` unless you fully trust who can trigger tool execution.

263282264-

### Sub-agent delegation hardening

283+

#### Sub-Agent Delegation Hardening

265284266285

- Keep `sessions_spawn` denied unless you explicitly need delegated runs.

267286

- Keep `agents.list[].subagents.allowAgents` narrow, and only include agents with sandbox settings you trust.

268287

- When delegation must stay sandboxed, call `sessions_spawn` with `sandbox: "require"` (default is `inherit`).

269288

- `sandbox: "require"` rejects the spawn unless the target child runtime is sandboxed.

270289

- This prevents a less-restricted session from delegating work into an unsandboxed child by mistake.

271290272-

### Web Interface Safety

291+

#### Web Interface Safety

273292274293

OpenClaw's web interface (Gateway Control UI + HTTP endpoints) is intended for **local use only**.

275294

@@ -321,12 +340,39 @@ docker run --read-only --cap-drop=ALL \

321340322341

## Security Scanning

323342324-

This project uses `detect-secrets` for automated secret detection in CI/CD.

325-

See `.detect-secrets.cfg` for configuration and `.secrets.baseline` for the baseline.

343+

OpenClaw uses several security and release-validation layers. No single scanner is treated as the boundary.

344+345+

### Secret Detection

326346327-

Run locally:

347+

OpenClaw uses `detect-secrets` with a checked-in baseline and local exclusion notes (`.secrets.baseline`, `.detect-secrets.cfg`). Secret-resolution behavior is also covered by the dedicated secrets test surface.

348+349+

Run the baseline scan locally:

328350329351

```bash

330352

pip install detect-secrets==1.5.0

331353

detect-secrets scan --baseline .secrets.baseline

332354

```

355+356+

### Static Analysis

357+358+

CI runs CodeQL across core TypeScript, GitHub Actions, Android, macOS, and high-risk runtime boundaries using `.github/workflows/codeql*.yml` and `.github/codeql/*.yml`.

359+360+

OpenGrep provides a high-precision Semgrep-compatible layer. PRs run a changed-path scan; maintainers can run a full repository scan when needed. The rulepack lives under `security/opengrep/`, with `.semgrepignore` as the shared exclusion file.

361+362+

Run the local OpenGrep wrapper after installing `opengrep`:

363+364+

```bash

365+

scripts/run-opengrep.sh --changed --sarif --error

366+

pnpm check:opengrep-rule-metadata

367+

```

368+369+

### E2E and Live Validation

370+371+

Security-relevant behavior is also covered by runtime validation, not only static scanning:

372+373+

- `pnpm test:e2e` for repo E2E coverage.

374+

- `pnpm test:live` for live provider/runtime coverage.

375+

- `pnpm test:docker:all` for Docker-packaged runtime scenarios.

376+

- Package acceptance and scheduled live/E2E workflows for release-path validation.

377+378+

These lanes exercise packaged installs, gateway/runtime behavior, live model/provider paths, Docker scenarios, and platform smoke tests. They complement scanners by proving the security-sensitive flows still behave correctly in real runtime environments.