Zum Inhalt springen
Farbschema wählenSprache wählen

Agenten-Aktionen freigeben oder ablehnen

Wenn ein autonomer Agent an einen Punkt gelangt, den er ohne einen Menschen nicht passieren sollte, pausiert er und fragt eine Freigabe an. SupaCloud zeigt diese eine ausstehende Entscheidung als interaktive Freigabe an, die du von jeder Steuerungsoberfläche aus beantworten kannst – dem Web-Terminal, Telegram oder Discord. Der Agent bleibt genau auf dieser Entscheidung blockiert, bis du antwortest (oder seine Timeout-Richtlinie sie für dich auflöst).

Es gibt vier Arten von Freigaben:

Art Was es ist Beispiel
Tool Ein gefährlicher Tool-Aufruf, den der Agent ausführen möchte Ein Bash-Befehl, ein Deploy, eine Migration
Frage Eine offene Frage, die der Agent vor dem Fortfahren stellt „Welche Umgebung soll ich ansteuern?”
Visuell Eine Vorher/Nachher-Screenshot-Abnahme Eine UI-Änderung, aufgenommen zur menschlichen Prüfung
Modellklassen-Wechsel Die angeheftete Modellklasse ist erschöpft und SupaCloud möchte auf eine schwächere wechseln „Premium-Kontingent erschöpft – auf der Standardklasse weitermachen?”

Zwei davon kann SupaCloud selbst auslösen, nicht der Agent: einen Sicherheits-Halt (ein Tool-Gate, das SupaCloud erzwingt, wenn der Agent nach etwas aus dem Gefahren-Set greift – der Lauf wird unterbrochen und geparkt) und den obigen Modellklassen-Wechsel. Beide erreichen deinen Chat jetzt mit derselben Karte und denselben Buttons; vorher waren sie nur in der Web-Oberfläche sichtbar.

Der Posteingang — ein Feed über alle Quellen, die auf einen Menschen warten können, neueste zuerst, darüber die Quellen-Filter-Chips.Der Posteingang — ein Feed über alle Quellen, die auf einen Menschen warten können, neueste zuerst, darüber die Quellen-Filter-Chips.

Im Web-Terminal unter /cli listest du jeden pausierten Agenten im aktiven Workspace auf und entscheidest einen anhand seiner kurzen ID.

# Die im Workspace wartenden interaktiven Freigaben auflisten
tool-approvals
# Eine anhand ihrer (kurzen) Freigabe-ID freigeben oder ablehnen; eine
# optionale Notiz wird dem Agenten als deine Begründung / Antwort übergeben
approve-tool <id> [note]
reject-tool <id> [note]

Die ID wird per Präfix aufgelöst – genauso wie Task-IDs: Ein eindeutiges Präfix entscheidet das Gate; ein mehrdeutiges oder unbekanntes Präfix wird gemeldet, statt geraten.

Du kannst auch interaktive und Workflow-Freigaben zusammen auflisten. Der Filter ist ein einfaches Wort hinter dem Befehl – auf jeder Oberfläche dasselbe:

approvals # beide Quellen, jeweils unter eigener Überschrift
approvals all # dasselbe, nur ausdrücklich
approvals tool # nur die interaktiven Tool-/Frage-/Visuell-/Modellklassen-Gates
approvals workflow # nur Workflow-Human-Gates

Der Befehl ohne Argument beantwortet bereits die ganze Frage – all musst du also nie tippen. Ein Wort, das der Befehl nicht kennt (approvals wokflow), wird als unbekannt gemeldet, statt stillschweigend nur die Hälfte der Gates zu listen. Das Web-Terminal akzeptiert zusätzlich die ältere Schreibweise --filter=<wort>, approvals --filter=tool ist also derselbe Befehl wie approvals tool.

Wenn ein dir gehörender Task pausiert, postet SupaCloud eine Freigabe-Karte in deinen verknüpften Chat – eine Nachricht mit der Art, dem Task-Titel, dem maskierten Detail, etwaigen Vorher/Nachher-Bildvorschauen, einem direkten Link zum Task und Inline-Buttons Freigeben / Ablehnen. Tippe auf einen Button, um zu entscheiden – du tippst nie eine ID ab.

Bei einer Tool-Freigabe führt die Karte mit der Absicht des Agenten – der Beschreibung des Tool-Aufrufs selbst oder dem Sicherheitsgrund, der den Lauf angehalten hat – und zeigt dann den eigentlichen Befehl in Monospace. Ein Shell-Befehl, dessen sämtliche Teile nur lesen, trägt zur Orientierung einen kleinen Hinweis liest nur; die rohe Aufruf-Payload bleibt in einem eingeklappten Zitat einen Tipp entfernt. Nach deiner Entscheidung bleibt die Anfrage in der Karte sichtbar und dein Urteil wird darunter angefügt – die Chat-Historie sagt also weiterhin, was erlaubt oder abgelehnt wurde.

