"넌 명령을 'Mac 에서' 돌리는 게 아냐. 문을 통해 돌리는 거고, 문마다 다른 열쇠 묶음을 건네."
기계 하나, 문 여러 개
Mac 을 고정된 힘 묶음을 가진 하나로 그리는 건 자연스러워. 할 수 있는 걸 할 수 있지. 근데 같은 기계가 아주 다른 여러 envelope 을 통해 닿아. 물리 화면의 interactive login, SSH session, launchd daemon, WebUI assistant, 위임된 coding agent. 각각이 같은 상자로 가는 문이고, 문마다 다른 열쇠고리를 건네.
문마다 뭐가 달라지나
차이가 딱 진짜 작업에 중요한 것들이야. login Keychain 을 읽을 수 있나. approval dialog 를 띄울 live GUI session 이 있나. non-interactive sudo 가 있나. 승인할 사람이 있나. 작업이 reboot 를 버티나. SSH session 은 GUI session 이 없어. launchd daemon 은 login Keychain 이 없고. interactive login 만 graphical prompt 를 띄워. 같은 Mac 인데 capability 는 천지 차이야.
이게 자꾸 발목 잡는 이유
고전적 실패가 이래. step 이 네가 Terminal 에서 돌릴 땐 완벽한데, launchd 아래 스케줄하거나 SSH 로 쏘면 실패해. 명령이 틀려서가 아냐. 새 envelope 이 그 명령이 조용히 기대던 credential 에 못 닿아서야. 명령은 안 바뀌었어. 문이 바뀌었지.
맞는 질문
그래서 이 기계는 X 할 수 있어? 는 틀린 질문이야. 단일 답이 없어. 맞는 질문은 이 기계의 이 envelope 은 X 할 수 있어? 야. capability 는 뒤의 상자가 아니라 네가 들어온 문이랑 같이 다니니까.