From eeda6c911ebd6211c0a8bcf3ffb74c5dbb6f69d4 Mon Sep 17 00:00:00 2001 From: Deploymentcenter Bot Date: Sun, 30 Aug 2026 13:54:55 +0200 Subject: [PATCH] fix(tokens): Supervisor-Rechte im Formular, Vollzugriff nicht mehr vorangekreuzt Aufgefallen bei der Frage, wo man ein Werkbank-Token anlegt. Drei Befunde an derselben Stelle: 1. DIE SUPERVISOR-RECHTE FEHLTEN IM FORMULAR TokenManager::KNOWN_SCOPES kennt supervisor:read, :manage und :report seit 2.6.0 - die Ankreuzliste bot sie nie an. Ein Werkbank-Token liess sich ueber die Oberflaeche also gar nicht so ausstellen, wie die Anleitung es verlangt: dc_findings, dc_finding_summary und dc_metrics im MCP-Adapter waeren mit "unauthorized" gescheitert, und der Grund waere nirgends zu sehen gewesen. 2. "ALLE RECHTE" WAR DIE VORGABE Wer ein Agenten-Token anlegte und den Haken uebersah, gab damit alles heraus - Releases veroeffentlichen und Tokens ausstellen inbegriffen. Die gefaehrlichste Auswahl gehoert nicht in die Vorgabe. Vorangekreuzt ist jetzt "Bugtracker verwalten", also der dokumentierte Normalfall; der Vollzugriff traegt eine Warnung und muss ausdruecklich gewaehlt werden. 3. DIE ANSICHT HIESS "MASTER-TOKEN ERSTELLEN" Deshalb fand niemand das Werkbank-Token: Es entsteht an genau dieser Stelle, nur mit anderem Identitaetstyp. Der Name der Ansicht versprach etwas anderes, als sie kann - und widersprach der eigenen Regel "kein Master-Token an einen Agenten". Heisst jetzt "Token erstellen", mit einem Hinweiskasten fuer den Agentenfall. Co-Authored-By: Claude Opus 5 --- docs/AGENTEN_ANBINDEN.md | 6 +++++- public/index.php | 43 ++++++++++++++++++++++++++++++++++++---- 2 files changed, 44 insertions(+), 5 deletions(-) diff --git a/docs/AGENTEN_ANBINDEN.md b/docs/AGENTEN_ANBINDEN.md index 1c44e54..6dbbe5e 100644 --- a/docs/AGENTEN_ANBINDEN.md +++ b/docs/AGENTEN_ANBINDEN.md @@ -33,7 +33,11 @@ gelesen zu haben. ## 1. Werkbank-Token anlegen -Im WebUI unter **Token-Verwaltung**: +Im WebUI: **Token-Verwaltung → ➕ Token erstellen**. + +Die Ansicht hieß bis 2.7.0 „Master-Token erstellen" — deshalb war das +Werkbank-Token dort nicht zu finden. Es entsteht an derselben Stelle, nur mit +anderem Identitätstyp. | Feld | Wert | |---|---| diff --git a/public/index.php b/public/index.php index 30becf9..7b38b8b 100644 --- a/public/index.php +++ b/public/index.php @@ -5401,7 +5401,25 @@ Antwort:
-

➕ Neuen Master-Token Erstellen

+

➕ Neuen Token erstellen

+ +
+ Werkbank-Token für einen Coding-Agenten? Hier richtig. + Identitätstyp auf Entwickler KI-Agent, ein Projekt auswählen + (nicht „Keins“) und als Rechte Bugtracker verwalten plus + Befunde lesen ankreuzen — Alle Rechte nicht. +
+ Die Projektbindung ist keine Formsache: Aus ihr leitet der Server + ab, wer eine Meldung abgesetzt hat. Ein Token für alle Projekte, + und das Signal „drei Projekte melden dasselbe“ ist wertlos. + Ausführlich in docs/AGENTEN_ANBINDEN.md. +
+
@@ -5453,19 +5471,36 @@ Antwort:
['🌟 Alle Rechte', 'Uneingeschränkter Zugriff'], + '*' => ['⚠️ Alle Rechte', 'Uneingeschränkt — auch Releases veröffentlichen und Tokens ausstellen. Nicht an einen Agenten geben.'], 'bugtracker:manage' => ['⚙️ Bugtracker verwalten', 'Übernehmen, kommentieren, schließen — schließt Lesen und Melden ein'], 'bugtracker:report' => ['🐛 Bugtracker melden', 'Nur Einträge anlegen — schließt Lesen ein'], 'bugtracker:read' => ['👁️ Bugtracker lesen', 'Nur Abfragen'], 'watchdog:ping' => ['🛡️ Watchdog Heartbeat', 'Statusmeldungen senden'], 'watchdog:read' => ['📊 Watchdog lesen', 'Monitore und Ereignisse abfragen'], + // Die Supervisor-Rechte fehlten hier, obwohl TokenManager + // sie seit 2.6.0 kennt. Folge: Ein Werkbank-Token liess + // sich ueber die Oberflaeche gar nicht vollstaendig + // ausstellen - dc_findings und dc_metrics im MCP-Adapter + // liefen ins unauthorized, und der Grund war nirgends zu + // sehen. + 'supervisor:read' => ['🔎 Befunde lesen', 'Supervisor-Befunde abfragen — braucht ein Werkbank-Token für dc_findings'], + 'supervisor:manage' => ['🔬 Befunde einstufen', 'Befunde abhaken und bewerten — schließt Lesen ein'], + 'supervisor:report' => ['📡 Befunde melden', 'Nur einliefern, etwa aus einem Prüfwerkzeug — schließt Lesen ein'], 'updateservice:read' => ['📦 Updates prüfen', 'Auf neue Releases prüfen'], 'updateservice:publish' => ['🚀 Releases veröffentlichen', 'Neue Releases einstellen — schließt Prüfen ein'], 'license:dev' => ['🧪 DEV-Lizenz abholen', 'Befristeten Testschlüssel selbst ausstellen — nur für Werkbank-Token auf Testmaschinen'], ]; foreach ($scopeChoices as $value => $labels): ?>