OpenClaw Action Gate
The installable OpenClaw plugin behind Action Gate.
The OpenClaw-side runtime plugin for the Action Gate project. Hooks before_incoming_action, before_outbound_message, and after_outbound_message, applies the per-scope action-gate.json policy, and writes a per-decision audit record. This is the package you actually install; the Action Gate page on SuperAda documents the contract and use cases, this page documents the package.
scripts/sync-superada-to-clawhub.mjs on every push to main.h-mascot/agent-action-gate (plugins/openclaw-action-gate)
Canonical source: https://github.com/h-mascot/agent-action-gate/tree/main/plugins/openclaw-action-gate
One-shot install into a host plugins/ directory, then the auto installer registers the plugin with the running runtime.
git clone --depth=1 https://github.com/h-mascot/agent-action-gate.git /tmp/agent-action-gate && mkdir -p plugins && cp -R /tmp/agent-action-gate/plugins/openclaw-action-gate plugins/openclaw-action-gate && (cd plugins/openclaw-action-gate && pnpm install --prod && pnpm run build) && openclaw plugins enable openclaw-action-gate git clone --depth=1 https://github.com/h-mascot/agent-action-gate.git /tmp/agent-action-gate mkdir -p plugins && cp -R /tmp/agent-action-gate/plugins/openclaw-action-gate plugins/openclaw-action-gate cd plugins/openclaw-action-gate && pnpm install --prod && pnpm run build openclaw plugins enable openclaw-action-gate && cat > action-gate.json <<'JSON'
{
"scopes": {
"shared-room": { "owner_agent": "book", "mode": "enforce", "non_owner": "deny" }
}
}
JSON Configuration is what you wanted. Enforcement is what happened. The verify script is the receipt.
bash plugins/openclaw-action-gate/scripts/verify.sh --scope shared-room --non-owner ada openclaw plugins list | grep openclaw-action-gate && openclaw plugins inspect openclaw-action-gate --hooks openclaw-action-gate enforce plugins/openclaw-action-gate | before_incoming_action, before_outbound_message, after_outbound_message bash plugins/openclaw-action-gate/scripts/verify.sh --scope shared-room --non-owner ada decision=deny reason=non_owner audit=recorded bash plugins/openclaw-action-gate/scripts/verify.sh --scope shared-room --owner book --send "ack" decision=allow reason=owner audit=recorded Disable the plugin with the running runtime first, then remove the staged plugin directory. The audit store stays so you can prove the rollout happened.
openclaw plugins disable openclaw-action-gate && rm -rf plugins/openclaw-action-gate /home/henrymascot/.openclaw/plugins/openclaw-action-gate What this package is
openclaw-action-gate is the installable OpenClaw runtime plugin for the Action Gate project. The SuperAda Action Gate page documents the contract and use cases; this page documents the package you actually install. The plugin is the OpenClaw half of a two-runtime enforcement story; the Hermes half (hermes-action-gate) is exposed on this site as a Draft entry while its hard-egress wrappers are still landing.
- TypeScript pnpm workspace member that produces dist/index.js.
- Hooks before_incoming_action, before_outbound_message, and after_outbound_message.
- Reads action-gate.json from the working directory of the protected agent.
- Writes a per-decision audit record so the operator can prove what the runtime actually did.
Why it is on ClawHub
The page is the contract, the install command is the contract, and the package itself is on ClawHub as superada-plugin-openclaw-action-gate so a visitor can grab the bundle straight from this page without leaving to clone the repo. The ClawHub package is regenerated by scripts/sync-superada-to-clawhub.mjs and includes a synthesized SKILL.md because the plugin source itself ships only the TypeScript implementation, not an agent-installable SKILL.md bundle.
Operational caveats
The plugin is part of a larger enforcement story that also expects protected public sends to fail closed on the second runtime (Hermes) until the second runtime is actually enforcing. A green receipt from OpenClaw and noise from Hermes means the gate is partial. Block the second writer or extend the plugin install before claiming the scope is protected.
- Enforcement is two-runtime by design; partial installs are not enforcement.
- Hard wrappers around direct CLI send paths are out of scope for this package; use scripts/verify.sh --probe-direct-paths to see which paths are not covered.
- The action-gate.json policy is the source of truth; reload the gateway after editing it.