2026-04-29 OpenClaw, macOS TCC, 전체 디스크 접근, 헤드리스로 임대한 클라우드 Mac에서의 파일 도구 실패 (HK / JP / KR / SG / US)
OpenClaw 에이전트는 LLM 추론과 로컬 파일 도구를 자주 결합합니다. 디스크에서 프롬프트를 읽고, 트랜스크립트를 쓰고, 스크린샷을 첨부하고, 프로젝트 폴더를 순회합니다. 노트북에서는 보호된 위치를 처음 건드리는 바이너리에 대해 macOS가 Transparency, Consent, and Control(TCC) 대화상자를 표시합니다. 반면 SSH로만 접속하는 헤드리스로 임대한 Mac mini M4—MacXCode가 싱가포르, 도쿄, 버지니아에서 기본으로 쓰는 패턴—에서는 그 대화상자가 터미널 세션에 뜨지 않습니다. 그 결과 순진한 도구는 설명 없는 Operation not permitted로 실패하고 로그는 OpenClaw나 모델 탓을 하지 않습니다. 이 2026-04-29 가이드는 진짜 POSIX 권한 버그와 TCC 거부를 분리하고, 데스크톱·문서 샌드박스를 피하는 작업 공간 설계, 프라이버시 승인을 한 번만 부여하기 위해 VNC가 정당한 경우, 감사 흔적을 구조화 로깅과 launchd 시크릿에 맞춰 보안 검토자에게 일관된 이야기를 제공하는 방법을 정리합니다.
SSH 자동화가 사용자 대신「허용」을 눌러 줄 수 없는 이유
Apple의 프라이버시 데이터베이스는 승인을 실행 파일 경로, 번들 식별자, 때로는 상위 코드 서명에 묶습니다. 대화형 동의 시트는 같은 사용자가 GUI로 로그인해 시각적으로 승인한다고 가정합니다. 원격 자동화에는 미리 프로비저닝된 프로파일(MDM·선언적 관리), 운영자가 VNC로 수행하는 일회성 GUI 온보딩, 혹은 보호 디렉터리를 아예 건드리지 않는 아키텍처 제약이 필요합니다. 매주 되받아치는 오해 세 가지는 다음과 같습니다.
- 「sudo가 TCC를 고친다」—승격은 일부 POSIX 검사를 우회하지만 GUI 샌드박스 경로의 사용자 승인 파일 접근은 별개입니다. 공유 임대 호스트에서는 무제한 sudo도 드뭅니다.
- 「게이트키퍼를 끄면 된다」—앱별 TCC와 무관하며 멀티테넌트 서버에서는 허용할 수 없습니다.
- 「OpenClaw가 부족한 권한을 메워야 한다」—런타임이 macOS 정책을 안전하게 덮어쓸 수 없고, 바꿀 수 있는 것은 배포 레이아웃뿐입니다.
launchd가 쓰는 서비스 계정에서는 실패하면 프롬프트를 다시 쓰기 전에 TCC 불일치를 의심하세요.
증상 분류: errno, 프라이버시 거부, 샌드박스
로그에 UNIX errno와 상위 도구 메시지를 함께 남기도록 훈련하세요. POSIX EPERM은 여러 범주에 나타나므로 경로 접두어와 상관시킵니다.
~/Desktop/~/Documents—샌드박스 밖 바이너리에 명시적 프라이버시 부여가 필요한 전형적 위치입니다.- 다른 사용자 홈—대개 POSIX 문제이지만 Finder 브리지 API면 TCC도 확인하세요.
- 이동식 볼륨—APFS 권한과 디스크 전체 스캔 시 전체 디스크 접근이 겹칩니다.
/Users/*/Library/Mail, 타임머신 볼륨, Mail 샌드박스 경로 등이 맞으면 errno 확정 전에도 tcc_hint=possible을 내보내세요.Linux 에이전트에서 옮겨온 팀은 넉넉한 umask나 생명주기 정책 없이 /tmp에 쓰는 습관을 가져오기 쉽습니다. /tmp는 많은 TCC 함정을 피하지만 작업 ID별 네임스페이스가 없으면 정리 작업이 실행 중 OpenClaw 스크래치를 지울 수 있습니다. 반대로 macOS 노트북에 익숙한 엔지니어는 심볼릭 링크로 iCloud 동기 폴더를 서버에 복제해 헤드리스 데몬이 만지면 안 되는 CloudDocs 보호를 물려받기도 합니다.
기업 서브넷의 EDR을 관리하는 팀과도 조율하세요. 모든 파일을 스캔하는 에이전트는 OpenClaw 읽기와 경합해 모델 지연으로 오인될 지연을 키울 수 있습니다—그래서 구조화 로그에서 파일 재시도를 LLM 지연 지표와 분리 태깅하고 이그레스 복원력과 함께 논의해야 합니다.
권한 매트릭스: 표면·완화·운용 비용
| 시나리오 | 완화 | 운용 비용 |
|---|---|---|
/Volumes/Data/workspace 아래 저장소 읽기 |
워크스페이스를 TCC 비보호 볼륨에 두고 서비스 사용자에 POSIX ACL 부여 | 낮음—MacXCode 권장 레이아웃 |
| 사용자 다운로드 순회 | SFTP 작업으로 공유 스테이징으로 옮김 | 중간—습관 전환 필요 |
| Finder 자동 제어 | 터미널→Finder 자동화 허용 또는 AppleEvents 회피 | 높음—헤드리스에서 깨지기 쉬움 |
| 전체 디스크 백신식 스캔 | 명시적 FDA 항목+근거 문서화 | 높음—보안 검토 |
행은 분기마다 검토하세요. Apple은 범주를 세분화할 수 있으며 예전「전체 디스크 접근」이 향후 macOS에서 더 잘게 나뉠 수 있습니다. 내부 위키 행 ID는 Apple 라벨이 바뀌어도 고정해 과거 인시던트 티켓 검색성을 유지하세요.
임대 노드에서의 권장 데이터 배치
에이전트 워크스페이스는 자동화 전용 /Volumes/... 또는 /srv/... 마운트 아래에 두고 사람의 다운로드와 섞지 마세요. 고객별 Git 클론을 경로 버킷으로 나누어 chmod 경계가 컴플라이언스 팩과 맞도록 합니다. 큰 아티팩트는 MacXCode 노드가 노출하는 1–2TB SSD 풀에 두어 무거운 임베딩이 시스템 스냅샷과 경합하지 않게 하세요.
OpenClaw가 스크린샷을 필요로 하면 데스크톱에 떨구는 screencapture 기본값에 의존하지 말고 승인된 폴더에 쓰는 프로그래밍 방식 렌더링 API를 선호하세요—데스크톱은 실행이 간헐적으로 성공해도 추가 프라이버시 감사를 유발합니다.
복구 사다리(가장 낮고 안전한 단계에서 멈춤)
- 경로 이동—작업 입출력을 DerivedData 분리에서 다룬 CI 캐시와 공유하는 POSIX 관리 디렉터리로 옮깁니다.
- ACL 수정—서비스 사용자에 읽기·실행을 주되 전 세계 읽기 가능한 비밀은 만들지 마세요.
- 바이너리 안정성—Node/OpenClaw 경로를 일정하게 유지해 기존 TCC 부여와 일치시키세요(심볼릭 링크 업그레이드는 신중히).
- GUI 확인 창—이해관계자와 VNC를 예약해 프롬프트를 한 번 승인합니다.
- MDM 프로파일—엔터프라이즈 함대만. 프라이버시 페이로드 ID를 조율합니다.
- 정책 예외 에스컬레이션—더 좁은 범위로는 안 되는 이유를 감사·규제 관점에서 문서화합니다.
3단계와 4단계 사이에서는 정책이 허용하면 VNC 운영자가 승인을 클릭하는 화면 녹화를 남기세요—감사인은 셸에 자격 증명을 넣지 않았다는 증거를 선호합니다. 4단계와 5단계 사이에서는 프로덕션 리스 풀을 건드리기 전 스테이징 Mac mini에서 MDM 페이로드를 검증해 야간 빌드를 망가뜨리지 마세요.
일부 스택은 Xcode UI 테스트용 인간 계정과 OpenClaw를 같이 쓰는데 대화 세션과 데몬을 섞으면 먼저 요청을 낸 바이너리에 승인이 붙어 TCC가 복잡해집니다. 환경(dev/staging/prod)마다 전용 서비스 계정을 분리해 SOC 검토에서 프라이버시 부여를 설명하기 쉽게 하세요.
구조화 로깅 연계와 상관 ID
JSON 로그에 tcc_suspected, path_root, tool_name을 추가해 Grafana에서 LLM 재시도와 디스크 실패를 분리하세요—LLM HTTP 예산 패턴은 재사용하되 디스크 거부는 백오프 없는 클라이언트 오류로 취급합니다. 레디니스 프로브 게이트웨이 상태와 묶어 쿠버네티스 스타일 오케스트레이터가 파일 시스템 권한 부족만으로 포드를 재시작하지 않게 하세요.
사후 분석에서는 정책이 허용하는 범위에서 tccutil 목록 스냅샷을 찍고 비밀은 붙이지 말며 실패 시작 시 어떤 Node 바이너리가 권한을 가졌는지 해시 지문을 첨부하세요.
플랫폼 운영자 FAQ
| 질문 | 답변(2026-04-29) |
|---|---|
| Rosetta가 TCC에 영향을 주나요? | 아키텍처는 경로 매핑에 영향—의도적으로 x86 브리지를 쓰지 않는 한 arm64 Node를 유지해 승인 전제를 바꾸지 마세요. |
| 워크스페이스를 chmod 0777 해도 되나요? | 피하세요. 그룹 ACL을 쓰고 전 세계 쓰기 가능 디렉터리는 SOC2류 기준에서도 문제입니다. |
내부용 선택적 세 번째 FAQ: 클라우드 제공업체가 엔드포인트 에이전트 관련 커널 확장을 허용하는지—OpenClaw 자체와는 무관하지만 통합 스택을 평가하는 파트너가 자주 묻습니다.
베어메탈 Mac mini M4 노드가 권한 거버넌스를 단순화하는 이유
가상화 macOS는 프라이버시 프롬프트에 쓰이는 장치 식별자를 흐리게 할 때가 있습니다. 홍콩, 도쿄, 서울, 싱가포르, 그리고 미국의 물리 Mac mini M4 호스트는 실행 경로를 안정된 하드웨어 UUID 맥락에 맞춰 MDM과 수동 승인을 재빌드 후에도 재현하기 쉽게 합니다. 큰 통합 메모리로 OpenClaw 게이트웨이와 CPU 무거운 임베딩을 함께 두면서 TCC 캐시를 헷갈리게 하는 마운트 네임스페이스를 가로지르는 바이너리 교체를 피할 수 있습니다. 디스크 구성이 지루할수록—전용 볼륨, 명시적 서비스 계정, 문서화된 chmod—AI 스택은 고객 프롬프트에 사이클을 쓰고 조용한 macOS 거부에 쓰지 않습니다. 지역별 가격과 연결 가이드로 호스팅 접착제를 다시 발명하지 않고 이 구조를 복제하세요.