2.6 KiB
name, description, metadata
| name | description | metadata | ||||||
|---|---|---|---|---|---|---|---|---|
| git-permission-scope-offen | Plan — Git/cd/Datei-Operationen prompt-frei, aber strukturell auf die additionalDirectories des Projekts beschränkt; via update_scripts-Command generiert |
|
Geklärt (Stand 2026-06-20). Ziel: Im Projekt sollen Git, Verzeichniswechsel, Lesen und Schreiben ohne Permission-Prompt laufen — aber strukturell beschränkt auf die Verzeichnisse des jeweiligen Projekts (die permissions.additionalDirectories der Projekt-settings.json). Kein globales git, kein globales cd. Für limbach sind das ~/projects/limbach und ~/claude-projects/limbach; das Prinzip gilt projektweise für jedes Projekt.
Grundunterschied im Permission-Modell:
- Bash-Regeln matchen den Befehls-String, nicht das Arbeitsverzeichnis — eine verzeichnis-beschränkte Bash-Regel ist nicht ausdrückbar. Lösung: Wrapper-Skripte, die das Zielverzeichnis fest verdrahten; nur der Wrapper-Aufruf wird erlaubt.
- Datei-Tools (
Read/Edit/Write) lassen sich auf Pfad-Globs beschränken — hier geht die echte Verzeichnis-Beschränkung direkt.
Plan — ein update_scripts-Command, der im aktuellen Projektordner die additionalDirectories aus der Settings liest und daraus generiert:
- git-Wrapper (analog git-sync, aber für interaktives git): Skript führt
git -C <dir> …aus, Dirs fest aus den additionalDirectories. Permission-Regel: nurBash(<pfad-zum-wrapper>:*). Aufruf bekommt Zielverzeichnis als Argument. - cd-Aliasse
cd-project-root/cd-claude-root: exakte Bash-Regeln je Pfad stattcd:*, z. B.Bash(cd ~/projects/limbach)undBash(cd ~/claude-projects/limbach). cwd persistiert zwischen Bash-Calls, reicht zum Springen. - Read/Edit/Write-Globs je Verzeichnis:
Read(~/projects/limbach/**),Edit(~/projects/limbach/**),Write(~/projects/limbach/**)und analog für~/claude-projects/limbach/**. Damit läuft Coden in genau diesen Dirs prompt-frei, außerhalb wird weiter gefragt.
Aufräumen: globales Bash(cd:*) in ~/claude-projects/pool/settings.json (Symlink-Ziel von ~/.claude/settings.json) wieder entfernen — vom User als „Mist" bewertet. Globale git-Regeln (git add/commit/push/…:*) ebenfalls raus, sobald die Wrapper stehen.
Hintergrund: git-sync ist davon getrennt (synct alle Repos batch-weise, git-sync). Ursache früherer Prompts war u. a. das Bündeln von Git mit Nicht-Git-Befehlen (cd … && ls, printf > datei) in einer Zeile — Permission-Matching prüft jedes &&-Segment einzeln; die Wrapper umgehen das.