Skripte: wer eines braucht, baut es nicht (#695)

Korrektur der gestrigen Fassung: Dort stand, der zustaendige Agent schreibe
und pflege sein Skript selbst. Ein Anzeigen-Agent, der programmiert und
beliebigen Code ausfuehrt, hat Rechte, die seine Arbeit nicht braucht.

Die Lieferkette: Bedarfsmeldung mit ausgearbeiteter Beschreibung an die
eigene Leitung, von dort an die Entwicklung, dort schreiben und testen,
Pruefung und Freigabe nach #657, Zuteilung an genau diesen einen Nutzer.
Fehler gehen ueber dieselbe Kette zurueck.

Technisch folgt daraus, dass scripts.run kein Schalter sein darf, sondern
eine Liste benannter Skripte - ein Ja/Nein waere die Hintertuer, die die
Trennung gerade schliesst.

Und ein zweiter Gewinn, der als Entwurfsziel gelten soll: Der Agent, der
fremde Inhalte liest, ist nie der Agent, der ausfuehrbaren Code
hervorbringt.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Richard
2026-09-22 09:10:52 +02:00
co-authored by Claude Opus 5
parent 8479f6ef2a
commit d25ae41f4b
+85 -15
View File
@@ -313,27 +313,94 @@ Anbindung schreibt und aktuell hält.
**Das Produkt gibt dem Agenten Fähigkeiten, keine Anschlüsse.** Eine API aufrufen. Eine
Webseite abrufen. Eine Datenbank befragen. Eine Mail lesen. Was daraus eine
Amazon-Anbindung macht, ist die Kenntnis des Agenten über Amazon — und die steht in
seinem Auftrag, seinem Gedächtnis und in Skripten, die er selbst schreibt.
Amazon-Anbindung macht, ist die Kenntnis über Amazon — im Auftrag, im Gedächtnis und in
Skripten, die die Instanz selbst hervorbringt.
### Wo Spezifisches hingehört: in Skripte, die die Instanz selbst schreibt
### Wo Spezifisches hingehört: in Skripte — aber nicht in die Hand dessen, der sie braucht
Braucht der Marktplatz-Agent eine wiederkehrende, exakt zugeschnittene Operation, schreibt
er sich ein Skript und pflegt es. Ändert Amazon etwas, ändert er das Skript — ohne
Produktfassung, ohne uns.
Braucht der Marktplatz-Agent eine wiederkehrende, exakt zugeschnittene Operation, dann
entsteht dafür ein Skript. **Er schreibt es nicht selbst.**
Das ist bereits geplant, und zwar vollständig ausgearbeitet:
Ein Anzeigen-Agent, der programmiert und beliebigen Code ausführt, hat Rechte, die seine
Arbeit nicht braucht — und das ist keine Kleinigkeit, sondern die Umkehrung des
Grundsatzes, dass jeder Agent genau die Rechte bekommt, die er zum Arbeiten benötigt.
**Schreiben und Benutzen sind zwei verschiedene Rechte.** Die Lieferkette:
```
Anzeigen-Agent „Ein Skript, das die Kampagnenberichte
│ Bedarfsmeldung zusammenfasst, würde mir X ersparen.
↓ Eingaben: …, Ausgabe: …, Fehlerfälle: …"
Marketing-Leitung prüft: wirklich nötig? wirklich wiederkehrend?
│ weiterleiten
↓
Entwicklungs-Leitung priorisiert, beauftragt
│
↓
Entwickler-Agent schreibt, testet — DIESER darf schreiben
│
↓
Prüfung und Freigabe (#657) Vorprüfung, Security-Einschätzung, Mensch
│
↓
Anzeigen-Agent bekommt Zugang zu GENAU DIESEM Skript
│ Fehlermeldung über die Befehlskette zurück
↓
Entwickler-Agent bessert nach → neue Prüfung, neue Freigabe
```
Der Anzeigen-Agent darf dabei mehr als nur „wäre schön": eine ausgearbeitete
Beschreibung — Eingaben, erwartete Ausgabe, Fehlerfälle, wie oft gebraucht. Er kennt den
Bedarf am besten. Er bekommt nur nicht die Werkzeuge, ihn selbst zu decken.
### Was daraus technisch folgt
Das ist mehr als eine Hausordnung, es ändert die Rechteform:
- **`scripts.write` ist nicht dasselbe wie `scripts.run`.** Ersteres hat genau eine
Einheit, die Entwicklung. Letzteres ist **kein Schalter, sondern eine Liste**: Dieser
Agent darf diese benannten Skripte ausführen, sonst keine. Ein „darf Skripte ausführen"
als Ja/Nein wäre die Hintertür, die wir gerade geschlossen haben.
- **Jedes Skript hat einen Eigentümer und einen Nutzerkreis.** Das Manifest aus #657
nennt beide. Wer es benutzen darf, steht dort — nicht im Prompt des Nutzers.
- **Der Nutzer prüft seine Werkzeuge nicht selbst.** Bessert die Entwicklung nach, gilt
die neue Fassung nach ihrer Freigabe für alle Nutzer. Sonst müsste der Anzeigen-Agent
Code beurteilen, den er nicht schreiben darf.
- **Ein Fehlschlag ist eine Meldung, keine Sackgasse.** Scheitert das Skript, meldet der
Agent es über die Befehlskette — derselbe Weg wie jede Eskalation (#689), nur mit
„Fähigkeit fehlerhaft" statt „Fähigkeit fehlt".
### Der zweite Gewinn dieser Trennung
Sie ist nicht nur sauberes Rechtemanagement. Sie ist die schärfste Grenze, die man gegen
eingeschleuste Anweisungen ziehen kann: **Der Agent, der fremde Inhalte liest, ist nie der
Agent, der ausführbaren Code hervorbringt.**
Der Anzeigen-Agent liest Amazon-Seiten, Berichte, Mails — lauter Text, den jemand anderes
verfasst hat. Dürfte er daraus Code schreiben und ausführen, gäbe es einen durchgehenden
Weg von einer manipulierten Webseite bis zur Codeausführung. Mit der Lieferkette liegen
dazwischen: eine Leitung, eine Entwicklungsabteilung, eine deterministische Vorprüfung,
eine Sicherheitseinschätzung und ein Mensch.
Das schließt eine Frage nicht aus, die beim Bau zu klären ist: Eine Bedarfsmeldung, die
aus einem Lauf mit Fremdinhalt stammt, trägt dessen Herkunft weiter — sie kann die
Beschreibung eines Skripts enthalten, die jemand anderes dem Agenten untergeschoben hat.
Sie gehört deshalb als belastet gekennzeichnet beim Entwickler an (#651, #659), und der
Entwickler behandelt sie als Wunsch, nicht als Vorlage.
Die Bausteine dafür sind geplant:
| Item | Was |
|---|---|
| #654 | Sandbox-Runner (bwrap): jede Codeausführung außerhalb des Hauptprozesses |
| #196 | Shell-Tool mit echter Sandbox |
| #657 | Skriptprüfung: Agenten schreiben Skripte, ausgeführt wird nur die freigegebene Fassung — gebunden an den Hash von Skript, Manifest und Interpreter; jede Änderung, auch ein Bugfix, braucht eine neue Prüfung |
| #657 | Skriptprüfung: ausgeführt wird nur die freigegebene Fassung — gebunden an den Hash von Skript, Manifest und Interpreter; jede Änderung, auch ein Bugfix, braucht eine neue Prüfung |
| #695 | Die Lieferkette: Bedarfsmeldung, Entwicklung, Zuteilung an benannte Nutzer, Fehlermeldung zurück |
**Diese drei sind nicht nur Sicherheitsvorhaben — sie sind der eigentliche
Werkzeugkasten.** Sie stehen heute unter SEC, weil sie dort aus der Sicherheitsseite
gedacht wurden. Aus der Baukastenseite betrachtet sind sie die Antwort auf „wie bedient
eine Instanz Amazon?", und ihr Rang sollte das widerspiegeln.
**Diese vier sind nicht nur Sicherheitsvorhaben — sie sind der eigentliche
Werkzeugkasten.** Die ersten drei stehen heute unter SEC, weil sie dort aus der
Sicherheitsseite gedacht wurden. Aus der Baukastenseite betrachtet sind sie die Antwort
auf „wie bedient eine Instanz Amazon?", und ihr Rang sollte das widerspiegeln.
Die Reihenfolge bleibt dabei zwingend: **erst die Sandbox, dann das Schreiben.** Ein Agent,
der Code schreiben und ausführen darf, ohne dass die Ausführung eingesperrt ist, ist kein
@@ -489,9 +556,11 @@ von Modellen (#694) und die Schemaauskunft (#676) — letztere ist Vorbedingung
Stufe 4, weil eine Eskalation einen belastbaren Negativbefund braucht.
**Nicht in dieser Liste, aber davor:** Die Sandbox (#654) und die Skriptprüfung (#657).
Sie stehen unter SEC, sind aber die Grundlage dafür, dass eine Instanz sich ihre
plattformspezifischen Werkzeuge selbst baut — und damit für den Baukasten ebenso
tragend wie die Einheiten.
Sie stehen unter SEC, sind aber die Grundlage dafür, dass eine Instanz ihre
plattformspezifischen Werkzeuge selbst hervorbringt — und damit für den Baukasten
ebenso tragend wie die Einheiten. Die Lieferkette darüber (#695) gehört in den
ORG-Block, weil sie eine Organisationsfrage ist: Wer ein Werkzeug braucht, baut es
nicht.
Stufe 1 ist die einzige, die wirklich weh tut, weil sie Konfiguration, Werkzeuge,
Arbeitsbereiche und Oberfläche gleichzeitig berührt. Sie zuerst zu bauen ist trotzdem
@@ -534,6 +603,7 @@ wächst, wird der Umzug teurer.
| #693 | Kontrollpflicht der Leitung: Stichproben gegen das Audit, abgestufte Mittel |
| #694 | A/B-Vergleich von Modellen im laufenden Betrieb |
| #676 | Schemaauskunft der Datenbank — Vorbedingung für den Negativbefund |
| #695 | Skripte: Schreiben und Benutzen sind zwei Rechte, mit Lieferkette |
| #654, #196, #657 | Sandbox, Shell, Skriptprüfung — der eigentliche Werkzeugkasten |
| #687 | Freigabe durch die Leitung innerhalb von Grenzen |
| #688 | Organigramm in Oberfläche und WebUI |