macOS 권한 (TCC)
macOS 권한 부여는 취약합니다. TCC는 권한 부여를 앱의 코드 서명, 번들 식별자, 디스크 경로와 연결합니다. 이 중 하나라도 변경되면, macOS는 앱을 새로운 것으로 취급하고 프롬프트를 삭제하거나 숨길 수 있습니다.
안정적인 권한을 위한 요구사항
- 동일한 경로: 고정된 위치에서 앱을 실행합니다 (OpenClaw의 경우 dist/OpenClaw.app).
- 동일한 번들 식별자: 번들 ID를 변경하면 새로운 권한 ID가 생성됩니다.
- 서명된 앱: 서명되지 않았거나 ad-hoc 서명된 빌드는 권한을 유지하지 않습니다.
- 일관된 서명: 재빌드 시에도 서명이 안정적으로 유지되도록 실제 Apple Development 또는 Developer ID 인증서를 사용합니다.
Ad-hoc 서명은 매 빌드마다 새로운 ID를 생성합니다. macOS는 이전 부여를 잊고, 오래된 항목이 지워질 때까지 프롬프트가 완전히 사라질 수 있습니다.
프롬프트가 사라질 때 복구 체크리스트
- 앱을 종료합니다.
- 시스템 설정 -> 개인정보 보호 및 보안에서 앱 항목을 제거합니다.
- 동일한 경로에서 앱을 다시 시작하고 권한을 다시 부여합니다.
- 프롬프트가 여전히 나타나지 않으면, tccutil로 TCC 항목을 재설정하고 다시 시도합니다.
- 일부 권한은 전체 macOS 재시작 후에만 다시 나타납니다.
예시 재설정 (필요에 따라 번들 ID 교체):
sudo tccutil reset Accessibility bot.molt.mac
sudo tccutil reset ScreenCapture bot.molt.mac
sudo tccutil reset AppleEvents
권한을 테스트하는 경우, 항상 실제 인증서로 서명하세요. Ad-hoc 빌드는 권한이 중요하지 않은 빠른 로컬 실행에만 허용됩니다.