# Portabilität: UNIVERSAL
# Version: 1.0.0
# Zuletzt validiert: 2026-03-06

PERMISSIONS HANDLER - Claude Code Permission-Profile
=====================================================

HANDLER-NAME
============
permissions

BESCHREIBUNG
============
Der Permissions Handler verwaltet Permission-Profile für Claude Code in der
BACH-Datenbank (system_config Tabelle, Kategorie: claude_permissions).

Zwei vorkonfigurierte Profile:
  - normal:          Standard-Permissions (fragt bei kritischen Tools nach)
  - remote_control:  Alle Tools vorfreigeschaltet für Mobile-App-Nutzung

Profile werden in der DB gespeichert und bei Aktivierung in die Datei
~/.claude/settings.json geschrieben. Beim Deaktivieren wird der vorherige
Zustand automatisch wiederhergestellt (Backup-Mechanismus).

HINTERGRUND
===========
Claude Code Remote Control (Mobile App) ignoriert --dangerously-skip-permissions
aufgrund eines bekannten Bugs (GitHub Issue #29214). Die allow-Regeln in
settings.json werden jedoch auch von Remote Control respektiert. Daher werden
die Permissions über Profile in der BACH-DB verwaltet und bei Bedarf in die
settings.json geschrieben.

OPERATIONEN
===========

LIST
----
bach permissions list

Alle gespeicherten Profile mit Anzahl der allow/deny-Regeln anzeigen.
Markiert das aktuell aktive Profil mit [AKTIV].

SHOW
----
bach permissions show <profil>

Detailansicht eines Profils: Beschreibung, alle allow- und deny-Regeln.

SET
---
bach permissions set <profil> allow=<Tool> [allow=<Tool2>] [deny=<Tool3>]

Regeln zu einem Profil hinzufügen.
- allow=Tool:  Tool ohne Bestaetigung erlauben
- deny=Tool:   Tool verbieten
- Wildcards möglich: mcp__bach-*__* (alle BACH MCP Tools)
- Änderungen am aktiven Profil werden sofort in settings.json übernommen

REMOVE
------
bach permissions remove <profil> allow=<Tool> [deny=<Tool2>]

Regeln aus einem Profil entfernen.
Änderungen am aktiven Profil werden sofort in settings.json übernommen.

ACTIVATE
--------
bach permissions activate <profil>

Profil aktivieren:
1. Backup der aktuellen Permissions aus settings.json in DB
2. Profil-Regeln in settings.json schreiben
3. Aktives Profil in DB merken

Andere Settings (hooks, model, language etc.) bleiben unangetastet.

DEACTIVATE
----------
bach permissions deactivate

Zum Normal-Profil zurückkehren:
1. Backup aus DB wiederherstellen
2. settings.json aktualisieren
3. Aktives Profil auf "normal" setzen

SYNC
----
bach permissions sync

Aktuelle allow/deny-Regeln aus settings.json in das aktive DB-Profil
importieren. Nützlich wenn Regeln manuell in settings.json geändert wurden.

RESET
-----
bach permissions reset <profil>

Profil auf die vordefinierten Defaults zurücksetzen.
Verfügbare Defaults: normal, remote_control.
Änderungen am aktiven Profil werden sofort in settings.json übernommen.

STATUS
------
bach permissions status

Zeigt:
- Aktives Profil und Pfad zur settings.json
- Anzahl allow/deny-Regeln live in settings.json
- Anzahl allow/deny-Regeln in der DB
- Ob DB und settings.json synchron sind
- Ob ein Backup vorhanden ist

INIT
----
bach permissions init

Erstellt die Default-Profile (normal, remote_control) in der DB.
Idempotent: überspringt bereits vorhandene Profile.
Wird automatisch beim ersten Remote-Control-Start ausgeführt.

BEISPIELE
=========

Default-Profile anlegen:
$ bach permissions init

Alle Profile anzeigen:
$ bach permissions list

Remote-Control-Profil Details:
$ bach permissions show remote_control

Neues Tool zum Remote-Control-Profil hinzufügen:
$ bach permissions set remote_control allow=mcp__slack__*

Tool aus Profil entfernen:
$ bach permissions remove remote_control allow=mcp__slack__*

Remote-Control-Profil aktivieren (vor Mobile-Session):
$ bach permissions activate remote_control

Zurück zum Normal-Profil:
$ bach permissions deactivate

Aktuellen Zustand prüfen:
$ bach permissions status

Manuell geänderte settings.json in DB übernehmen:
$ bach permissions sync

Profil auf Defaults zurücksetzen:
$ bach permissions reset remote_control

REMOTE CONTROL WORKFLOW
=======================

Automatisch (empfohlen):
  1. Desktop: Doppelklick auf Claude_RemoteControl.bat
  2. BACH Menue: Taste [P] im Boot Menu
  -> Script aktiviert Profil, startet Claude, stellt Profil wieder her

Manuell:
  1. bach permissions activate remote_control
  2. claude --dangerously-skip-permissions
  3. /rc eingeben, QR-Code scannen
  4. Nach Beendigung: bach permissions deactivate

PROFIL-ARCHITEKTUR
==================

  +---------------------------------+
  |     BACH DB (system_config)     |
  |  category: claude_permissions   |
  |                                 |
  |  normal:         {allow, deny}  |
  |  remote_control: {allow, deny}  |
  |  active_profile: "normal"       |
  |  backup:         {allow, deny}  |
  +---------------------------------+
            |  activate / deactivate
            v
  +---------------------------------+
  |   ~/.claude/settings.json       |
  |   permissions.allow / deny      |
  |   (hooks, model etc. bleiben)   |
  +---------------------------------+
            |
            v
  +---------------------------------+
  |   Claude Code (lokal + Remote)  |
  +---------------------------------+

DATEIEN
=======
hub/claude_permissions.py         Handler-Implementierung
start/_internal/claude_remote_control.py  Automatischer Starter
start/_internal/claude_remote_control.bat Wrapper für Starter
start/bach.bat                    Boot-Menue (Menuepunkt [P])
~/.claude/settings.json           Claude Code Settings (Ziel-Datei)
bach.db (system_config)           Profil-Speicher in DB

SIEHE AUCH
==========
settings.txt                      Settings Handler (system_config Tabelle)
claude-code.txt                   Claude Code Kurzreferenz
claude-code-automatisierung.txt   Claude Code Automatisierung
