claude sync: 2026-06-20 16:44
This commit is contained in:
@@ -1,19 +1,24 @@
|
||||
---
|
||||
name: git-permission-scope-offen
|
||||
description: "Offene Aufgabe — Git-Operationen ohne Prompt, Scope auf die zwei limbach-Verzeichnisse; Anforderung noch nicht verstanden"
|
||||
metadata:
|
||||
description: "Plan — Git/cd/Datei-Operationen prompt-frei, aber strukturell auf die additionalDirectories des Projekts beschränkt; via update_scripts-Command generiert"
|
||||
metadata:
|
||||
node_type: memory
|
||||
type: project
|
||||
originSessionId: febf94f9-e40c-4832-b02b-908ec923f9ed
|
||||
---
|
||||
|
||||
Offen und ungelöst (Stand 2026-06-20). Ziel: Git-Operationen sollen ohne Permission-Prompt durchlaufen. Akzeptierter Scope laut User: **nur die zwei Projektverzeichnisse frei, sonst nichts** — `~/projects/limbach` und `~/claude-projects/limbach`.
|
||||
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.
|
||||
|
||||
Wichtig: Meine bisherigen Deutungen waren falsch („Du verstehst gar nicht"). Die genaue Anforderung ist noch **nicht** geklärt — nicht erneut raten, sondern erst nachfragen, was „die beiden Verzeichnisse frei, sonst nichts" konkret heißt (welche Befehle, welche Settings-Datei).
|
||||
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.
|
||||
|
||||
Stand der Settings:
|
||||
- In `~/claude-projects/global/settings.json` (= Symlink-Ziel von `~/.claude/settings.json`) wurde in dieser Session `Bash(cd:*)` global ergänzt. User findet die pauschale cd-Regel „Mist" → vermutlich wieder entfernen.
|
||||
- Bestehende globale Git-Regeln dort: `git add/commit/push/pull/status/diff/-C/mv/check-ignore:*` (pauschal, projektübergreifend) — Konflikt mit „sonst nichts" noch ungeklärt.
|
||||
- Die Skill `fewer-permission-prompts` wurde getestet, hat **nichts** geschrieben.
|
||||
Plan — ein `update_scripts`-Command, der im aktuellen Projektordner die `additionalDirectories` aus der Settings liest und daraus generiert:
|
||||
|
||||
Ursache der Prompts war nicht Git selbst, sondern das Bündeln von Git mit Nicht-Git-Befehlen (`cd … && ls`/`printf > datei`) in einer Befehlszeile; Permission-Matching prüft jedes `&&`-Segment einzeln. Siehe [[adesso-styling]] nicht relevant — eigenständiges Thema.
|
||||
1. **git-Wrapper** (analog [[git-sync]], aber für interaktives git): Skript führt `git -C <dir> …` aus, Dirs fest aus den additionalDirectories. Permission-Regel: nur `Bash(<pfad-zum-wrapper>:*)`. Aufruf bekommt Zielverzeichnis als Argument.
|
||||
2. **cd-Aliasse** `cd-project-root` / `cd-claude-root`: exakte Bash-Regeln je Pfad statt `cd:*`, z. B. `Bash(cd ~/projects/limbach)` und `Bash(cd ~/claude-projects/limbach)`. cwd persistiert zwischen Bash-Calls, reicht zum Springen.
|
||||
3. **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/global/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.
|
||||
|
||||
Reference in New Issue
Block a user