Zum Inhalt springen

Coding-Agenten

Ein Coding-Agent arbeitet mit dem Hub unter seinem eigenen Schlüssel, nie unter deinem. Der Hub erkennt am Schlüssel, dass ein Agent anfragt, und hält ihn unter einer festen Obergrenze, egal welche Rolle das Gerät hat.

  • Mit pbx im Agentenmodus: Der Agent ruft pbx --agent claude-code … auf, oder pbx mit PBX_AGENT=claude-code in seiner Umgebung. pbx signiert jede Anfrage mit dem Agentenschlüssel des Geräts für diese Integration (unten).
  • Über den MCP-Server von ownpaas (ownpaas-mcp) auf deinem Mac (ownpaas ist ein eigenes Produkt, noch nicht veröffentlicht): Der Agent ruft die Werkzeuge des Hubs auf (list_servers, get_status, create_twin, list_twins, reset_twin_data, delete_twin, get_evidence, request_access, list_releases). ownpaas signiert jeden Aufruf mit einem Agentenschlüssel, der für diese Agent-Integration (Claude Code, Cursor, Codex) auf diesem Gerät registriert ist. In der Konfiguration des Agenten steht kein Schlüssel.
  • Mit einem API-Schlüssel der Art agent, für Skripte und CI: höchstens read, twins:write und access:developer. Der Schlüssel wird einmal gezeigt; der Hub speichert nur einen Hash.
Terminal-Fenster
pbx --agent claude-code twin create --production shop --task fix-42
PBX_AGENT=claude-code pbx twin list
  • Der Schlüssel. Jedes Gerät hat pro Integration einen Agentenschlüssel (P-256, ohne Anwesenheit einer Person). Der Hub leitet den Prinzipal agent aus dem Schlüssel ab, nicht aus dem, was die Anfrage sagt.
  • Die erste Nutzung registriert ihn. Der erste Lauf im Agentenmodus auf einem Gerät erzeugt den Agentenschlüssel und registriert ihn beim Hub, signiert mit dem eigenen Schlüssel des Geräts: Ein presence-Gerät fragt seine Person einmal (Touch ID, eine PIN). Danach signiert der Agentenschlüssel ohne jemanden. pbx agent register claude-code tut dasselbe vorab, damit die Abfrage nicht mitten im Lauf eines Agenten kommt.
  • Ein Widerruf bleibt. Nach pbx agent revoke claude-code (oder dem Widerruf durch einen Owner) scheitern die Anfragen des Agenten mit dem Hinweis, dass eine Person den Schlüssel neu registriert. pbx registriert ihn nicht von selbst neu.
  • Kein Ausweichen auf deinen Schlüssel. Ist PBX_AGENT gesetzt, wird abgelehnt, was nur eine Person signiert, bevor etwas signiert ist: pbx open, pbx approve, das Koppeln, pbx agent register und pbx agent revoke. Setze PBX_AGENT in der Umgebung des Agenten (seinem Shell-Profil, der Konfiguration des MCP-Servers), nicht nur --agent in seinen Befehlszeilen.
  • Die Antworten. Erlaubte Anfragen enden mit 0. Anfragen über der Obergrenze enden mit 4 und der Ablehnung des Hubs. Anfragen, die eine Person freigeben muss, enden mit 5, der ID der Freigabe und der pbx approve-Zeile, die auszuführen ist; mit --output json steht die Freigabe auf stdout. Zerstörende Befehle nehmen --confirm NAME, nie --yes, damit ein Agent sie ohne Terminal aufrufen kann; der Hub entscheidet trotzdem.
  • Die Sitzung. Das Audit nennt die Integration und die Sitzung: PBX_AGENT_SESSION, sonst eine pro pbx-Lauf.

Die Grenze. Auf einem Gerät, dessen Signaturschlüssel sich ohne eine Person öffnet (passphrase-stored, tpm, tang), kann ein Prozess desselben Benutzers lesen, was pbx liest, und als das Gerät signieren. Der Agentenmodus hält einen Agenten, der sich an die Regeln hält, unter seiner Obergrenze; nur der Signaturschlüssel eines presence-Geräts hält auch einen, der es nicht tut. Die Grenze ziehen die Obergrenze und die Freigaben des Hubs, nicht der Client.

Agent
Hosts, Twins, Releases, Nachweise lesenerlaubt
Twins anlegen, zurücksetzen und löschenerlaubt
SSH und podman --remote auf einem Twinerlaubt
Einen Production- oder Staging-Host löschen, ein Release freigeben, Bedien-Login oder Admin-Zugriff in Productionfragt an; eine Person gibt frei
Admin-Zugriff auf einem Twin, Schlüssel, Geräte, Einstellungenabgelehnt
Ein Twin mit einer Kopie der Produktionsdatenfragt an; eine Person gibt frei

Eine Anfrage eines Agenten, die eine Person braucht, wartet als offen. Eine Person gibt sie von einem gekoppelten Gerät der Stufe presence frei, mit dem eingetippten Namen des Hosts: pbx approvals listet sie, pbx approve <id> signiert die Freigabe mit dem Schlüssel des Geräts. Der Hub führt die aufgezeichnete Anfrage dann einmal aus. Kein Werkzeug gibt frei, und ein Agentenschlüssel kann es nie. Das Portal des Hubs zeigt Freigaben, kann aber nicht entscheiden, weil ein Browser keinen Signaturschlüssel hält.

Jede Zeile nennt den Prinzipal (Person, Agent oder CI), das Gerät, den Schlüssel und bei einem Agenten seine Integration und Sitzung. Eine freigegebene Operation nennt, wer angefragt und wer freigegeben hat.