]> vilimpoc.org git repositories - dotfiles/commit
dotfiles: point git at the Windows SSH client, split out the non-elevated half
authorMax Vilimpoc <max@vilimpoc.org>
Wed, 26 Aug 2026 10:33:18 +0000 (12:33 +0200)
committerMax Vilimpoc <max@vilimpoc.org>
Wed, 26 Aug 2026 10:33:18 +0000 (12:33 +0200)
commit2e281421e8cccce19bc1b43bb5bdd7d877870b4e
tree319432fa73bd2ca55a27762e579b53b73ed936ea
parent452f525c182a835867d0f229c821c41118d15808
dotfiles: point git at the Windows SSH client, split out the non-elevated half

git config core.sshCommand -> %WINDIR%/System32/OpenSSH/ssh.exe, so git shares
the Windows ssh-agent that the elevated half enables. Git for Windows otherwise
prefers its bundled MSYS2 ssh.exe, which cannot reach that agent (Win32-OpenSSH
publishes it on a named pipe the MSYS2 build does not speak), leaving keys added
with `ssh-add` invisible to git.

The .bat already carried a bare version of this line, but it was inert on a fresh
box: `winget install Git.Git` runs a few lines above it, so that cmd session's
PATH predates the install and `git config` only printed "not recognized" before
carrying on. Resolve git.exe explicitly (PATH, then the standard install roots)
before configuring anything.

Move the PowerShell-driven per-user work - BinSkim, the WinMerge PATH edit, and
the git config - out of the .bat into setup-windows-no-uac.ps1, mirroring
setup-windows-with-uac.ps1. It is standalone-runnable, takes -Skip to re-run a
subset, runs each step independently (a failure warns, the rest still run, exit 1
if any did), and warns when run elevated, since every step writes per-user state
that would otherwise land in the administrator's profile. The .bat is left as
winget installs plus two script calls.

Two behaviour changes while moving that code:

- The git identity is empty strings rather than PLACEHOLDER_NAME, and is skipped
  when unset instead of being written. The placeholder appeared both in the
  assignment and in the check that guarded it, so a find/replace over the name -
  exactly what the README told you to do - silently disabled the guard.
- The BinSkim version marker is written on the up-to-date path too. Previously it
  was written only after a download, so an install predating the marker re-derived
  its version from BinSkim.exe's ProductVersion on every run.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019avXmzifMt4wJnJzQDUJCU
README.md
setup-windows-no-uac.ps1 [new file with mode: 0644]
setup-windows.bat