Conversation
added 3 commits
March 26, 2026 16:36
…ed deletion, MCP agent identity
- message patch: new bundle uses '= async () => await runMessageAction({'
instead of 'const result = await runMessageAction({'
- web_fetch patch: new bundle uses 'readStringParam$1' instead of 'readStringParam'
- doctor: check ask mode at tools.exec.ask in addition to top-level ask
Found during dogfooding on OpenClaw 2026.3.24.
added 2 commits
March 29, 2026 17:25
…plugin - Extract BuildAllowPattern and HashPattern to internal/policy/glob.go for shared use by bridge and API handlers - New POST /v1/rules/learn endpoint with admin auth, smart glob computation, atomic file writes, duplicate detection (409), and automatic policy reload - Tests for learn handler (create, duplicate, missing fields, auth) and shared glob functions - Plugin integration and openclaw policy profile
added 12 commits
March 30, 2026 01:12
…law.yaml profile, doctor checks - POST /v1/rules/learn: always-allow writeback API for OpenClaw plugin - BuildAllowPattern extracted to internal/policy/glob.go (shared) - rampart setup openclaw --plugin: installs plugin, configures OpenClaw - rampart setup openclaw --migrate: removes old dist patches, installs plugin - policies/openclaw.yaml: 13-policy profile for OpenClaw tool surface - rampart doctor: plugin health check - Bridge audit sink restored and struct fixes - All bridge tests passing
…haler
- tests/e2e.yaml: replace deprecated 'require_approval' expect values with
'ask' (renamed in v0.9.9)
- internal/proxy/learn_handlers.go: add toolList type with custom YAML
unmarshaler so tool: accepts both scalar ('exec') and sequence (['exec'])
forms in user override rules
…efixes Add shouldKeepExact() to detect dangerous command prefixes and return exact pattern instead of globbing: - docker run/exec, kubectl apply/exec/delete - curl/wget with external URLs (non-localhost) - chmod/chown on sensitive paths (/etc, /usr, /root, etc) - sudo rm, sudo dd, sudo mkfs Safe prefixes (apt install, npm install, brew install, etc) continue to glob the last argument as before. 23/23 tests pass.
- fix: guard strings.Fields()[0] in getOpenClawVersion (no panic on empty version) - fix: serialize user-overrides.yaml writes with policyWriteMu (TOCTOU) - fix: same mutex for handleDeleteAutoAllowed rules handler - docs: fix approval timeout default README 1h → 2m, cli-commands 5m → 2m - docs: remove stale require_approval from API-REFERENCE, clarify ask - docs: fix action:log references across docs-site guides
added 2 commits
March 30, 2026 16:03
- Use path.Clean() to resolve .. and . in isSensitivePathToken, blocking /tmp/../etc/shadow style bypasses - Strip wrapper prefixes (sudo, env, nice, nohup, etc) before checking dangerous prefix list, so 'sudo docker run' correctly blocks wildcards - Drop sudo- prefixed entries (sudo rm, sudo dd, sudo mkfs) since rm/dd/mkfs now match with or without sudo after prefix stripping - Add 6 new test cases covering the fixed bypass vectors
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Rampart v0.9.10
Polished minor release. All blockers resolved, security audit clean, e2e 45/45, all packages pass with
-raceon Linux/macOS/Windows.OpenClaw Plugin Integration
The headline feature of this release. Rampart previously intercepted tool calls by patching OpenClaw's dist files — fragile, broke on every upgrade. v0.9.10 replaces that with a native OpenClaw plugin using the official
before_tool_callhook API.How it works:
rampart setup --plugininstalls the plugin viaopenclaw plugins install, setstools.exec.ask: off(Rampart owns all decisions), and copies theopenclaw.yamlpolicy profilebefore_tool_calland checks Rampart's proxyask, the plugin surfaces an approval UI in OpenClaw and polls until resolvedPOST /v1/rules/learnto write a permanent allow rule back intouser-overrides.yamlRequires: OpenClaw >= 2026.3.28 (introduces
before_tool_callhook)Security Fixes
BuildAllowPattern hardened — high-risk command prefixes no longer generate trailing wildcard globs:
docker run nginx→ exact match (notdocker run *)sudo docker run nginx→ exact match (wrapper prefix stripping:sudo/env/nice/nohup/etc. are stripped before dangerous prefix check)kubectl apply/exec/delete,curl <external-url>,rm,dd,mkfs,chmod/chownon sensitive paths all kept exactapt install,npm install,brew install) continue to glob last arg as beforePath traversal fix in
isSensitivePathToken—path.Clean()now resolves..and.before matching sensitive roots./tmp/../etc/shadowand/./etc/passwdnow correctly trigger exact-match mode.policyWriteMuadded to Server —handleLearnRuleandhandleDeleteAutoAllowedserialize the read-modify-write cycle on policy YAML files, eliminating the TOCTOU race under concurrent admin requests.Reliability
rampart serverestarts (JSONL at~/.rampart/pending-approvals.jsonl, atomic writes, graceful on missing file, 4 new tests)rampart doctorchecksask: on-miss— the most common silent failure now produces a clear warning with the exact fixDELETE /v1/rules/auto-allowed/{name}replaces fragile index-based deletion--agent-idand--session-idflags onrampart mcpUX / Bug Fixes
sudo apt-get install nmapwritessudo apt-get install *instead of exact match; dangerous prefixes excluded (see Security above)strings.Fields(version)[0]now guarded against empty slice; no crash on malformedopenclaw --versionoutputrequire_approval→ask(renamed in v0.9.9); suite now 45/45 cleantool: exec(scalar) andtool: [exec](sequence)homebrew_casks→brews; Homebrew auto-update now worksDocs
require_approvalremoved from API-REFERENCE;asknoted as replacementaction: logdeprecation noted in guides (renamed toaction: watch)Test Status