For current OpenClaw versions, the native Rampart plugin is the primary integration path for non-legacy installs, but native OpenClaw exec approvals remain the UX reference path for exec approval behavior.
That means:
allow, deny, or askallow-always behavior without creating a second approval queueFor OpenClaw-hosted workflows, there should be exactly one human-facing approval object per action.
Use the native plugin setup:
rampart setup openclaw
Use --plugin only if you need to force the native plugin path explicitly.
The plugin integrates via OpenClaw’s native hook APIs and is the preferred path because it survives upgrades much better than direct dist/ patching.
For each tool call:
rampart serveallowdenyaskask, OpenClaw owns the native approval flowRampart also supports OpenClaw native exec approval events as a secondary seam.
This is useful for host-exec/native approval flows that already produce OpenClaw approval events. In that mode:
allow-always persistence after native resolutionThis native exec approval path is supported and remains the reference UX for exec approval behavior. The plugin path should match its single-queue ownership model and, where possible, its native approval UX.
Older setups used:
sudo rampart setup openclaw --patch-tools --force
That direct dist/ patching approach is now legacy compatibility, not the recommended default. It is more fragile across OpenClaw upgrades.
rampart doctor
You should verify at minimum that:
rampart serve is runningask decisions do not create a second Rampart approval queueIf you are choosing what to support for current Rampart releases:
dist/ patchingThe long-term goal is a clean OpenClaw integration that:
dist/ patching except as explicit legacy fallback