Fragt der Agent etwas, das keine Freigabe ist – eine offene Rückfrage mitten im Lauf –, enthält der Push die Frage selbst und einen Antworten-Button. Drücke ihn und schreibe einfach deine Antwort: Sie wird genau diesem Task zugestellt, weil der Button den Task-Bezug trägt. /intervene <id> <message> funktioniert weiterhin für Skripte und Automationen, ist aber nicht mehr der einzige Weg vom Handy aus.

  • Ein pausierter Task pusht die Karte automatisch in den mit dem Task-Eigentümer verknüpften Chat. Tippe Freigeben oder Ablehnen; der Bot antwortet mit einer Bestätigung.

  • Um jederzeit zu prüfen, was wartet:

    /approvals # sowohl Human-Gate- als auch interaktive Freigaben
    /approvals all # dasselbe, nur ausdrücklich
    /approvals tool # nur die interaktiven Tool-/Frage-/Visuell-/Modellklassen-Gates
    /approvals workflow # nur Workflow-Human-Gates

Eine visuelle Freigabe ist eine Abnahme einer UI-Änderung. Die Karte enthält:

  • Die Vorher/Nachher-Screenshots als signierte, zeitlich begrenzte Bild-Links (Telegram zeigt eine Vorschau, Discord bettet sie ein; im Web-Terminal werden sie als URLs ausgegeben).
  • Das Maschinen-Urteil, sofern eines lief – PASS, FAIL oder nicht ausgeführt – menschliche Prüfung – gefolgt von den Gründen, die der Prüfer angab, damit du siehst, warum die automatische Prüfung die Änderung als bestanden oder durchgefallen einschätzt, bevor du entscheidest.

Lassen sich die Screenshot-Links nicht erzeugen (das Capture-Serve-Geheimnis ist nicht gesetzt), reduziert sich die Karte auf reinen Text: Sie listet weiterhin auf, was aufgenommen wurde, sowie das Urteil, sodass du stets entscheiden kannst.

Jede Freigabe trägt eine Timeout-Richtlinie, die festlegt, was geschieht, wenn kein Mensch antwortet:

Richtlinie Verhalten Verwendet für
Hold Blockiert für immer, bis ein Mensch entscheidet – nie automatisch aufgelöst Deploys, Migrationen und jede Aktion, die auf einen Menschen warten muss
Deny Nach einer Frist automatisch abgelehnt, sodass der Agent ohne die Aktion fortfährt Optionale Fragen und risikoärmere Gates

Die deny-Fristen sind je nach Art unterschiedlich: Ein Tool wartet 5 Minuten, eine Frage 30 Minuten und eine visuelle Abnahme 1 Stunde. Läuft ein deny-Gate ab, wird der Agent mit einer Ablehnung entsperrt und fährt fort; ein hold-Gate wartet einfach.

Wenn sich ein Sicherheits-Halt nicht fortsetzen lässt

Abschnitt betitelt „Wenn sich ein Sicherheits-Halt nicht fortsetzen lässt“

Ein Sicherheits-Halt hindert den Agenten immer daran, die markierte Aktion auszuführen. Ob die Entscheidung den Lauf aber fortsetzen kann, hängt vom Agenten ab – und bei zweien davon zusätzlich davon, wie genau dieser Lauf gestartet wurde. Die Karte nennt den Fall in eckigen Klammern hinter dem Gefahrengrund. Lies ihn, bevor du entscheidest:

Was die Karte ergänzt Was tatsächlich passiert ist Dein nächster Schritt
nichts Der Agent pausiert und wartet auf dich Freigeben oder ablehnen – der Lauf geht direkt weiter
not resumable … restart the task Der Agent wurde gestoppt, nicht pausiert Gate entscheiden, um dein Urteil festzuhalten, dann die Aufgabe neu starten
not enforced … the run was NOT stopped Die Unterbrechung erreichte nichts; der Lauf läuft weiter Aufgabe abbrechen, wenn sie stoppen muss
soft hold … deliberately NOT stopped SupaCloud hat gefragt, ohne zu stoppen – der einzig verfügbare Stopp hätte einen gesunden Lauf getötet. Die Chat-Karte heißt Agent läuft weiter (nicht pausiert) und bietet nur Erlauben / Ablehnen – keine Immer-Regeln, weil es nichts zu erlauben gibt Erlauben quittiert den Halt und ändert sonst nichts; Ablehnen bricht die Aufgabe ab

Eine Karte, deren Gate anderswo entschieden wurde – im Web-Posteingang, auf der anderen Chat-Oberfläche, vom Koordinator, oder weil der Agent endete, bevor jemand entschied – wird an Ort und Stelle bearbeitet: die Knöpfe verschwinden, und eine Zeile darunter sagt, was passiert ist (anderswo entschieden, gilt nicht mehr, abgelaufen). Eine Karte, die noch Knöpfe zeigt, ist ein Gate, das noch offen ist.

Zwei Agenten antworten von Lauf zu Lauf unterschiedlich; der Agentenname allein ist deshalb kein verlässlicher Hinweis:

  • Gemini pausiert bei einem Lauf mit API-Schlüssel und wird gestoppt, wenn er sich per Google OAuth anmeldet – ein OAuth-Lauf läuft über das Kommandozeilenwerkzeug agy, das die Unterbrechung nur beenden kann.
  • opencode pausiert, wenn für den Lauf interaktive Freigaben scharf geschaltet sind, und wird andernfalls gestoppt.

Kann SupaCloud nicht feststellen, welchen der beiden Wege ein Lauf genommen hat, sagt die Karte das (cannot confirm …) und nimmt an, der Lauf sei gestoppt worden. Eine Fortsetzung wird nie versprochen, ohne sie geprüft zu haben – ein Halt mit restart the task kann also gelegentlich ein Lauf sein, der sich tatsächlich hätte fortsetzen lassen, nie umgekehrt.