which 는 GUI 앱이 볼 PATH 를 안 알려준다
Paseo 설치 중 클로드 코드 경로가 임시 폴더로 잡혔다. which 의 답과 앱이 볼 답은 두 겹으로 달랐다.
터미널에서 which claude 를 치면 멀쩡히 경로가 나온다. 그런데 도구가 클로드 코드를 못 찾는다거나, 이상한 경로를 잡는다. 이 상황에서 which 의 답을 근거로 삼으면 진단이 반쯤 틀린다.
2026-08-09에 Paseo(코딩 에이전트를 여러 개 굴리는 관리 도구) v0.3.0 을 맥에 깔았다. 설치 직후 paseo daemon status 로 프로바이더 탐지 결과를 봤다.
Claude /var/folders/zc/…/T/cmux-cli-shims/AF7A5789-…/claude (2.1.226)
Codex /var/folders/zc/…/T/cmux-cli-shims/AF7A5789-…/codex (--version failed)
/var/folders/…/T/ 는 맥 임시 폴더다. cmux-cli-shims 는 내가 쓰는 터미널 도구(cmux)가 세션마다 UUID 폴더를 파서 심어두는 임시 실행 파일이고, 세션이 끝나면 사라진다.
진짜 설치본은 따로 있었다.
/Users/danny/.local/bin/claude -> /Users/danny/.local/share/claude/versions/2.1.226
두 겹이 겹쳐 있었다
처음엔 그냥 넘어갈 뻔했다. 터미널에서 which claude 를 치면 나오니까 「깔려 있고 경로도 잡히는데 뭐가 문제야」로 읽힌다.
그런데 겹친 게 둘이었다.
첫째, 지금 이 터미널 PATH 1순위가 cmux 가 심은 임시 경로였다. 그래서 which 가 알려준 건 내 컴퓨터의 사실이 아니라 이 창의 사실이었다.
둘째, 로그인 셸 PATH 를 직접 찍어봤다.
/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:
/usr/bin:/bin:/usr/sbin:/sbin:…
~/.local/bin 이 없다. 독에서 켠 GUI 앱은 어느 터미널 PATH 도 안 받고 로그인 PATH 를 받는다. 내 .zshrc 가 ~/.local/bin 을 넣어주고 있어도 그건 셸이 켜질 때 일어나는 일이라, Finder 가 띄운 앱에는 안 닿는다.
즉 which 의 답과 앱이 볼 답이 두 겹으로 달랐다. 하나만 알았어도 진단이 반쯤 틀렸을 것이다.
당장은 아무 증상도 없었다. 내가 터미널에서 데몬을 띄워서 탐지가 됐기 때문이다. 깨지는 건 나중이다 — cmux 세션이 끝나 임시 폴더가 사라진 뒤, 또는 앱을 독에서 켠 뒤. 「지금 되니까 된 거다」가 제일 위험한 자리였다.
절대경로를 박고, 한 번 돌려봤다
~/.paseo/config.json 에 경로를 절대경로로 못 박았다.
"agents": {
"providers": {
"claude": { "command": ["/Users/danny/.local/bin/claude"] }
}
}
데몬을 다시 띄우니 탐지가 Claude available 로 바뀌었다. 여기서 끝내지 않고 실제로 에이전트를 하나 돌려 파일을 읽고 답하는 것까지 확인했다. 상태 문자열만 보고 끝내지 않은 건, 바로 그 상태 문자열이 깨진 codex 를 available 이라고 말하고 있었기 때문이다.
그 codex 는 절대경로를 박아도 안 됐다. 이유가 달랐다.
Error: spawn …/@openai/codex-darwin-arm64/vendor/aarch64-apple-darwin/codex ENOENT
npm 패키지는 있는데 그 안에 들어 있어야 할 실제 실행 파일이 없다. PATH 문제가 아니라 설치가 깨진 것이다. 둘 다 「경로가 이상하다」로 보였는데 원인이 갈렸고, 한 번 실제로 돌려본 게 그 둘을 갈랐다.
남는 규칙 한 줄
터미널에서 되는 걸 GUI 앱이 쓸 거라고 가정하지 않는다. 확인하는 법은 which 가 아니라 로그인 PATH 를 직접 찍어보는 것이고, 안 들어 있으면 앱 설정에 절대경로를 박는다.
그리고 도구가 스스로 「사용 가능」이라고 말하면, 한 번 시켜보고 나서 믿는다.