sync: global→pool, pool-guard raus, Session-Watcher-Setup, verbotenes Wort Ehrlich

This commit is contained in:
marcus.hinz
2026-07-04 19:09:13 +02:00
parent a7ff9378da
commit 79314d6140
43 changed files with 669 additions and 33 deletions
+7
View File
@@ -0,0 +1,7 @@
#!/usr/bin/env bash
# connect-test — prüft, ob claude mit der aktuellen Env authentifizieren und antworten kann.
# Exit 0 = Verbindung ok. Für Negativtest mit ungültigem Key:
# ANTHROPIC_API_KEY=sk-ant-ungueltig connect-test
set -euo pipefail
"${CLAUDE_BIN:-$HOME/.local/bin/claude}" -p 'Antworte nur mit: OK' --model claude-sonnet-5
+10
View File
@@ -0,0 +1,10 @@
#!/usr/bin/env bash
# kc-backup — sichert das Secret des Claude-Code-Keychain-Eintrags in eine Datei.
# Ablage außerhalb des Git-Repos (Default: ~/.ssh), damit das Secret nie committet wird.
# Usage: kc-backup [zieldatei]
set -euo pipefail
dest=${1:-$HOME/.ssh/claude-keychain-backup.json}
security find-generic-password -s "Claude Code-credentials" -a "$USER" -w > "$dest"
chmod 600 "$dest"
echo "Keychain-Secret gesichert nach: $dest ($(wc -c < "$dest" | tr -d ' ') Bytes)"
+7
View File
@@ -0,0 +1,7 @@
#!/usr/bin/env bash
# kc-delete — löscht den Claude-Code-Keychain-Eintrag.
# Vorher kc-backup ausführen; zurückspielen mit kc-restore.
set -euo pipefail
security delete-generic-password -s "Claude Code-credentials" -a "$USER"
echo "Keychain-Eintrag 'Claude Code-credentials' gelöscht."
+9
View File
@@ -0,0 +1,9 @@
#!/usr/bin/env bash
# kc-restore — spielt das mit kc-backup gesicherte Secret in den Keychain zurück.
# -U aktualisiert einen ggf. vorhandenen Eintrag statt zu scheitern.
# Usage: kc-restore [backupdatei]
set -euo pipefail
src=${1:-$HOME/.ssh/claude-keychain-backup.json}
security add-generic-password -U -s "Claude Code-credentials" -a "$USER" -w "$(cat "$src")"
echo "Keychain-Eintrag aus $src wiederhergestellt."
+10
View File
@@ -0,0 +1,10 @@
#!/usr/bin/env bash
# kc-status — zeigt Zustand des Claude-Code-Keychain-Eintrags und der Auth-Env.
# mdat = letzte Änderung des Eintrags; ändert sich, wenn eine Session den Keychain beschreibt.
set -euo pipefail
echo "== Keychain-Eintrag 'Claude Code-credentials' =="
security find-generic-password -s "Claude Code-credentials" -a "$USER" 2>&1 | grep -E '"(mdat|cdat)"' || echo "kein Eintrag vorhanden"
echo "== Auth-Env dieser Shell =="
env | grep -E '^(ANTHROPIC_API_KEY|CLAUDE_CODE_OAUTH_TOKEN|CLAUDE_CONFIG_DIR)=' | sed -E 's/=(.).*/=\1…/' || echo "keine Auth-Env gesetzt"
+31
View File
@@ -0,0 +1,31 @@
#!/usr/bin/env bash
# oauth-configdir-test — prüft, ob claude auf macOS die .credentials.json aus
# CLAUDE_CONFIG_DIR liest, wenn kein Keychain-Eintrag existiert.
# Ablauf: Backup → Keychain löschen → claude mit bereinigter Auth-Env →
# Nachkontrollen → Restore. Restore läuft auch bei fehlgeschlagenem Testlauf.
# Usage: oauth-configdir-test [pool] (Default: Mx9Privat)
set -u
cd "$(dirname "$0")/.."
pool=${1:-Mx9Privat}
pooldir="$HOME/claude-pools/$pool"
bin/kc-backup || exit 1
bin/kc-delete || exit 1
echo "== Testlauf: Env ohne ANTHROPIC_API_KEY/CLAUDE_CODE_OAUTH_TOKEN, CLAUDE_CONFIG_DIR=$pooldir =="
env -u ANTHROPIC_API_KEY -u CLAUDE_CODE_OAUTH_TOKEN \
CLAUDE_CONFIG_DIR="$pooldir" \
"${CLAUDE_BIN:-$HOME/.local/bin/claude}" -p 'Antworte nur mit: OK' --model claude-sonnet-5
echo "EXIT: $?"
echo "== credentials-Datei nach Lauf (#10039: darf nicht gelöscht sein) =="
ls -la "$pooldir/.credentials.json"
echo "== Keychain nach Lauf (es darf KEIN Eintrag entstanden sein) =="
bin/kc-status
echo "== Restore =="
bin/kc-restore
rm "$HOME/.ssh/claude-keychain-backup.json"
bin/kc-status