Human-in-the-loop für OpenClaw
Menschliche Freigaben für OpenClaw-Tool-Aufrufe, auf dem Handy.
Ein before_tool_call-Hook hält riskante OpenClaw-Tools an, bis dein Nutzer sie auf dem Handy freigibt.
Was OpenClaw mitbringt
Der before_tool_call-Hook
Ein OpenClaw-Plugin kann einen before_tool_call-Hook registrieren. Er läuft vor dem Tool. Die Rückgabe { block: true, blockReason } stoppt den Aufruf und erklärt dem Modell den Grund. Das ist der richtige Ort für eine Freigabe: Sie sperrt die Aktion, statt sie erst hinterher zu melden.
Wo es nicht weitergeht
- Der Hook kann keine Person erreichen, die nicht am Gateway sitzt.
- Er bietet keine Wartezeit, die während der Entscheidung einen Neustart übersteht.
- Er speichert nicht, was erlaubt oder gesperrt wurde oder wer entschieden hat.
Die Lösung
Pushary holt die Antwort deines Nutzers ein.
before_tool_call kann ein Tool stoppen. decisions.ask() darin schickt die Frage auf das Handy deines Nutzers, wartet auf Freigabe oder Ablehnung und speichert die Antwort. Der Hook sperrt bei allem außer einem Ja.
Das Plugin sichert drei Tools ab: deploy_service, delete_record und send_email. Für sie ruft der Hook decisions.ask() auf und gibt { block: true } zurück, solange dein Nutzer nicht zugestimmt hat. Alle anderen Aufrufe überspringen den Hook und laufen unverändert. Jede Antwort wird gespeichert.
npm i @pushary/serverimport { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry"
import { createPusharyServer } from "@pushary/server"
const pushary = createPusharyServer({ apiKey: process.env.PUSHARY_API_KEY! })
const GATED = new Set(["deploy_service", "delete_record", "send_email"])
export default definePluginEntry({
id: "pushary-approvals",
name: "Pushary approvals",
register(api) {
api.on("before_tool_call", async (event) => {
if (!GATED.has(event.toolName)) return
const d = await pushary.decisions
.ask({ question: `Allow ${event.toolName}?`, externalId: "user_123", type: "confirm" })
.catch(() => ({ approved: false }))
if (!d.approved) {
return { block: true, blockReason: "A person did not approve this action." }
}
})
},
})So funktioniert es
Von der Installation zur ersten Antwort
Verbinde deinen Nutzer einmal. Sichere den riskanten Schritt mit einer Freigabe ab. Pushary schickt die Frage, wartet auf die Antwort und speichert sie.
- 01
Installieren und Schlüssel setzen
Führe npm i @pushary/server im Workspace deines Plugins aus und setze PUSHARY_API_KEY.
- 02
Nutzer einmal verbinden
Ein SDK-Aufruf liefert einen Verbindungslink. Die freigebende Person öffnet ihn mit der kostenlosen Pushary-App auf ihrem Handy. Kein Konto, keine Zahlung.
- 03
Hook registrieren
Registriere im Einstiegspunkt deines Plugins einen before_tool_call-Hook, der decisions.ask() für die abzusichernden Tool-Namen aufruft.
- 04
Bei allem außer einem Ja sperren
Gib { block: true } mit einem blockReason zurück, wenn die Antwort keine ausdrückliche Freigabe ist. Ein Nein oder eine Zeitüberschreitung stoppen so den Aufruf.
Eine Frage kann ein Ja oder Nein verlangen, eine Auswahl aus einer Liste oder eine Texteingabe. Jede Antwort wird gespeichert.
Vor der Veröffentlichung
Stolperfallen bei OpenClaw
- Frage im Hook, nicht in einem Tool
- Ein Tool, dessen Aufruf das Modell selbst wählt, ist optional. Ein Prompt mit „erst fragen“ ist keine Sperre. before_tool_call läuft bei jedem Aufruf, ob das Modell will oder nicht. Die Freigabe gehört deshalb dorthin.
Der Partner-Tarif
Dein Agent fragt deine Nutzer, nicht nur dich
Stelle deinen Nutzern deinen Agenten bereit. Jeder gibt dessen riskante Aktionen vom eigenen Handy aus frei, unter deiner Marke.
Deine Nutzer brauchen kein Pushary-Konto und zahlen nichts an uns.
Deine Nutzer antworten auf ihren eigenen Handys
Verbinde jeden Nutzer einmal über einen Link. Er installiert die kostenlose Pushary-App und antwortet vom Sperrbildschirm aus, ohne eigenes Konto.
Keine Antwort heißt Nein
Führe die Aktion nur nach einer ausdrücklichen Freigabe aus. Eine wartende, abgelaufene oder abgebrochene Anfrage zählt nie als Ja. Pushary behält jede Anfrage, damit dein Code sie nach einem Neustart wieder aufnehmen kann.
Erreicht sie auf dem Handy
Die App kommt zuerst, denn nur sie zeigt „Genehmigen“ und „Ablehnen“ auf dem Sperrbildschirm. Browser-Benachrichtigungen folgen danach. Du musst kein Zustellsystem bauen.
Jede Antwort gespeichert
Zu jeder Antwort wird gespeichert, wer wann geantwortet hat. Du kannst sie durchsuchen und exportieren. Mit einer Callback-URL geht jede Antwort außerdem als signierter Webhook an deinen Server.
FAQ
Fragen und Antworten
Gibt es ein @pushary/openclaw-Paket?
Wie sperre ich einen Tool-Aufruf?
Was passiert bei einer Zeitüberschreitung?
Kann ich nur bestimmte Tools absichern?
Wer gibt den Aufruf frei?
Lass deinen OpenClaw-Agenten fragen, bevor er handelt.
Verbinde einen Nutzer einmal, frage mit einem Aufruf und führe die Aktion nur bei einem Ja aus. Jede Antwort wird gespeichert.
Start freePartner-Tarif, $99 im Monat. Deine Nutzer brauchen kein Pushary-Konto und zahlen nichts an uns.