What happens #
On a Mac where PATH has no python3 from Homebrew (only python3.12/3.13), the daemon picks Apple's /usr/bin/python3. The first kernel or ssh helper then pops a macOS dialog:
The “albedo-ssh” command requires the command line developer tools. Would you like to install the tools now?
Nothing albedo does requires the command line tools, and installing them does not fix it. If the dialog is dismissed, the helper never runs: kernels do not start and host probes hang.
Why #
albedo_python:local_paths/0isos:find_executable("python3"), so with no Homebrewpython3it resolves to/usr/bin/python3, Apple's stub (3.9 here, below the 3.11 the tree requires).albedo_process_name:python/2starts helpers through$ALBEDO_HOME/bin/albedo-<role>symlinks, so an ssh probe runs asalbedo-sshand a kernel asalbedo-kernel.- Apple's stub looks its toolchain up by the invoked name. Called
albedo-ssh, it runsxcode-select -find albedo-ssh, fails, and asks the user to install the command line developer tools — a question albedo cannot answer and the person does not need.
Reproduce #
Without touching the daemon:
ln -sf /usr/bin/python3 /tmp/albedo-ssh-probe
/tmp/albedo-ssh-probe -c 'print(1)'
xcode-select: Failed to locate 'albedo-ssh-probe', requesting installation of command line developer tools.
Through albedo: on such a machine run the Go e2e suite; TestTUIIdleBackgroundJobKeepsItsMarkerWithoutAFace and TestLateChatClientRestoresNormalizedToolProgress fail because the kernel never starts, and a host-probe test (cli/test/e2e/tui_folders_test.go) leaves the dialog on screen.
Expected #
local_paths/0 should refuse an interpreter older than the tree requires with its own message ({error, {unavailable, …}} naming the version it found), and/or try python3.12/python3.11 before falling back to python3. Asking macOS to install developer tools is the wrong question, and its answer still leaves 3.9 selected.
Evidence #
On this machine, with python3 -> /opt/homebrew/bin/python3.12 on PATH and no other change, both failing tests pass:
ok albedo/cli/test/e2e 8.141s
Only the interpreter resolution changed; the tests and the daemon tree were untouched.
Impact #
Any Mac with Xcode (or CLT) but without a Homebrew python3 alias — a normal setup after brew install python@3.12 — hits a modal system dialog on the first kernel or ssh helper spawn. Dismissing it leaves albedo unable to run a kernel, with nothing in the transcript saying why.