Skip to main content

ctrlrun-openclaw

The Python half of CTRLRun for OpenClaw: a loopback bridge that answers OpenClaw's before_tool_call from a CTRLRun policy, and records what the tool actually did.

pip install ctrlrun-openclaw
ctrlrun init
export CTRLRUN_OPENCLAW_TOKEN=$(python3 -c 'import secrets;print(secrets.token_urlsafe(32))')
ctrlrun-openclaw-bridge --agent openclaw-gateway

Then install the plugin in OpenClaw:

openclaw plugins install clawhub:@ctrlrun/openclaw

Why a bridge and not a policy file

OpenClaw already has tool-authorization plugins, and each is a decision engine: policy in, allow or deny out. This is the half after the decision.

after_tool_call is an observation hook. OpenClaw's own reference says handlers run concurrently, return values are ignored, and to use a fail-closed gate rather than assume an observation hook will reject anything on failure. So nothing in OpenClaw today separates the tool failed from we cannot tell whether it committed.

This bridge holds Control.execute open across the host's tool call, which makes OpenClaw the executor and its report the outcome. A call the host never reports on is not lost: the effect stays reserved, the state is AMBIGUOUS, and the next attempt on the same key is refused until a human runs ctrlrun resolve.

Approvals route through OpenClaw's own prompt using InterruptApprovalProvider, so the grant is written by the same path ctrlrun approve uses, never by this adapter.

Verified

OpenClaw 2026.9.4, Node 24.21.0. One real agent turn, both hooks firing:

[bridge] "POST /v1/decide"    200
[bridge] "POST /v1/outcome"   200

$ ctrlrun receipts
read  deny/denied      openclaw-gateway   # policy did not name this action
read  allow/committed  openclaw-gateway   # allowed, ran, outcome reported

The bridge binds loopback only and requires a shared secret on every request. It fronts your approval authority and refuses to start on a non-loopback interface.

Apache-2.0. Full documentation, limits and known upstream issues in the repository README.

Metadata

Release files for ctrlrun-openclaw 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ctrlrun-openclaw 0.1.1
File Size Uploaded
ctrlrun_openclaw-0.1.1.tar.gz 13.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ctrlrun-openclaw 0.1.1
File Interpreter ABI Platform
ctrlrun_openclaw-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 28.2 kB

Release files / ctrlrun_openclaw-0.1.1.tar.gz

Download URL ctrlrun_openclaw-0.1.1.tar.gz
Size 13.2 kB
Tags Source
SHA-256 checksum
How to use checksums
3501e0602964eecea898776aef07900d9b7d40a38150958e1975c3ce10472224
BLAKE2b-256 checksum
How to use checksums
0d68717c251ede95c13cc0acad2f76ec4fa743ab90488ff3a73c31360d1334eb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 15, 2026.

Transparency log

Release files / ctrlrun_openclaw-0.1.1-py3-none-any.whl

Download URL ctrlrun_openclaw-0.1.1-py3-none-any.whl
Size 15.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7a17cce81f4823482015f971fbf8956e0fa7a50c93ac02252f31eeb97106e349
BLAKE2b-256 checksum
How to use checksums
b2a56063e658c9bfaedf0a69a3d59c520ccae599109fc006b1245fa338db89a1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 15, 2026.

Transparency log

Release history Release notifications | RSS feed

0.1.2

2 release files

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page