Die imperative Hälfte der Key-Architektur lag unversioniert in ~/.zshrc und ~/.local/bin, während die deklarative (.env.agents) getrackt war. Jetzt liegt alles Agent-bezogene hier: - agents/agent-env.zsh — SSH_AUTH_SOCK + agent-env(), gesourced von .zshrc - agents/ensure-machine-agent — startet den Maschinen-Agent und stellt beide Keys sicher (ersetzt load-signing-key, das nur den Signing-Key kannte, während agent-env separat den Agent-Key lud) - agents/README.md — Design-Doc, verschoben aus dem ai-Repo zum Code .env.agents bleibt rein deklarativ, weil op run --env-file die Datei nur parst und keinen Code ausführt — daher die Zweiteilung. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012aD7fG6BpN1HchyHeNXZb4
18 lines
837 B
Bash
18 lines
837 B
Bash
# Agent-Sessions (Claude, OpenCode): Secrets aus 1Password und SSH-Identität
|
|
# des Agent-Users. Wird von dotfiles/.zshrc gesourced.
|
|
# Architektur und Begründungen: agents/README.md.
|
|
|
|
# Git-Signing und ssh-add greifen über SSH_AUTH_SOCK auf den geteilten
|
|
# Maschinen-Agent zu — interaktiv wie in Agent-Sessions. Fürs interaktive SSH
|
|
# ist die Variable irrelevant, weil ~/.ssh/config IdentityAgent explizit setzt
|
|
# (Haupt-Key via 1Password, Agent-User via diesem Socket).
|
|
export SSH_AUTH_SOCK="$HOME/.ssh/isac-agent.sock"
|
|
|
|
agent-env() {
|
|
# Agent + beide Maschinen-Keys sicherstellen; der op-read darin teilt sich
|
|
# die 1Password-Autorisierung mit dem op-run unten, also ein Prompt.
|
|
ensure-machine-agent || return 1
|
|
|
|
op run --account WHZOJQOJPZHTFPJC6JZAOCUCBI \
|
|
--env-file ~/.env.agents --no-masking -- "$@"
|
|
}
|