aboutsummaryrefslogtreecommitdiff
path: root/assets/outbox/2026-05-22-archangel-ssh-auth-sock-finalize-handoff.org
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-05-23 03:44:35 -0500
committerCraig Jennings <c@cjennings.net>2026-05-23 03:44:35 -0500
commit17127fea658ddb1d5d6cbd355bfb5894885e7b86 (patch)
tree6cab56f62c7784f7190bd81b2582c4afacdaf7b4 /assets/outbox/2026-05-22-archangel-ssh-auth-sock-finalize-handoff.org
parenteb55f2274e93f7f4c5be36e04ec70cd0f9f40efe (diff)
downloadarchsetup-17127fea658ddb1d5d6cbd355bfb5894885e7b86.tar.gz
archsetup-17127fea658ddb1d5d6cbd355bfb5894885e7b86.zip
chore: log dotfiles-separation progress and file processed handoffs
Diffstat (limited to 'assets/outbox/2026-05-22-archangel-ssh-auth-sock-finalize-handoff.org')
-rw-r--r--assets/outbox/2026-05-22-archangel-ssh-auth-sock-finalize-handoff.org37
1 files changed, 37 insertions, 0 deletions
diff --git a/assets/outbox/2026-05-22-archangel-ssh-auth-sock-finalize-handoff.org b/assets/outbox/2026-05-22-archangel-ssh-auth-sock-finalize-handoff.org
new file mode 100644
index 0000000..5a090b8
--- /dev/null
+++ b/assets/outbox/2026-05-22-archangel-ssh-auth-sock-finalize-handoff.org
@@ -0,0 +1,37 @@
+#+TITLE: Finalize the machine-wide SSH_AUTH_SOCK fix (from archangel)
+#+DATE: 2026-05-22
+
+* Why this is here
+
+A machine-wide =SSH_AUTH_SOCK= change was started from an *archangel* session and lives in archsetup's =common= stow package, still uncommitted. The goal: every shell and session on a box — login shells, GUI apps, cron, and Claude's non-interactive Bash-tool shells — reaches gpg-agent for SSH keys with no per-script effort, so =ssh= / =ssh-add= to external hosts (e.g. truenas) work anywhere. gpg-agent already has =enable-ssh-support= (per-DE =gpg-agent.conf=); this just points =SSH_AUTH_SOCK= at its fixed socket.
+
+* Current uncommitted state (dotfiles/common)
+
+- =.config/environment.d/envvars.conf= — added =SSH_AUTH_SOCK=${XDG_RUNTIME_DIR}/gnupg/S.gpg-agent.ssh= (modified, tracked).
+- =.zshenv= — *new file*, exports the same (untracked).
+- =~/.zshenv= was symlinked into the stow tree this session to activate it immediately; confirm stow owns it on the next =make restow=.
+
+* The decision to make: one mechanism or two
+
+- *1a — environment.d only.* Matches archsetup's existing convention (env vars already live in envvars.conf), one clean mechanism, no new dotfile type. Drop the =.zshenv=.
+- *1b — environment.d + .zshenv.* Belt-and-suspenders: environment.d covers the systemd/GUI session, =.zshenv= guarantees *every* zsh including non-interactive ones (cron, tooling). Cost: a =.zshenv= convention the repo didn't have, and apparent redundancy.
+
+** How to decide (empirically — couldn't be isolated from the archangel session)
+
+The original problem was that *non-interactive* shells (Claude's Bash tool) didn't inherit =SSH_AUTH_SOCK=. The =.zshenv= path was *verified* to fix that; =environment.d=-alone was *not* isolated, because testing it needs the change committed/stowed and a fresh login.
+
+After =make restow= + re-login, in a *non-interactive* shell check whether environment.d alone propagated:
+#+begin_src bash
+zsh -fc 'echo "${SSH_AUTH_SOCK:-UNSET}"' # -f skips .zshenv, so this shows environment.d-only reach
+#+end_src
+- Prints the gpg-agent socket → environment.d reaches non-interactive shells → go *1a*, delete =dotfiles/common/.zshenv= and the =~/.zshenv= symlink.
+- Prints =UNSET= → environment.d doesn't reach them → keep *1b*.
+
+* Steps
+
+1. =make restow <de>= so stow owns the symlink(s).
+2. Re-login (environment.d reloads at session start).
+3. Run the reachability check above; pick 1a or 1b.
+4. Commit the dotfile change(s). Conventional-commit, no AI attribution. Suggested subject: =feat(dotfiles): route SSH_AUTH_SOCK through gpg-agent=.
+
+Nothing personal-tooling/.ai is referenced in the dotfiles, so they're clean to commit as-is.