Lokale Aktionskontrolle für KI-Coding-Workflows: Wo sie passt
Lokale Aktionskontrolle hilft KI-Coding-Agenten zu handeln, ohne Secrets offenzulegen. Erfahre, wann Genehmigungen durch Entwickler passen und wann serverseitige Kontrollen entscheiden müssen.

Lokale Aktionskontrolle passt in einen KI-Coding-Workflow, wenn ein Entwickler den Rechner allein besitzt, anwesend genug bleibt, um einen Lauf zu autorisieren, und ein Agent außerhalb des Repositorys handeln soll, ohne die zugrunde liegenden Secrets zu erhalten. Sie ist eine gute Lösung für ein eng umrissenes, häufiges Problem: Ein Agent kann Code in einem Arbeitsbereich sicher genug bearbeiten, muss aber zusätzlich eine API abfragen, ein privates Artefakt abrufen oder einen Befehl über SSH ausführen.
Sie ist keine gute Lösung, wenn Teams sie zur Autorisierung ganzer Flotten aufwerten. Eine Genehmigung auf einem Mac kann feststellen, dass ein bestimmter lokaler Prozess mit einem Zugangsdaten handeln darf. Sie kann einem Produktionsdienst jedoch nicht mitteilen, welcher Mandant, welche Umgebung, welches Änderungsfenster oder welche Geschäftsregel die daraus entstehende Anfrage zulassen soll. Diese Entscheidungen gehören dorthin, wo die Ressource liegt.
Die sinnvolle Grenze ist klar: Lokale Kontrolle schützt Zugangsdaten und stellt am Entwicklerrechner die Absicht eines Menschen wieder her. Serverseitige Kontrolle schützt gemeinsam genutzte Ressourcen und funktioniert weiter, wenn niemand am Rechner sitzt. Probleme entstehen, wenn eine Seite die Aufgabe der anderen übernehmen soll.
Lokale Kontrolle gehört zu einem Ausführungspunkt im Besitz einer Person
Lokale Aktionskontrolle ist sinnvoll, wenn der Rechner, auf dem der Agent gestartet wird, einen klaren Besitzer hat, der die Arbeit erkennt und sie unterbrechen kann. Das bedeutet meist einen Entwickler-Mac mit einer interaktiven Coding-Sitzung, nicht einen unbeaufsichtigten Build-Worker mit einem freundlichen Hostnamen.
Die Frage nach dem Besitz klingt offensichtlich, bis ein Team betrachtet, wie die Arbeit tatsächlich abläuft. Ein Laptop kann persönlich zugewiesen sein, aber regelmäßig per Remote Desktop genutzt werden. Auf einem gemeinsam genutzten Labor-Mac können im Laufe einer Woche mehrere Ingenieure angemeldet sein. Ein verwalteter Build-Host kann unter dem Konto eines Entwicklers laufen, aber von einem Pull Request ausgelöste Jobs ausführen. Keine dieser Tatsachen allein schafft eine echte menschliche Kontrolle.
Stelle dir vier konkrete Fragen, bevor du lokale Genehmigungen einführst:
- Wer kann den Rechner physisch entsperren und eine Anfrage genehmigen?
- Welche ausführbare Datei startet den Agenten, und kann der Besitzer ihre Signaturautorität erkennen?
- Bleibt die Arbeit des Agenten innerhalb einer interaktiven Sitzung, oder kann sie fortgesetzt werden, wenn die Person den Rechner verlässt?
- Wenn der Rechner kompromittiert ist, was begrenzt die Reichweite der Zugangsdaten beim entfernten Dienst?
Die ersten beiden Fragen klären, ob die Genehmigung einer konkreten Person gilt. Die letzten beiden zeigen, ob ihr möglicher Schaden sinnvoll begrenzt ist. Wenn ein Entwickler für einen Prozess auf «Genehmigen» klickt, der über Nacht weiterlaufen und in jede Umgebung ausrollen kann, hat dieser Klick deutlich mehr Autorität, als die Person wahrscheinlich beabsichtigt hat.
Ein lokales Gateway sollte das Secret verwahren und die ausgehende Aktion selbst ausführen. Übergibst du einem Agenten ein Token über eine Umgebungsvariable, eine Konfigurationsdatei oder eine Tool-Antwort, wird die lokale Schranke weitgehend zur Formsache. Der Agent kann das Token in ein Transkript ausgeben, in einen Patch schreiben, in einer Shell-History ablegen oder an ein anderes Tool senden. Sobald ein Zugangsdaten in den Kontext eines Agenten gelangt ist, lässt es sich nicht zuverlässig zurückholen.
Darum reicht eine proxyähnliche Anordnung allein nicht aus. Ein HTTP-Proxy kann Datenverkehr weiterleiten, aber die Weiterleitung beweist nicht, dass Secrets niemals in den Client-Prozess gelangen. Das Design muss sicherstellen, dass der Agent eine Aktion anfordert, die lokale Komponente das Zugangsdaten einfügt und der Agent nur das Ergebnis vom entfernten Dienst erhält.
Rechnerbesitz ist mehr als ein Anmeldename
Der Name eines Entwicklerkontos beweist nicht, dass der genehmigte Prozess tatsächlich die Arbeit ausführt. Unter macOS kann ein Coding-Agent von einem Terminal, einer Editor-Erweiterung, einem Hilfsprozess oder einem im Repository gespeicherten Skript gestartet werden. Diese Ursprünge haben sehr unterschiedliche Vertrauensniveaus.
Untersuche zunächst während eines harmlosen Laufs den tatsächlichen Prozessbaum. Dieser Befehl listet Prozess-IDs, Elternprozesse, Benutzer, Laufzeit und Befehlszeilen auf:
ps -axo pid,ppid,user,etime,command | grep -i '[a]gent'
Die Ausgabe sollte eine Kette zeigen, die du erkennst. Ein interaktives Terminal kann zum Beispiel als Elternprozess des genehmigten Agent-Prozesses erscheinen. Ein Shell-Skript aus einem nicht vertrauenswürdigen Repository, ein Hintergrund-Starteintrag oder ein unbekannter Helfer sollte deine Entscheidung ändern. Genehmige einen Prozess nicht allein deshalb, weil seine Befehlszeile den Namen eines erwarteten Tools enthält.
Untersuche anschließend die ausführbare Datei, statt ihrem Dateinamen zu vertrauen:
codesign -dv --verbose=4 /path/to/executable 2>&1 | \
grep -E '^(Identifier|TeamIdentifier|Authority)='
Eine signierte Binärdatei kann weiterhin Fehler enthalten, aber die Signaturautorität gibt dem Betreiber etwas Beständiges, das er erkennen kann. Ein bloßer Pfad in einem beschreibbaren Projektverzeichnis bietet das nicht. Eine Sitzungsfreigabe, die zuerst die Signaturautorität anzeigt, ist viel besser als ein Dialog mit dem Text «Agent möchte Zugriff». So kann die Person eine kopierte Binärdatei, einen lokalen Wrapper oder ein unerwartetes Update ablehnen, bevor eine Aktion mit Zugangsdaten ausgeführt wird.
Darum verdienen auch Shell-Aliase und Wrapper-Skripte Aufmerksamkeit. Sie sind bei der Arbeit nützlich, aber ein Alias kann etwas anderes starten als die ausführbare Datei, die die Person zu genehmigen glaubt. Halte Startbefehle für das Aktionsgateway außerhalb von Repositories, in die der Agent schreiben kann. Wenn ein Agent das Skript ändern kann, das seinen eigenen Zugriffsweg definiert, drückt die Schranke nicht mehr die Entscheidung eines Betreibers aus.
Die Model Context Protocol-Spezifikation beschreibt, wie ein MCP-Client und -Server Tool-Aufrufe austauschen. Sie stellt nicht fest, dass der Aufrufer eines Tools ein genehmigter lokaler Prozess ist. MCP-Kompatibilität beantwortet eine Frage zur Schnittstelle. Prozessidentität, Verwahrung von Zugangsdaten und Autorisierung bleiben getrennte Aufgaben.
Sitzungsfreigaben funktionieren, wenn ein Lauf eine natürliche Grenze hat
Eine Genehmigung pro Sitzung ist ein praktischer Standard für einen interaktiven Coding-Lauf. Sie fragt einmal beim Start eines neuen Agent-Prozesses und hält sich danach zurück. So entfällt ein Bestätigungsdialog für jeden harmlosen Lesezugriff, während ein Punkt erhalten bleibt, an dem die Person prüfen kann, wer die Anfrage stellt.
Die Grenze muss an eine tatsächliche Prozesslebensdauer gebunden sein, nicht an eine vage Vorstellung wie «die Arbeit heute Nachmittag». Eine Sitzung endet, wenn der Prozess beendet wird. Diese Regel lässt sich leicht erklären, widerrufen und nur schwer vom Agenten umdeuten. Startet der Prozess neu, fragt er erneut. Widerruft eine Person die Freigabe, schlagen künftige Aufrufe fehl, statt das Vertrauen eines früheren Klicks zu übernehmen.
Genehmigungsmüdigkeit zeigt, dass die Grenze falsch gewählt ist. Wenn ein Entwickler jedes Mal eine Anfrage sieht, sobald ein Agent einen Issue-Tracker prüft, ein Paket abruft oder eine Staging-API liest, wird er automatisch genehmigen. Wiederholte Warnungen führen nicht zu besseren Entscheidungen. Sie bringen Menschen dazu, Fenster wegzuklicken, damit die Arbeit weitergeht.
Eine Sitzungsfreigabe hat einen engeren Zweck als eine Policy-Engine. Sie sagt: «Ich erkenne diesen lokalen Prozess und erlaube ihm, den zulässigen Aktionsweg zu verwenden, solange er läuft.» Sie sollte nicht versuchen zu ermitteln, ob eine SQL-Abfrage sicher ist, ob der Titel eines Tickets legitim klingt oder ob der aktuelle Branch Produktionszugriff verdient. Das sind entfernte Autorisierungsentscheidungen oder Workflow-Regeln. Natürliche Sprache ist ein miserabler Ort, um sie zu speichern.
Selbst eine interaktive Sitzung sollte nicht in jedem Fall eine pauschale Freigabe erhalten. Ein Agent, der beliebige lokale Arbeitsbereiche öffnet, Aufgaben aus einem Chat annimmt oder Plug-ins aus ungeprüften Repositories ausführt, hat eine größere Eingabeoberfläche als eine eng begrenzte Repository-Sitzung. In diesem Fall solltest du entweder die für den Lauf verfügbaren Aktionen reduzieren oder für die konkrete riskante Zugangsdaten eine Genehmigung verlangen.
Auch Genehmigungsdialoge brauchen ein verlässliches Fehlerverhalten. Ist der Tresor gesperrt, muss jede Aktion fehlschlagen. Kann die Genehmigungsoberfläche nicht erscheinen, weil der Mac gesperrt ist oder schläft, muss jede Aktion fehlschlagen. Ein versteckter Fallback, der Anfragen bei einem Fehler der Oberfläche weiterlaufen lässt, macht aus einer menschlichen Schranke bloße Dekoration.
Genehmigung pro Aufruf ist für Aktionen mit teuren Folgen gedacht
Eine Genehmigung pro Aufruf passt zu Zugangsdaten, deren Verwendung eine Produktionsänderung auslösen, Geld ausgeben, Daten löschen oder eine Grenze überschreiten kann, die ein Entwickler jedes Mal bewusst prüfen sollte. Sie passt nicht zu jedem Zugangsdaten, dessen Name einschüchternd klingt.
Ordne die Aktion nach ihren Folgen ein, nicht nach dem Protokoll. Ein HTTP-POST kann lediglich einen wegwerfbaren Vorschau-Datensatz anlegen. Ein SSH-Befehl kann nur ein Bereitstellungsprotokoll lesen. Eine GET-Anfrage kann einen vollständigen Kundendatensatz exportieren. Methode und Transport entscheiden nicht über den Genehmigungsmodus.
Verwende eine Genehmigung pro Aufruf, wenn eine oder mehrere dieser Eigenschaften zutreffen:
- Der entfernte Dienst kann das Ergebnis nicht zuverlässig rückgängig machen.
- Das Zugangsdaten kann eine gemeinsam genutzte Produktionsressource beeinflussen.
- Die Anfrage kann sensible Daten an ein unerwartetes Ziel übertragen.
- Die Aktion kommt selten genug vor, dass eine bewusste Bestätigung nicht zur Routine wird.
Der vierte Punkt ist wichtig. Eine Bestätigung pro Aufruf für eine häufige Aktion führt zu demselben mechanischen Klicken wie eine überaktive Sitzungsabfrage. Teile Zugangsdaten, wenn möglich. Gib der routinemäßigen Entwicklungsarbeit ein Zugangsdaten mit Zugriff nur auf Entwicklungsressourcen und reserviere das produktionsfähige Zugangsdaten für die wenigen Aktionen, bei denen eine Unterbrechung gerechtfertigt ist.
Ein Agent darf niemals selbst entscheiden, für welche seiner Aufrufe eine Bestätigung nötig ist. Kann der Agent eine Anfrage als «nur lesen» kennzeichnen oder die Zugangsdatenklasse selbst auswählen, kann eine Prompt-Injection oder ein einfacher Implementierungsfehler ihn auf den leichteren Weg lenken. Die Person, der das Konto gehört, muss die Genehmigungsanforderung außerhalb des Arbeitsbereichs des Agenten festlegen.
Gestalte die Bestätigung so lesbar, dass sie eine echte Entscheidung ermöglicht. Eine Person braucht den Namen oder Zweck des Zugangsdaten, das Ziel, die Anfragemethode oder Befehlsform sowie die Identität des Prozesses, der den Aufruf gestartet hat. Die Anzeige vollständiger Request-Bodies kann Secrets offenlegen oder die Person überfordern. Nur «Aktion genehmigen?» zu zeigen, liefert keinen hilfreichen Kontext. Eine gute Bestätigung zeigt weniger, informiert den Betreiber aber ausreichend, um einen unerwarteten Aufruf abzulehnen.
Secrets lokal zu halten löst ein Problem, nicht alle
Ein lokaler Tresor verhindert, dass der Agent API-Schlüssel und private SSH-Schlüssel im Klartext hält. Das verringert die Gefahr versehentlicher Offenlegung über Prompts, Transkripte, Tool-Protokolle, kopierte Dateien und vom Agenten geschriebenen Code deutlich. Außerdem kann der Betreiber einen laufenden Prozess widerrufen, ohne das Zugangsdaten sofort austauschen zu müssen.
Er ändert jedoch nicht, was das entfernte Zugangsdaten tun darf. Kann ein API-Token jedes Projekt löschen, akzeptiert der Dienst eine Löschanfrage auch nach einer lokalen Genehmigung. Hat ein SSH-Konto weitreichende sudo-Rechte, macht der Schutz des privaten Schlüssels dieses Konto nicht zu einer eng begrenzten Bereitstellungsidentität. Die geringsten Rechte auf der entfernten Seite bestimmen weiterhin den maximalen Schaden.
Halte zwei Unterscheidungen klar:
- Die Verwahrung von Zugangsdaten klärt, ob der Agent ein Secret erhalten oder reproduzieren kann. Ein lokaler Tresor kann diese Frage gut beantworten.
- Die Ressourcenautorisierung klärt, ob der Dienst eine Aktion unter den aktuellen Bedingungen akzeptieren sollte. Diese Frage müssen die API, der Host, der Identitätsanbieter oder das Bereitstellungssystem beantworten.
Teams vermischen diese Themen oft, weil beide auftauchen, wenn ein Agent eine API aufruft. Die Folge ist vorhersehbar: Sie installieren einen lokalen Secret-Speicher und lassen dahinter ein langlebiges Administrator-Token liegen. Das Token wird zwar nicht mehr so leicht offengelegt, aber der Aktionsweg bleibt viel zu weit gefasst.
Bei SSH wird der Unterschied besonders deutlich. Der lokale Rechner kann den privaten Schlüssel schützen, aber der Host entscheidet, welche Befehle das Konto des öffentlichen Schlüssels ausführen darf. Erstelle, wo möglich, getrennte Konten oder Einschränkungen mit erzwungenen Befehlen für Automatisierung. Begrenze den Hostzugriff. Verwende nicht den persönlichen Administratorschlüssel eines Ingenieurs als allgemeinen Schlüssel für den Agenten. Persönliche Schlüssel sammeln mit der Zeit Ausnahmen, und genau diese Ausnahmen sollte ein autonomer Prozess nicht erben.
Sallyport verwendet dieses lokale Modell, indem API- und SSH-Zugangsdaten in einem verschlüsselten App-Tresor aufbewahrt werden und die HTTP- oder SSH-Aktion ausgeführt wird, ohne das Secret an den Agenten weiterzugeben. Diese Eigenschaft hilft auf einem Entwicklerrechner, aber Teams benötigen weiterhin eng begrenzte Zugangsdaten und serverseitige Berechtigungen.
Prüfe den Aktionsweg, bevor du ihm vertraust
Teste ein Aktionsgateway mit einem harmlosen Endpunkt und einem temporären Zugangsdaten, bevor du es mit einer Produktionsfunktion verbindest. Der Test muss drei Dinge zeigen: Der Agent hat das Secret nicht erhalten, das Gateway hat den Aufruf aufgezeichnet und der entfernte Dienst hat die erwartete Identität gesehen.
Erstelle ein temporäres HTTP-Zugangsdaten, das einen nicht sensiblen Endpunkt aufrufen kann, etwa eine Testressource, die die Identität des Aufrufers zurückgibt. Bitte den Agenten, genau diese eine Aktion auszuführen. Prüfe sein Transkript und das Tool-Ergebnis auf das wörtliche Token und auf tokenähnliche Zeichenfolgen. Der Agent sollte den Antworttext oder einen redigierten Fehler erhalten, niemals den Header-Wert, mit dem die Anfrage authentifiziert wurde.
Teste anschließend absichtlich eine Ablehnung. Sperre den lokalen Tresor und wiederhole die Aktion. Beende den genehmigten Agent-Prozess und starte einen neuen. Widerrufe die laufende Sitzung, falls das Gateway dies unterstützt, und versuche den Aufruf anschließend aus dem ursprünglichen Prozess erneut. Jeder Versuch sollte an der lokalen Grenze fehlschlagen. Wenn Aufrufe weiterhin funktionieren, ermittle, ob ein anderer Prozess das Zugangsdaten behalten hat, eine Umgebungsvariable das Gateway umgeht oder der entfernte Dienst einen anderen zwischengespeicherten Autorisierungsweg besitzt.
Ein nützlicher Prüfdatensatz braucht genügend Informationen, um ein Ereignis zu rekonstruieren, ohne das Secret selbst zu speichern. Bei einer HTTP-Aktion solltest du Zeitstempel, Prozess- oder Sitzungsidentität, Zugangsdatenbezeichnung, Ziel, Methode, Ergebnisstatus und, falls der entfernte Dienst eine bereitstellt, eine Anfrage-ID aufzeichnen. Bei SSH solltest du Ziel, Kontobezeichnung, Befehlsausgang und eine Darstellung des Befehls festhalten, die zu deinen Regeln für sensible Daten passt. Protokolliere keine Bearer-Werte, privaten Schlüssel oder vollständigen sensiblen Payloads, nur damit die Prüfspur vollständig wirkt.
Hash-Verkettung hilft, eine nachträglich umgeschriebene lokale Historie zu erkennen, beweist aber nicht, dass die ursprüngliche Aktion sinnvoll war. Bewahre das Protokoll des Gateways zusammen mit dem Prüfprotokoll des empfangenden Dienstes auf. Stimmen sie nicht überein, behandle das als Untersuchungsfall und erkläre nicht automatisch eine der Quellen für korrekt.
Sallyport erstellt Sitzungs- und Aktivitätsjournale aus einem verschlüsselten, Hash-verketteten Prüfprotokoll. Mit sp audit verify lässt sich diese Kette offline ohne Tresorschlüssel prüfen. Führe die Prüfung im Rahmen einer Vorfallanalyse oder einer Übergabe vor einem Release aus, aber verwechsle die Integritätsprüfung nicht mit Autorisierung.
Serverseitige Kontrollen übernehmen, wenn Menschen fehlen oder Ressourcen gemeinsam genutzt werden
Serverseitige Kontrollen sind erforderlich, wenn eine Aktion ohne einen bestimmten Entwickler fortgesetzt werden muss, der sie genehmigt. Dazu gehören CI-Jobs, geplante Bereinigungen, serverseitig gehostete Agenten, gemeinsam genutzte Runner und Bereitstellungs-Worker. Ein lokaler Mac kann nicht die letzte Instanz für Arbeit sein, die den Akku, eine Reise, den Ruhezustand oder das Ausscheiden einer Person aus dem Unternehmen überstehen muss.
Verlege die Autorisierungsentscheidung nahe an die geschützte Ressource, wenn eine dieser Bedingungen zutrifft:
- Mehrere Personen oder Systeme können denselben Workflow auslösen.
- Das Ziel ist die Produktion, Kundendaten, eine finanzielle Aktivität oder ein reguliertes System.
- Ein Agent läuft auf einer Infrastruktur und nicht auf dem interaktiven Rechner einer Person.
- Der Dienst muss Mandantengrenzen, Änderungsfenster, Umgebungsregeln oder Funktionstrennung durchsetzen.
- Der Workflow benötigt hohe Verfügbarkeit, ohne dass eine Person einen Dialog genehmigen muss.
Verwende in diesen Fällen eine Workload-Identität mit engen Berechtigungen, eine kurze Gültigkeit, sofern das Identitätssystem dies unterstützt, und serverseitige Prüfprotokolle. Erzwinge Umgebungsgrenzen im Bereitstellungssystem oder in der API. Verlange dort einen Änderungsdatensatz oder eine menschliche Genehmigung, falls die Organisation dies benötigt. Der lokale Rechner kann einem Entwickler weiterhin beim Vorbereiten und Prüfen einer Änderung helfen, aber er darf nicht der Durchsetzungsort für die Produktionsaktion sein.
NIST Special Publication 800-207 beschreibt Zero Trust als ein Modell, bei dem Zugriffsentscheidungen auf den Schutz von Ressourcen statt auf das Vertrauen in den Netzwerkstandort ausgerichtet sind. Die nützliche Lehre für Agenten-Workflows lautet nicht, dass jedes lokale Tool eine komplizierte Policy-Sprache braucht. Entscheidend ist, dass die Produktions-API oder der Host seine eigene Entscheidung über den Aufrufer und die angeforderte Ressource trifft. Eine Genehmigung auf dem Mac kann diese Entscheidung nicht ersetzen.
Versuche nicht, dieses Problem zu lösen, indem du ein lokales Entwickler-Zugangsdaten an CI weiterleitest. So wird ein menschlich kontrolliertes Zugangsdaten zu einem unbeaufsichtigten Dienst-Zugangsdaten, ohne die Klarheit eines der beiden Modelle zu bewahren. Erstelle eine eigene Workload-Identität und gib ihr nur die Berechtigungen, die der Job benötigt.
Baue keine Policy-Engine in Genehmigungsdialoge ein
Teams fragen oft nach Regeln wie «GET-Anfragen außerhalb der Arbeitszeit ablehnen» oder «SSH nur erlauben, wenn der Branchname release enthält». Diese Bitte ist beliebt, weil sie weniger Klicks zu ermöglichen scheint und die Kontrolle trotzdem lokal hält. Meist entsteht dabei ein fragiles Richtliniensystem, das unter Druck niemand erklären kann.
Lokale Aktionskontrolle sollte eine kleine, sichtbare Entscheidungskette haben: Tresor gesperrt oder entsperrt, Sitzung genehmigt oder nicht, Zugangsdaten erfordern eine Genehmigung pro Aufruf oder nicht. Jeder Zustand hat eine direkte Aktion für den Betreiber. Eine Person kann vorhersagen, was geschieht, es testen und die Freigabe widerrufen.
Sobald ein lokales Tool Branchnamen, Prompt-Texte, URL-Muster, Ticketbezeichnungen und vom Agenten angegebene Absichten auswertet, beginnt es, Autorisierungsentscheidungen anhand von Eingaben zu treffen, die der Agent beeinflussen kann. Die Regeln bekommen Ausnahmen. Ausnahmen werden zu Berechtigungen. Bald hat ein Entwickler auf einem Laptop ein unvollständiges serverseitiges Autorisierungssystem gebaut, ohne den Dienstkontext, den diese Aufgabe erfordert.
Verknüpfe lokale Entscheidungen mit Fakten, die der lokale Rechner feststellen kann: ob der Tresor geöffnet ist, welcher signierte Prozess eine Aktion angefordert hat, ob seine Sitzung genehmigt ist und ob dieses Zugangsdaten eine neue Bestätigung benötigt. Verknüpfe entfernte Entscheidungen mit Fakten, die der Dienst feststellen kann: Zielressource, Identität des Aufrufers, Mandant, aktuelle Umgebung, Anfrageinhalt und organisatorische Kontrollen.
Diese Trennung macht auch Fehler leichter zu diagnostizieren. Ein lokal abgelehnter Aufruf bedeutet, dass Tresor, Sitzung oder Genehmigung pro Aufruf ihn gestoppt haben. Ein serverseitig abgelehnter Aufruf bedeutet, dass die entfernte Richtlinie ihn zurückgewiesen hat. Kann eine Ablehnung aus einem Geflecht überlappender lokaler Regeln stammen, deaktivieren Entwickler die Kontrollen, statt sie zu reparieren.
Ein gemischter Workflow gibt jeder Kontrolle eine klar definierte Aufgabe
Die meisten Teams benötigen lokale und serverseitige Kontrollen. Das praktische Design ist keine Entweder-oder-Entscheidung.
Ein Entwickler kann lokal einen interaktiven Agenten ausführen, um eine Staging-API zu untersuchen, private Paketmetadaten zu lesen oder begrenzte SSH-Diagnosen auszuführen. Nach der Prüfung der Prozessidentität genehmigt der Entwickler den Lauf. Der lokale Tresor stellt ein Zugangsdaten bereit, das der Agent nie sieht. Aktivitätsaufzeichnungen ermöglichen eine spätere Überprüfung.
Derselbe Agent kann eine Bereitstellungsänderung vorbereiten, ohne die Berechtigung zu erhalten, sie auszurollen. Eine serverseitige Pipeline läuft anschließend mit ihrer eigenen Workload-Identität, setzt Produktionsbeschränkungen durch und zeichnet die resultierende Bereitstellung auf. Benötigt die Pipeline eine menschliche Genehmigung, gehört diese in das System, das die Produktionsänderung verwaltet. Dort bleibt sie für die Verantwortlichen der Umgebung sichtbar.
Behandle die Übergabe als eine Grenze, die bewahrt werden muss. Der lokale Agent kann einen Patch, ein Testergebnis oder eine signierte Anfrage zur Prüfung erzeugen. Er sollte die Sitzungsautorität eines Entwicklers nicht in einen unbeaufsichtigten Job einschleusen. Der Serverjob sollte nicht von einem entsperrten Laptop abhängen, um seine Arbeit abzuschließen.
Beginne damit, jede Aktion mit Zugangsdaten in einem aktuellen Workflow einzuzeichnen. Notiere den Prozess, der sie startet, den Rechner, der das Secret verwahrt, die Ressource, die es empfängt, die Person, die den Vorgang stoppen kann, und ob der Job ohne diese Person laufen muss. Du wirst schnell die Aktionen finden, die zur lokalen Kontrolle passen, diejenigen, die serverseitige Durchsetzung benötigen, und die unangenehmen Fälle, für die derzeit keine der beiden Kontrollen existiert.
FAQ
Wann sollte ich lokale Aktionskontrolle für einen KI-Coding-Agenten verwenden?
Nutze lokale Kontrolle, wenn der Agent auf dem Mac eines Entwicklers läuft und eine kleine Gruppe von APIs oder SSH-Zielen mit Zugangsdaten aufrufen muss, die nicht in den Kontext des Agenten gelangen sollen. Das funktioniert am besten, wenn eine Person einen neuen Agent-Prozess genehmigen und reagieren kann, falls der Mac eine Bestätigung verlangt.
Macht ein lokaler Zugangsdaten-Tresor KI-Agenten sicher?
Ein lokaler Tresor hält Zugangsdaten vom Agent-Prozess fern und beseitigt damit einen wichtigen Weg für versehentliche Offenlegung. Er macht einen kompromittierten Entwicklerrechner jedoch nicht vertrauenswürdig und ersetzt keine Autorisierungsregeln, die der empfangende Dienst durchsetzt.
Was sollte ich prüfen, bevor ich eine KI-Agentensitzung genehmige?
Genehmige eine Sitzung, wenn du den startenden Prozess, seine Signaturautorität und die geplante Arbeit erkennst. Genehmige eine Sitzung nicht allein deshalb, weil die Eingabeaufforderung den Namen eines bekannten Projekts enthält. Eingabeaufforderungen weisen keine Prozessidentität nach.
Welche Aktionen eines Agenten benötigen jedes Mal eine Genehmigung?
Verwende eine Bestätigung für jeden einzelnen Aufruf bei Zugangsdaten, die unumkehrbare Folgen haben können, etwa bei einem Token für Produktionsbereitstellungen, einer Zahlungsaktion oder einer destruktiven Verwaltungs-API. Routinemäßige Leseaufrufe werden unbrauchbar, wenn sie jedes Mal dieselbe Unterbrechung erfordern.
Ist SSH über ein Agenten-Aktionsgateway sicher?
Nein. Die Ausführung von SSH-Befehlen ist nur dann durch lokale Kontrolle abgesichert, wenn Ziel, Konto, Befehlsumfang und Vertrauen in den Host an geeigneter Stelle eingeschränkt sind. Ein geschützter privater Schlüssel kann trotzdem einen gefährlichen Befehl auf einem Host autorisieren, auf dem das Konto weitreichende Rechte besitzt.
Kann lokale Aktionskontrolle die serverseitige Autorisierung ersetzen?
Nein. Dienstkonten, CI-Runner, Produktionsautomatisierung und gemeinsam genutzte Build-Rechner benötigen Kontrollen, die auch dann verfügbar bleiben, wenn kein einzelner Entwickler an einem Mac sitzt. In diesen Fällen sollten Autorisierung und Prüfprotokollierung nahe am Dienst oder an der Arbeitslast durchgesetzt werden.
Wie kann ich testen, ob der Agent-Prozess der genehmigte Prozess ist?
Beginne mit ps, um die Prozesshierarchie zu ermitteln, und prüfe mit codesign die Signaturdetails der ausführbaren Datei. Führe anschließend einen harmlosen Aufruf aus und überprüfe, was der Agent erhält, was das Aktionsgateway protokolliert und was der empfangende Dienst in seinem Protokoll festhält.
Bietet MCP Genehmigungskontrollen für Agentenwerkzeuge?
Nein. Ein MCP-Server beschreibt eine Werkzeugschnittstelle und ein Anfrageprotokoll. Er entscheidet weder, wo Zugangsdaten liegen, noch ob ein Mensch eine Aktion genehmigt. Behandle Transportkompatibilität und Aktionsautorisierung als getrennte Designfragen.
Reicht ein manipulationsnachweisbares Prüfprotokoll für die Verantwortlichkeit eines Agenten aus?
Ein manipulationsnachweisbares Protokoll hilft, nachträglich veränderte Historien zu erkennen und zu rekonstruieren, was ausgeführt wurde. Es kann eine Aktion jedoch nicht rückgängig machen und nicht entscheiden, ob sie autorisiert war. Bewahre das Gateway-Journal, das Prüfprotokoll des Dienstes und die Bereitstellungsaufzeichnungen auf, weil jedes davon eine andere Frage beantwortet.
Welche lokalen Kontrollen für Agenten dürfen niemals dem Agenten überlassen werden?
Überlasse dem Agenten nicht die Wahl des Genehmigungsmodus, des Zielumfangs oder der Zugangsdatenklasse in seiner eigenen Eingabeaufforderung oder Konfiguration. Der Betreiber muss diese Grenzen außerhalb des vom Agenten beschreibbaren Arbeitsbereichs festlegen. Teste anschließend Ablehnung und Widerruf, bevor du dich darauf verlässt.