sync: global→pool, pool-guard raus, Session-Watcher-Setup, verbotenes Wort Ehrlich
This commit is contained in:
@@ -1,14 +1,20 @@
|
||||
---
|
||||
name: multi-account-keychain
|
||||
description: macOS-Keychain trennt Claude-Code-Credentials NICHT pro CLAUDE_CONFIG_DIR — Multi-Account nur über Env-Tokens
|
||||
description: "Multi-Account auf macOS — Stand 2.1.199: pro CLAUDE_CONFIG_DIR eigener suffixierter Keychain-Eintrag; .credentials.json-Ansatz überholt"
|
||||
metadata:
|
||||
node_type: memory
|
||||
type: project
|
||||
originSessionId: 5c4c75da-b313-4740-9988-49533ba77ed1
|
||||
originSessionId: e108ad75-f176-43b6-901d-c3ec19ec3961
|
||||
---
|
||||
|
||||
Verifiziert 2026-07-03: Claude Code nutzt auf macOS einen einzigen Keychain-Eintrag (Service `Claude Code-credentials`, Account = Unix-User) für alle `CLAUDE_CONFIG_DIR`-Profile. Mehrere OAuth-Logins überschreiben sich gegenseitig (Issue anthropics/claude-code#20553); der Datei-Fallback `.credentials.json` wird auf macOS gelöscht (#10039).
|
||||
ÜBERHOLT (galt bis Version vor 2.1.199): claude las die `.credentials.json` direkt aus `CLAUDE_CONFIG_DIR` (verifiziert 2026-07-03 vormittags, Test `bin/oauth-configdir-test`).
|
||||
|
||||
**Why:** ai-control soll 3–4 Claude-Zugänge (Abo + Kunden-API-Keys) strikt getrennt auf einem Rechner betreiben.
|
||||
Stand 2026-07-03 abends, Version 2.1.199 (native Installation): Neu-Login war nötig. Die `.credentials.json` im Pool `Mx9Privat` ist weg; claude speichert jetzt pro Config-Dir einen Keychain-Eintrag `Claude Code-credentials-<suffix>`, Suffix = erste 8 Hex-Zeichen von SHA-256 über den `CLAUDE_CONFIG_DIR`-Pfad (Mx9Privat → `a014e206`, TestWürth → erwartet `4c0ad9a9`, ggf. NFC/NFD-Frage wegen „ü"). Ohne gesetztes `CLAUDE_CONFIG_DIR` entsteht der unsuffixierte Eintrag `Claude Code-credentials` plus `~/.claude`/`~/.claude.json`. Damit ist #20553 (Überschreiben) upstream gelöst — pro Pool ein eigener Eintrag. Verifiziert 2026-07-03 abends: Nach `/login` in ai-control (Mx9Privat) lief wuerth-plato (gleicher Pool) ohne erneutes Login — Eintrag `a014e206` wird poolweit geteilt. Keychain enthielt danach nur diesen einen Claude-Code-Eintrag (kein unsuffixierter). Zweiter Pool ebenfalls verifiziert: 08-07 (TestWürth, oauth) verlangte wie erwartet erneutes Login und erzeugte `Claude Code-credentials-4c0ad9a9` — Suffix stimmt mit der Vorab-Berechnung überein, NFC/NFD-Frage wegen „ü" damit geklärt. Keychain-Stand: genau zwei Einträge, `a014e206` (Mx9Privat) und `4c0ad9a9` (TestWürth). Multi-Account über suffixierte Keychain-Einträge funktioniert damit vollständig. Dritter Beleg: robotunits nach Umzug auf TestWürth ohne Login gestartet (Starter-Pfad hasht identisch auf `4c0ad9a9`). Mit gesetztem `CLAUDE_CONFIG_DIR` entsteht dabei kein neues `~/.claude` im Home — das gelöschte bleibt weg.
|
||||
|
||||
**How to apply:** Pro Instanz Credentials über Env setzen: `CLAUDE_CODE_OAUTH_TOKEN` (via `claude setup-token`, 1 Jahr gültig) für Abo-Zugänge, `ANTHROPIC_API_KEY` für Kunden-Keys. `CLAUDE_CONFIG_DIR` zusätzlich pro Zugang für getrennte settings/History/Projektzustand — nur nicht für Credentials verlassen.
|
||||
Umbenennung 2026-07-03 spätabends: Mx9Privat → privateDefault, TestWürth → apiDefault. Suffixe: privateDefault → `096c4ef9`, apiDefault → `15e10251`. Die alten Einträge `a014e206`/`4c0ad9a9` wurden gelöscht; kurz darauf lag `096c4ef9` im Keychain — eine laufende Session hat die Credentials unter dem neuen Pfad selbst neu geschrieben, ohne Login-Prompt. Weitere Session-Starts erzeugten keinen zusätzlichen Eintrag. Keychain-Endstand 2026-07-03: genau ein Eintrag `096c4ef9`; für apiDefault (`15e10251`) existiert noch keiner, dort ist beim ersten Start Login nötig.
|
||||
|
||||
Kaltstart-Test über die umgestellten Starter (2026-07-04): durchgeführt, funktioniert grundsätzlich (kein Login nötig), aber laut Marcus nicht in der gewünschten Qualität — worin genau der Mangel liegt, ist noch nicht festgehalten.
|
||||
|
||||
**Why:** Mehrere Claude-Zugänge (Abo + Kunden-Keys) strikt getrennt auf einem Rechner.
|
||||
|
||||
**How to apply:** Pro Pool ein Ordner als `CLAUDE_CONFIG_DIR` (siehe [[ai-control-pool-setup]]). OAuth: `.credentials.json` (0600) in den Pool-Ordner. API-Key: `apiKeyHelper` in der Pool-`settings.json` auf die Key-Datei. `CLAUDE_CODE_OAUTH_TOKEN`-Export ist unnötig.
|
||||
|
||||
Reference in New Issue
Block a user