# Intent: Shell-Fähigkeit für den Researcher (blunix, Claude-Pfad) ## Ziel Der Researcher (`agents/researcher.md`) kann bei Board-getriggerten wie interaktiven Aufträgen laufende Dienste auf blunix einsehen (Logs, Service-Status, Ressourcennutzung), nicht nur den statischen Repo-Stand und externe Web-Quellen. ## Umfang / Auftrag an den Builder - `agents/researcher.md`: im Abschnitt "Arbeitsgrenzen und Sicherheit" einen neuen Absatz nach dem Muster des bestehenden Web-Zugriffs-Absatzes ergänzen, der Shell-Ausführung als neue, ausdrücklich begrenzte Fähigkeit einführt: (a) nur auf dem Host blunix, kein SSH zu pinix, tnix oder anderen Hosts, (b) ausschließlich zur Informationsbeschaffung, nie zur Zustandsänderung, (c) die einzige Schreibaktion der Rolle bleibt unverändert `docs/research/.md`. - Im Abschnitt "Rechercheablauf" ergänzen: bei Fragen zum Live-Zustand der Plattform sind Shell-Befehle auf blunix eine dritte zulässige Quelle neben Repository und Web. - `agents/claude-settings/researcher.json`: der `allow`-Liste einen generischen Bash-Eintrag hinzufügen (kein Befehls-Allowlisting nach Präfix). Der `deny`-Liste gezielt folgende Präfixe hinzufügen, zusätzlich zum bereits vorhandenen `Bash(ssh *)`: `Bash(sudo *)`, `Bash(rm *)`, `Bash(mv *)`, `Bash(chmod *)`, `Bash(chown *)`, `Bash(kill *)`, `Bash(systemctl start *)`, `Bash(systemctl stop *)`, `Bash(systemctl restart *)`, `Bash(systemctl enable *)`, `Bash(systemctl disable *)`, `Bash(nixos-rebuild switch *)`, `Bash(nixos-rebuild test *)`, `Bash(reboot*)`, `Bash(shutdown *)`, `Bash(agenix *)`. Bereits vorhandene Einträge (`git commit *`, `git push *`, `ssh *`) bleiben unverändert stehen. ## Scope-Einschränkung Diese Karte aktiviert Shell-Ausführung ausschließlich für den Claude-Runtime-Pfad. Der Codex-Pfad bleibt unverändert ohne Shell-Fähigkeit, weil Codex unter `--sandbox read-only` keine Shell-Befehle ausführen kann und `--sandbox workspace-write` laut `board-agent/README.md` ("Why read-only, not a scoped writable dir") nachweislich nicht pfadgenau einschränkt. Codex-Unterstützung ist ein bewusst ausgeschlossenes Folge-Intent. ## Ausgeschlossen - SSH oder jeder andere Zugriff auf pinix, tnix oder weitere Hosts. - Aktivierung der Shell-Fähigkeit für den Codex-Pfad. - Änderungen an `worker.py`, `trigger.py`, `board.html` oder `board-agent.nix` (folgen in separaten Karten). - Änderungen an anderen Rollen-Dateien oder anderen `agents/claude-settings/*.json`. - Eine feste Befehls-Allowlist anstelle der gewählten Deny-Präfix-Liste (siehe Annahmen). ## Annahmen - "Read-only" ist hier eine Konvention über eine Deny-Präfix-Liste, keine harte OS-Sandbox: ein board-getriggerter Researcher-Lauf läuft als Linux-User `drone`, demselben Nutzer wie die interaktive Admin-Session. Der Researcher hat real dieselben Rechte wie `drone`, abzüglich der gesperrten Präfixe. - Dieselbe erweiterte Fähigkeit gilt gleichermaßen für eine interaktive Herdr-Pane-Nutzung des Researchers, da beide Aufrufwege dieselbe Rollen- und Settings-Datei lesen. ## Offene Risiken - Eine Präfix-Denyliste ist nicht vollständig: Kettenoperatoren (`&&`, `;`, `|`), ungewöhnliche Schreibweisen oder Skripte, die intern `sudo` aufrufen, können sie umgehen. Dieses Risiko bleibt nach dieser Karte bewusst offen. ## Tests - `agents/claude-settings/researcher.json` bleibt valides JSON. - Der neue Bash-Allow-Eintrag und alle genannten Deny-Präfixe sind vorhanden, bestehende Einträge unverändert. ## Erfolgskriterien - Ein Researcher-Lauf (Claude-Pfad) kann auf blunix z. B. `journalctl` oder `systemctl status` ausführen. - Derselbe Lauf kann keinen der explizit gesperrten Befehle ausführen. - `agents/researcher.md` benennt die neue Fähigkeit und ihre Grenzen (nur blunix, nur Claude-Pfad, nur Recherche) ausdrücklich.