퇴사하고 AI로 회사를 만드는 중이라 손이 하나뿐이고, 그래서 관광객용 한국 정보 사이트(koreaverified.com)의 하루 한 편은 전부 기계에 맡겨 놓았다. 13시에 그 발행을 시키고 다른 일로 넘어갔다.
로그에 에러가 없었다
실패한 게 아니었다. 승인을 기다리다 멈춰 있었다.
This Bash command contains multiple operations.
The following part requires approval: head -40 && echo "=== FIELD NOTES ==="
비대화형으로 띄운 세션이라 이 질문을 받을 사람이 없다. 대답이 없으면 다음 단계로 못 간다.
막힌 게 그 한 줄만은 아니었다. 저녁에 띄운 다른 비대화형 세션에서는 node scripts/*.mjs 호출과 npm run build, wrangler deploy, 그리고 WebFetch까지 네 종류가 전부 This command requires approval을 돌려받았다. 그 세션에서는 발행에 쓸 도구가 하나도 없었다.
이어붙인 줄이 문제라고 읽었다
에러 첫 문장이 “multiple operations”다. 막힌 명령은 cat으로 파일을 읽고, head로 자르고, node -e로 다른 JSON을 꺼내는 세 토막을 &&로 이은 한 줄이었다. 권한 판정이 줄을 조각내 보다가 이어붙인 모양 자체를 위험하다고 본 거라고 생각했다. 그러면 고치는 법도 뻔하다. 줄을 나눠서 따로 돌리면 된다.
단독 한 줄도 같은 답을 받았다
그 다음에 node -e 한 줄을 단독으로 돌렸다. 돌아온 건 This command requires approval 한 줄이었다. “multiple operations” 문장은 없었다. 이어붙이기는 범인이 아니다.
두 줄에 공통으로 있던 건 node -e다. 허용 목록을 직접 열어 대조하지는 못했으니 원인은 모른다. 재현 조건만 적어 둔다 — 비대화형(-p) 세션, &&로 이은 Bash 한 줄, 그 안에 node -e.
지목된 자리는 범인의 자리가 아니다
The following part requires approval: 뒤에 붙어 나오는 것은 승인이 필요한 명령 하나가 아니라 그 명령을 포함한 뒤쪽 전체다. 내 경우 그 자리 맨 앞에 서 있던 건 파일 앞 40줄을 자르는 명령이었고, 문장을 곧이곧대로 읽으면 앞 40줄을 잘라 보는 일이 승인을 받아야 하는 위험한 작업이라는 결론에 닿는다. 여기서 시간을 썼다.
무인으로 도는 스크립트가 조용히 멈췄다면, 에러가 지목한 조각을 통째로 다시 돌리지 말고 그 안에서 승인이 필요할 만한 명령 하나만 떼어 단독으로 돌려보세요. 같은 문구가 그대로 나오면 이어붙이기는 무죄다.
이날 이 사이트에서 손댄 글은 인천공항에서 서울로 가는 편, K-패스 편, 외국인 KTX 예매 편 셋뿐이었다.