← 모든 글

macOS 전체 디스크 접근 권한과 AI 에이전트: Apple이 말한 것

여러 가이드에서: Claude Code & Codex CLI

Apple은 전체 디스크 접근 권한에 대해 무엇을 말했고, 그것은 AI 에이전트에게 어떤 의미입니까? 2026년 10월 2일, Apple은 “Updates to Full Disk Access in macOS”라는 짧은 개발자 뉴스를 게시했습니다. 여기에는 전체 디스크 접근 권한(Full Disk Access)이 사용자의 개인 데이터를 보호하는 통제를 “largely sidesteps”(대부분 우회한다)라는 점, “Some developers are using Full Disk Access in ways that could put users at risk”(일부 개발자는 사용자를 위험에 빠뜨릴 수 있는 방식으로 전체 디스크 접근 권한을 쓰고 있다)라는 내용, 그리고 “Going forward, we will introduce additional controls to ensure that users who genuinely wish to grant an app this extraordinary level of access can only do so with very explicit user action”(앞으로 앱에 이 정도로 예외적인 수준의 접근을 정말로 허용하려는 사용자가 매우 명시적인 사용자 동작을 통해서만 그렇게 할 수 있도록 추가 통제를 도입하겠다)라는 내용이 담겨 있습니다. 제시된 이유는 “As AI agents become increasingly capable and autonomous, the risks associated with this level of access will grow substantially”(AI 에이전트가 점점 더 유능하고 자율적이 되면서, 이 수준의 접근에 따르는 위험은 크게 늘어날 것이다)입니다.1 macOS 버전도, 날짜도, 메커니즘도, 앱 이름도 하나도 밝히지 않았습니다. Mac에서 에이전트를 실행하는 사람에게 오늘 중요한 것은 에이전트가 어떻게 이 접근 권한을 얻게 되는가입니다. 명령줄 에이전트는 자신을 실행한 터미널 아래에서 동작합니다. 제가 읽은 Apple 문서에는 이에 대한 일반 규칙이 없지만, Apple의 eslogger man 페이지에는 이 도구를 “from an app, including Terminal.app or a third-party terminal emulator, requires the respective app to be authorized for Full Disk Access.”(Terminal.app이나 서드파티 터미널 에뮬레이터를 포함한 앱에서 실행하려면 해당 앱이 전체 디스크 접근 권한을 승인받아야 한다)라고 적혀 있습니다.2 Apple의 지원 엔지니어는 포럼 게시물에서 이를 “The tool’s responsible code is Terminal.”(그 도구의 책임 코드는 Terminal이다)이라고 표현합니다.3 터미널에 전체 디스크 접근 권한을 주면, 그 안에서 시작하는 모든 에이전트가 터미널이 읽을 수 있는 것을 읽을 수 있습니다. Apple이 나열한 바에 따르면 Mail, Messages, Safari 데이터, 그리고 Time Machine 백업입니다.4 공급업체의 샌드박스는 기본 설정으로는 이를 바꾸지 않습니다. 제 Mac에서는 전체 디스크 접근 권한이 필요한 읽기가 에이전트의 셸에서 성공했고, Codex의 read-only 샌드박스 안과 Anthropic의 샌드박스 런타임 안에서도 다시 성공했습니다. 거부된 것은 샌드박스 규칙이 바로 그 폴더를 거부했을 때와, 같은 읽기를 터미널 밖에서 실행했을 때뿐이었습니다.5

TL;DR

  • Apple이 말한 것. 2026년 10월 2일, Apple은 개발자들에게 전체 디스크 접근 권한을 허용할 때 “very explicit user action”(매우 명시적인 사용자 동작)이 필요하도록 “will introduce additional controls”(추가 통제를 도입하겠다)라고 알렸고, 위험이 “will grow substantially”(크게 늘어날 것이다)라는 이유로 AI 에이전트를 들었습니다. 이 공지에는 버전도, 날짜도, 메커니즘도 없습니다. macOS 27.2 beta 3 릴리스 노트에도 이에 관한 줄은 없습니다. 10월 11일 기준 릴리스 피드와 릴리스 노트 색인 어디에서도 macOS 27.1 항목을 찾지 못했습니다. 피드에 실린 것은 macOS 27.0.1(9월 28일)로, 개발자용 릴리스 노트 없이 출시되었고, 그다음이 macOS 27.2 beta 3입니다. 27.2 베타 자체는 9월 16일에 시작되었습니다.16789
  • 전체 디스크 접근 권한이란. 개인정보 보호 및 보안(Privacy & Security)의 설정 하나로, 앱이 “access all files on your computer”(컴퓨터의 모든 파일에 접근)하도록 허용합니다. 여기에는 Mail, Messages, Safari, 홈의 데이터, Time Machine 백업, 그리고 “certain administrative settings for all users on this Mac”(이 Mac의 모든 사용자에 대한 특정 관리 설정)이 포함됩니다. 앱은 이를 요청하는 프롬프트를 띄울 수 없으며, 사용자가 직접 앱을 추가하거나 MDM 프로파일이 허용합니다. 제가 읽은 범위에서 Apple은 이를 세 번에 걸쳐 백업 도구와 디스크 도구에 연결했습니다. WWDC19, WWDC23, 그리고 10월 2일입니다.410211121
  • 에이전트가 얻는 방법. 경로는 두 가지입니다. 명령줄 에이전트(Claude Code, Codex CLI, Gemini CLI, Hermes Agent, Aider)는 자신이 실행되는 앱을 기준으로 검사되므로, 전체 디스크 접근 권한을 가진 터미널은 그 권한을 에이전트에게 넘겨줍니다. Apple은 이를 도구별로 man 페이지에서, 그리고 포럼의 지원 엔지니어를 통해 밝힐 뿐, 문서화된 일반 규칙으로는 한 번도 밝힌 적이 없습니다. 데스크톱 에이전트 앱은 자기 항목을 따로 가집니다. 그리고 두 에이전트 공급업체, 즉 Hermes의 Nous Research와 OpenClaw는 에이전트가 Messages를 읽을 수 있도록 전체 디스크 접근 권한을 주라고 사용자에게 안내합니다.231314
  • 샌드박스가 하는 일. Claude Code, Codex, Gemini CLI, Cursor의 Seatbelt 샌드박스는 쓰기를 제한하고, Gemini CLI의 기본 프로파일을 제외한 모두가 네트워크도 제한합니다. 기본 읽기 범위는 넓습니다. 제 Mac에서 실행한 두 샌드박스는 모두 전체 디스크 접근 권한 허용을 그대로 두었고, 필수 접근 통제에 대한 Apple 지원 엔지니어의 설명에 따르면 어떤 샌드박스도 허용을 추가할 수 없습니다. Claude Code의 샌드박스는 기본적으로 꺼져 있고, Codex의 샌드박스는 켜져 있습니다. 제 Mac에서는 보호된 읽기가 Codex의 read-only 샌드박스도, Anthropic의 샌드박스 런타임도 통과했습니다. 샌드박스 안에서 읽기가 멈춘 것은 제가 그 폴더를 이름으로 지정해 거부했을 때뿐이었습니다.151617185
  • 제 Mac에서는. 전체 디스크 접근 권한 목록에는 75개 행이 있습니다. 세 개의 터미널, ChatGPT·Cursor·Xcode 앱, 버전 번호가 붙은 Claude Code 바이너리 30개, node와 네 개의 Python 인터프리터, SSH 서버 항목 등입니다. Ghostty 안의 에이전트 셸은 실제로 작동하는 접근 권한을 가졌고, 위에 터미널이 없는 launchd 작업에서 실행한 같은 읽기는 TCC가 거부했습니다.195
  • 지금 할 일. 누가 권한을 가졌는지 확인하십시오. 에이전트를 실행하는 터미널에서 권한을 빼십시오. 인터프리터에는 절대 주지 마십시오. 공급업체 샌드박스를 켜고 필요 없는 읽기를 거부하십시오. Messages를 읽는 에이전트는 별도의 macOS 사용자로 실행하거나 아예 실행하지 마십시오. 여러분의 이름으로 말하는 것에는 전송마다 승인을 유지하십시오. 아래 각 단계에 출처와 비용을 함께 적었습니다.420152122
  • 무엇이 바뀔 수 있는가. Apple의 문구는 더 엄격한 허용 절차, 더 좁은 범위, 한 앱에서 그 앱이 실행하는 프로그램으로 넘어가는 허용의 다른 처리, 그리고 관리 대상 Mac에 대한 변경을 모두 허용합니다. 섹션 7에서는 각각을 macOS 27과 Xcode 27에서 Apple이 직접 내놓은 인접한 변경에 비추어 읽고, 각각이 의존하는 조건을 제시합니다. 어느 것도 예측이 아닙니다.1232425

1. Apple이 10월 2일에 말한 것과 말하지 않은 것

Apple 개발자 뉴스 피드는 이 공지의 날짜를 2026년 10월 2일 금요일 09:00:19(태평양 시간)로 적었습니다. 10월 1일의 만료 예정 Developer ID 인증 기관에 관한 공지와, 10월 5일의 iPhone Duo 및 App Store 에셋 발표 사이입니다.26 공지는 두 단락입니다. 저는 10월 11일에 이를 저장하고 19분 뒤에 다시 가져왔습니다. 둥근 아포스트로피와 곧은 아포스트로피의 차이를 빼면 두 사본은 동일하므로, 두 번의 읽기 사이에 바뀐 것은 없습니다.1

첫 단락은 문제를 제시합니다. Apple은 개발자에게 “powerful APIs to build incredible capabilities into their apps for Apple products, backed by a set of controls designed to protect users’ private data”(사용자의 개인 데이터를 보호하도록 설계된 일련의 통제가 뒷받침하는, Apple 제품용 앱에 놀라운 기능을 넣을 수 있는 강력한 API)를 제공한다고 말한 뒤 이렇게 씁니다. “Full Disk Access largely sidesteps these controls in order to allow backup apps to function properly on the Mac.”(전체 디스크 접근 권한은 백업 앱이 Mac에서 제대로 작동할 수 있도록 이러한 통제를 대부분 우회한다) 다음 문장이 고발입니다. “Some developers are using Full Disk Access in ways that could put users at risk”(일부 개발자는 사용자를 위험에 빠뜨릴 수 있는 방식으로 전체 디스크 접근 권한을 쓰고 있다). 이는 “everything on their systems”(시스템의 모든 것)를 노출하는 일이며, Apple은 그 내용을 “files, mail, messages, and even browsing history”(파일, 메일, 메시지, 심지어 방문 기록)로 구체적으로 밝히고, 그것이 “without users’ full knowledge and understanding”(사용자가 충분히 알고 이해하지 못한 채) 이루어진다고 말합니다. 단락은 아무것에도 동의하지 않은 사람들 이야기로 끝납니다. “For communication apps, this can also compromise the privacy of the people users are communicating with.”(커뮤니케이션 앱의 경우, 이는 사용자가 소통하는 상대방의 개인정보까지 침해할 수 있다)1

둘째 단락은 약속과 이유입니다. 전문을 인용합니다.

“Going forward, we will introduce additional controls to ensure that users who genuinely wish to grant an app this extraordinary level of access can only do so with very explicit user action. Addressing this is critical. As AI agents become increasingly capable and autonomous, the risks associated with this level of access will grow substantially. We are committed to ensuring users clearly understand these risks before granting such access, so they can make informed decisions about their own data and privacy.”(앞으로 앱에 이 정도로 예외적인 수준의 접근을 정말로 허용하려는 사용자가 매우 명시적인 사용자 동작을 통해서만 그렇게 할 수 있도록 추가 통제를 도입하겠다. 이 문제를 해결하는 것은 매우 중요하다. AI 에이전트가 점점 더 유능하고 자율적이 되면서, 이 수준의 접근에 따르는 위험은 크게 늘어날 것이다. 사용자가 자신의 데이터와 개인정보에 대해 충분한 정보를 바탕으로 결정할 수 있도록, 그러한 접근을 허용하기 전에 이 위험을 분명히 이해하게 하는 데 힘쓰겠다)1

여기에는 천천히 읽을 가치가 있는 점이 세 가지 있습니다.

주어는 허용이지 API가 아닙니다. 약속에 쓰인 동사는 모두 사용자가 접근을 허용하는 순간에 관한 것입니다. “who genuinely wish to grant an app”(앱에 정말로 허용하기를 원하는) 사용자, “very explicit user action”(매우 명시적인 사용자 동작), 그리고 “before granting such access”(그러한 접근을 허용하기 전에) 위험을 이해하는 것. 공지 어디에도 전체 디스크 접근 권한이 다루는 범위가 줄어든다거나, 이를 가진 앱이 심사를 받는다거나, 이 권한이 사라진다는 말은 없습니다. 해석임을 밝혀 두고 말하자면, 제 해석으로는 이 공지는 스위치를 켜는 방식의 변경을 설명할 뿐, 스위치가 켜진 뒤 무엇이 열리는지에 대해서는 어느 쪽으로도 말하지 않습니다.

이유는 에이전트지만, 대상은 앱입니다. Apple은 “AI agents”(AI 에이전트)를 한 번, 위험이 “will grow substantially”(크게 늘어날 것이다)라는 이유로 언급합니다. 오늘 이 접근 권한을 오용하는 앱이 에이전트라고 말하지는 않습니다. 그 문장이 말하는 대상은 “Some developers”(일부 개발자)입니다. 또한 “an app”(앱)에 대한 허용을 통제하는 장치가 어떻게 에이전트에까지 닿는지도 말하지 않습니다. Mac에서 에이전트는 대개 앱이 아니라 앱 안에서 실행되는 명령줄 프로그램이기 때문입니다. 섹션 3이 바로 그 틈을 다룹니다.

타인에 대한 피해로 지목된 범주는 “communication apps”(커뮤니케이션 앱)입니다. Apple은 어떤 앱도, 어떤 개발자도 지목하지 않습니다. 공지가 거론하는 소프트웨어는 두 종류입니다. 이 접근 권한이 존재하는 이유로서의 백업 앱, 그리고 사용자를 넘어서는 피해, 곧 대화 상대편에 있으면서 아무것도 허용하지 않은 사람들에 대한 피해와 연결된 커뮤니케이션 앱입니다. 섹션 3에서는 Messages 연동에 전체 디스크 접근 권한이 필요하다고 문서화된 두 에이전트 공급업체를 보여 줍니다. Apple이 그중 어느 것을 염두에 두었는지는 공지에 나와 있지 않으며, 저도 그렇다고 가정하지 않습니다.

이 공지가 말하지 않는 것

빠진 것을 기준으로 읽으면, 공지에는 다음이 없습니다.

  • macOS 버전도 날짜도 없습니다. 시점을 나타내는 말은 “Going forward”(앞으로) 하나뿐입니다.
  • 메커니즘이 없습니다. 프롬프트 설계, 인타이틀먼트, API, App Review 규칙, 기기 관리 변경, 그 어느 것도 없습니다.
  • 기존 허용에 대한 언급이 없습니다. 이미 전체 디스크 접근 권한 목록에 있는 앱이 그 자리를 유지하는지, 사용자에게 다시 묻게 되는지 말하지 않습니다.
  • 관리 대상 Mac에 대한 언급이 없습니다. 지금 MDM은 전체 디스크 접근 권한을 허용할 수 있지만(섹션 2), 공지는 MDM을 언급하지 않습니다.
  • 개발자가 할 일이 없습니다. 마감일도, 문서 링크도, 앱이 바뀌어야 하는 날짜도 없습니다.

Apple이 메커니즘을 실을 만한 곳을 살펴보았습니다. 10월 11일에 읽은 macOS 릴리스 노트 색인에는 macOS 27 항목이 정확히 두 개, “macOS 27.2 Golden Gate Beta 3 Release Notes”와 “macOS 27 Golden Gate Release Notes”만 있습니다. 그 색인에서도, 같은 날 읽은 Apple 릴리스 피드에서도 macOS 27.1 항목을 찾지 못했습니다. 피드에는 macOS 27.0.1(26A434, 9월 28일 자)이 있고, 그다음이 27.2 beta 3입니다. 27.0.1 업데이트에는 개발자용 릴리스 노트 페이지가 없습니다. 그런 페이지가 쓸 주소를 시도하자 HTTP 404가 돌아왔고, 27.1과 27.1 beta 주소도 마찬가지였습니다.87 27.2 beta 3 노트(이 베타, 빌드 26B5101f는 Apple 릴리스 피드에서 10월 5일 자, 즉 공지 사흘 뒤입니다)에는 여섯 개 섹션(General, AppKit, Display Settings, Notifications, Shortcuts, StoreKit Testing in Xcode)이 있으며, 어느 것도 전체 디스크 접근 권한, TCC, 개인정보 보호 및 보안을 언급하지 않습니다. 가장 가까운 것은 대지(pasteboard) 개인정보 보호용 개발자 미리보기 기본값이 “has been removed”(제거되었다)라는 AppKit 한 줄입니다.67 공지 나흘 뒤에 발행된 Apple의 10월 개발자 뉴스레터는 iPhone Duo 제출, 랩, 문서를 다루며 전체 디스크 접근 권한이나 에이전트에 대해서는 아무 말도 하지 않습니다.27 Apple이 Privacy & Security로 분류한 WWDC26 세션 네 개도, “Secure your app: mitigate risks to agentic features”라는 제목의 세션을 포함해 전체 디스크 접근 권한을 언급하지 않습니다.2829

에이전트와 파일 접근을 다룬 Apple 문서는 이것 하나뿐입니다

AI 에이전트의 파일 권한을 다룬 Apple 문서가 하나 있는데, 그것은 macOS가 아니라 Xcode 문서입니다. Xcode 27 릴리스 노트에는 이렇게 적혀 있습니다. “Coding Intelligence now includes a new security layer that monitors and controls filesystem access by coding agents and any processes they spawn. This can be enabled in Coding Intelligence settings.”(Coding Intelligence에 코딩 에이전트와 그것이 생성하는 모든 프로세스의 파일 시스템 접근을 감시하고 통제하는 새 보안 계층이 추가되었다. Coding Intelligence 설정에서 활성화할 수 있다)24 항목은 이것이 전부입니다. 이 계층이 무엇을 허용하고 무엇을 막는지, 기본적으로 켜져 있는지(“can be enabled”라는 표현은 그렇지 않음을 시사합니다), TCC와 어떤 관계인지, Xcode 밖의 에이전트에도 적용되는지는 나와 있지 않습니다. 같은 노트에는 “code-signed agents”(코드 서명된 에이전트)가 디렉터리 트리 안의 프로젝트를 “for extended periods of time without being asked for additional permissions”(추가 권한을 요청받지 않고 오랫동안) 사용할 수 있게 하는 미리보기 MCP 서버와, Apple이 “is not a recommended configuration for at-desk use”(책상 앞에서 사용할 때 권장되는 구성이 아니다)라고 하는 플래그 --unsafe-always-allow-all-agents도 설명되어 있습니다.24 두 항목 모두 전체 디스크 접근 권한은 언급하지 않습니다.

WWDC26의 에이전트 기능 세션은 제가 읽은 Apple 자료 가운데 에이전트의 위협 모델에 가장 가까운 것입니다. 이 세션은 “Simon Willison’s Lethal Trifecta”(Simon Willison의 ‘치명적 삼요소’)를 인용하는데, 에이전트가 “access to private data, exposure to untrusted content, and the ability to externally communicate”(개인 데이터에 대한 접근, 신뢰할 수 없는 콘텐츠에 대한 노출, 외부와 통신하는 능력)를 갖출 때 사용자가 가장 위험하다는 개념입니다.29 전체 디스크 접근 권한은 이 셋 중 첫째를 스위치 하나로 줍니다. 10월 공지가 에이전트와 함께 위험이 커진다고 말하는 이유에 대한 이것은 제 해석이며, Apple이 밝힌 이유는 아닙니다.

2. 전체 디스크 접근 권한이란 무엇인가

Apple의 말로 본 이 통제

전체 디스크 접근 권한은 시스템 설정(System Settings) > 개인정보 보호 및 보안에 있는 한 행입니다. macOS 27용 Mac 사용 설명서는 이를 이렇게 설명합니다. “Allow apps to access all files on your computer, including data from other apps (for example, Mail, Messages, Safari, and Home), data from Time Machine backups, and certain administrative settings for all users on this Mac.”(다른 앱의 데이터(예: Mail, Messages, Safari, 홈), Time Machine 백업의 데이터, 이 Mac의 모든 사용자에 대한 특정 관리 설정을 포함해, 앱이 컴퓨터의 모든 파일에 접근하도록 허용한다)4 주변 행들은 다르게 적혀 있습니다. 캘린더, 연락처, 파일 및 폴더(Files & Folders) 등 대부분의 행은 “The listed apps have requested access.”(목록의 앱은 접근을 요청한 앱이다)로 끝납니다. 전체 디스크 접근 권한 행에는 대신 “To add an app, click [the Add button] , select the app in the list, then click Open.”(앱을 추가하려면 추가 버튼을 클릭하고 목록에서 앱을 선택한 다음 열기를 클릭한다)이라고 되어 있습니다.4 이 차이가 핵심입니다. 다른 항목은 앱이 요청하고, 이 항목은 사용자가 직접 찾아가야 합니다.

Apple 플랫폼 보안은 같은 내용을 표로 보여 줍니다. 앱의 파일 접근 통제를 다루는 페이지는 “Full internal storage access”(내장 저장 공간 전체 접근, 같은 통제에 대해 이 문서가 쓰는 이름)를 나열하면서 “User prompted by app”(앱이 사용자에게 묻는다) 칸에는 X를, “User needs to edit system privacy settings”(사용자가 시스템 개인정보 설정을 편집해야 한다) 칸에는 체크를 표시합니다. 반면 파일 및 폴더는 앱이 묻습니다.10 관리자를 위한 기기 관리 참고 문서는 이 서비스를 “to all protected files, including system administration files”(시스템 관리 파일을 포함한 모든 보호된 파일에 대한) 접근으로 설명하고, Apple의 배포 가이드는 이를 “System Policy All Files”로 나열하며 “Allows specified apps access to data like Mail, Messages, Safari, Home, Time Machine backups, and certain administrative settings for all users of the Mac.”(지정한 앱이 Mail, Messages, Safari, 홈, Time Machine 백업 같은 데이터와 Mac의 모든 사용자에 대한 특정 관리 설정에 접근하도록 허용한다)라고 씁니다.3031

이에 대해 따져 보기 전에 알아 둘 만한, Apple이 공개하지 않는 것이 세 가지 있습니다.

  • 보호 대상의 완전한 목록은 없습니다. Apple Developer Technical Support의 엔지니어는 Apple 개발자 포럼 게시물(문서가 아니라 직원의 게시물입니다)에서 “The exact list of file system locations protected by MAC is not documented and, as illustrated by the list above, can change over time.”(MAC이 보호하는 파일 시스템 위치의 정확한 목록은 문서화되어 있지 않으며, 위 목록이 보여 주듯 시간에 따라 바뀔 수 있다)라고 말합니다.20 여기서 MAC은 필수 접근 통제(mandatory access control), 즉 그 아래에서 작동하는 메커니즘입니다.
  • 사용자별이 아닙니다. 같은 엔지니어의 말입니다. “Some MAC privileges are per user (Files and Folders) and some are system wide (Full Disk Access).”(MAC 권한 중 일부는 사용자별(파일 및 폴더)이고 일부는 시스템 전체(전체 디스크 접근 권한)이다)20 한 계정에 로그인한 상태에서 준 허용은 그 프로그램에 대해 모든 계정에서 유효합니다.
  • TCC는 Apple이 쓰면서도 거의 정의하지 않는 이름입니다. 이런 결정을 보관하는 하위 시스템이 TCC입니다. macOS 27 SDK의 Endpoint Security 헤더는 이를 “Transparency, Consent, and Control (TCC)”로 풀어 쓰고, WWDC26의 Apple 패널은 “TCC stands for transparency, consent and control”(TCC는 transparency, consent, control의 약자다)이라고 했으며, 지원 엔지니어의 게시물은 TCC가 “has no API surface”(API 표면이 없다)라고 덧붙입니다.323320 제 Mac의 TCC 자체 데이터베이스에서 전체 디스크 접근 권한 행은 kTCCServiceSystemPolicyAllFiles라는 서비스 이름으로 저장되어 있습니다. 이 문자열은 제가 확인한 Apple 문서, man 페이지, SDK 헤더 어디에도 나오지 않습니다. Apple이 문서화한 이름은 프로파일 키 SystemPolicyAllFiles와 설정 앵커 Privacy_AllFiles입니다.19302534

어떻게 허용되는가

사용자가 직접. 사용자는 전체 디스크 접근 권한 행을 열고 추가를 클릭한 뒤 앱을 고릅니다.4 앱이 이를 위한 프롬프트를 띄우는 방법은 Apple 문서 어디에도 없습니다. 대신 Apple 문서가 제공하는 것은 사용자를 올바른 패널로 데려가는 링크입니다. Endpoint Security 클라이언트 인타이틀먼트를 가진 앱(헤더는 es_new_client를 호출하는 쪽에 com.apple.developer.endpoint-security.client 인타이틀먼트를 요구합니다)에 대해 Endpoint Security 헤더는 “The only supported way to check if an application is properly TCC authorized for Full Disk Access is to call es_new_client and handling ES_NEW_CLIENT_RESULT_ERR_NOT_PERMITTED,”(앱이 전체 디스크 접근 권한에 대해 TCC 승인을 제대로 받았는지 확인하는 유일하게 지원되는 방법은 es_new_client를 호출하고 ES_NEW_CLIENT_RESULT_ERR_NOT_PERMITTED를 처리하는 것이다)라고 말하고, “To direct the user to the Full Disk Access section in System Settings,”(사용자를 시스템 설정의 전체 디스크 접근 권한 섹션으로 안내하려면) 앱이 macOS 13 이상에서 x-apple.systempreferences:com.apple.settings.PrivacySecurity.extension?Privacy_AllFiles를 열면 된다고 합니다.25 WWDC19에서 Apple은 같은 패턴을 설명했습니다. 앱은 “can test for authorization using FileManager or POSIX level APIs, and if necessary, can guide the user to the security and privacy preference pane, where the user can then approve the app if that’s what they want.”(FileManager나 POSIX 수준 API로 승인 여부를 확인하고, 필요하면 사용자를 보안 및 개인정보 보호 환경설정 패널로 안내할 수 있으며, 사용자는 원한다면 그곳에서 앱을 승인할 수 있다)11 2018년 Apple 포럼에서 한 개발자가 “an API call that causes a prompt to the logged-in user to grant the app Full Disk access because there’s no way to trigger a prompt like that right now, and that’s what backup apps need”(로그인한 사용자에게 앱에 전체 디스크 접근 권한을 주라는 프롬프트를 띄우는 API 호출. 지금은 그런 프롬프트를 띄울 방법이 없고, 바로 그것이 백업 앱에 필요하다)를 요청했고, Apple 지원 엔지니어는 “Please do file an enhancement request.”(꼭 개선 요청을 제출해 주십시오)라고 답했습니다.35 이 글을 위해 읽은 모든 자료에서, 8년이 지난 지금도 Apple 문서가 설명하는 것은 링크뿐입니다.

편의 기능은 하나 있습니다. Catalina부터는 전체 디스크 접근 권한이 없어서 거부된 프로그램이 꺼진 상태로 목록에 미리 나타납니다. “executables that are denied access to files due to a lack of Full Disk Access approval are now prepopulated unchecked.”(전체 디스크 접근 권한 승인이 없어 파일 접근을 거부당한 실행 파일은 이제 체크가 해제된 채 미리 목록에 들어간다)11 그래도 켜는 것은 사용자입니다.

MDM 프로파일로. 관리 대상 Mac에서는 개인정보 보호 환경설정 정책 제어(Privacy Preferences Policy Control) 페이로드(유형 com.apple.TCC.configuration-profile-policy, macOS 전용, 10.14부터)가 이를 허용할 수 있습니다. eslogger man 페이지는 이를 분명히 말합니다. “MDM servers can grant Full Disk Access authorization using the Privacy Preferences Policy Control payload, identified by payload type com.apple.TCC.configuration-profile-policy, and its service dictionary key SystemPolicyAllFiles.”(MDM 서버는 페이로드 유형 com.apple.TCC.configuration-profile-policy로 식별되는 Privacy Preferences Policy Control 페이로드와 그 서비스 딕셔너리 키 SystemPolicyAllFiles를 사용해 전체 디스크 접근 권한을 승인할 수 있다)236 앱별 항목의 Allowed 키가 true이면 Apple 참고 문서는 “access is granted”(접근이 허용된다)라고 하고, 이어서 “The user isn’t prompted and can’t change this value.”(사용자에게 묻지 않으며, 사용자는 이 값을 바꿀 수 없다)라고 덧붙입니다.37 Apple 배포 가이드에 있는 이 페이로드의 예제 주석은 “Allows my organization’s app to interact with all files without prompting the user.”(사용자에게 묻지 않고 조직의 앱이 모든 파일을 다룰 수 있게 한다)입니다.31 여기에는 분명한 비대칭이 있습니다. 카메라, 마이크, 화면 기록, 키보드 입력 감시에 대해 Apple 참고 문서는 프로파일이 접근을 “can’t grant”(허용할 수 없다), “can only deny it”(거부만 할 수 있다)라고 씁니다. SystemPolicyAllFiles에 대해서는 그런 말이 없습니다.30

이 페이로드에 대해 Apple의 두 페이지가 서로 다르게 말하고 있으며, 그중 하나는 올해 바뀌었습니다.

  • 감독(Supervision). 배포 가이드는 “Supervision is required if you apply this payload using a device management service.”(기기 관리 서비스로 이 페이로드를 적용하려면 감독이 필요하다)라고 씁니다. 개발자 참고 문서의 지원 표는 “Requires supervision”(감독 필요)을 N/A로 표시합니다.3136 저는 둘 다 전하고, 어느 쪽도 택하지 않습니다.
  • macOS 27은 앱별 부분을 사용 중단했습니다. 현재 참고 문서에서는 전체 디스크 접근 권한을 포함해 모든 서비스 항목이 쓰는 Identity 객체가 macOS 27.0에서 사용 중단으로 표시되어 있고, 각 키에 “Deprecated: macOS 27+”라고 적혀 있습니다. SystemPolicyAllFiles 항목 자체에는 사용 중단 표시가 없습니다.3730 Apple이 다른 서비스에 대해 대체 수단으로 안내하는 선언적 후속 구성, 곧 앱 설정 구성은 손쉬운 사용(Accessibility), Bluetooth, 카메라, 받아쓰기, 로컬 네트워크, 위치, 마이크에 대한 개인정보 기본값을 제공합니다. 전체 디스크 접근 권한 키는 없으며, 그 기본값은 동의를 거쳐야 합니다. “When set, the app displays a consent prompt listing all the configured defaults.”(설정하면 앱은 구성된 모든 기본값을 나열한 동의 프롬프트를 표시한다)3839 Apple은 이를 10월 2일 공지와 연결하지 않으며, 저도 연결하지 않습니다. 이야기 옆에 놓인 하나의 사실입니다.

존재 이유: 세 번 모두 백업 앱

전체 디스크 접근 권한이 누구를 위한 것인지 Apple이 말한 곳을 세 군데 찾았는데, 세 곳 모두에서 Apple은 같은 종류의 소프트웨어를 들었습니다. WWDC19에서 보호 데이터의 두 계층을 설명하며 Apple은 “things like mail or messages and Safari browsing history”(메일이나 메시지, Safari 방문 기록 같은 것)를 둘째 계층에 넣고, 이것들은 “have a high barrier to access because the files are typically only accessed by specialized apps such as disk management or backup utilities.”(이 파일들에 접근하는 것은 대개 디스크 관리나 백업 유틸리티 같은 전문 앱뿐이므로 접근 장벽이 높다)라고 했습니다.11 WWDC23에서는 앱 컨테이너 보호를 소개하며 “For backup utilities or disk-management tools that have already been granted Full Disk Access, no additional prompt will be shown at time of access, since people have already chosen to allow these apps access to all files.”(이미 전체 디스크 접근 권한을 받은 백업 유틸리티나 디스크 관리 도구에는 접근 시점에 추가 프롬프트가 표시되지 않는다. 사람들이 이미 이 앱들에 모든 파일 접근을 허용하기로 선택했기 때문이다)라고 했습니다.12 그리고 10월 2일에는 전체 디스크 접근 권한이 데이터 통제를 우회하는 것은 “in order to allow backup apps to function properly on the Mac.”(백업 앱이 Mac에서 제대로 작동할 수 있도록 하기 위해서)라고 했습니다.1 에이전트는 백업 앱이 아닙니다. 긴장의 전부가 이 한 문장에 담겨 있습니다.

어디서 왔는가

Apple 자료 대부분은 전체 디스크 접근 권한의 시작을 2018년 macOS Mojave로 봅니다. Apple의 2018년 6월 4일 보도자료는 “New data protections require apps to get user permission before using the Mac camera and microphone or accessing personal data like user Mail history and Messages database.”(새로운 데이터 보호로 인해 앱은 Mac의 카메라와 마이크를 쓰거나 사용자의 Mail 기록, Messages 데이터베이스 같은 개인 데이터에 접근하기 전에 사용자 허락을 받아야 한다)라고 했습니다.40 지금도 온라인에 있는 Mojave 10.14 릴리스 노트는 Application Data라는 이름을 쓰는데, 2018년 8월 Apple 포럼의 한 개발자는 이를 초기 베타에서 쓰던 이름이라고 했습니다.35 “Apps can’t access protected storage unless they’re added to the Application Data category located in the Privacy tab of System Preferences > Security & Privacy.”(앱은 시스템 환경설정 > 보안 및 개인정보 보호의 개인정보 보호 탭에 있는 Application Data 범주에 추가되지 않으면 보호된 저장 공간에 접근할 수 없다)41 기기 관리 페이로드와 그 SystemPolicyAllFiles 키는 macOS 10.14에서 도입된 것으로 표시되어 있고, Apple 지원 엔지니어의 게시물은 “Full Disk Access (macOS 10.14 and later)”(전체 디스크 접근 권한(macOS 10.14 이상))라고 나열합니다.3620

Apple 페이지 하나는 시기를 다르게 적습니다. Apple 플랫폼 보안은 “In macOS 10.13 or later, apps that require access to the full storage device need to be explicitly added in System Settings (macOS 13 or later) or System Preferences (macOS 12 or earlier).”(macOS 10.13 이상에서 저장 장치 전체에 대한 접근이 필요한 앱은 시스템 설정(macOS 13 이상) 또는 시스템 환경설정(macOS 12 이하)에서 명시적으로 추가해야 한다)라고 말합니다.10 제가 읽은 다른 Apple 자료는 모두 10.14라고 합니다. 이 불일치를 전하되 어느 쪽도 택하지 않습니다.

Catalina(10.15, 2019년 10월 7일 출시)는 보호 범위를 넓혔습니다. 그 보도자료는 “new data protections require all apps to get permission before accessing user documents”(새로운 데이터 보호로 인해 모든 앱은 사용자 문서에 접근하기 전에 허락을 받아야 한다)라고 했고, WWDC19에서 Apple은 데스크탑, 문서, 다운로드 폴더, iCloud Drive, 서드파티 클라우드 저장 공간, 이동식 볼륨, 네트워크 볼륨을 동의가 필요한 목록에 추가하며 “the universe of data that requires preapproval for Full Disk Access has been expanded to include trash.”(전체 디스크 접근 권한의 사전 승인이 필요한 데이터 범위가 휴지통까지 확장되었다)라고 했습니다.4211 이후 릴리스에서는 앱 컨테이너 보호(macOS 14)와 앱 그룹 컨테이너 보호(macOS 15)가 추가되었는데, 둘 다 앱이 다른 앱의 데이터를 읽는 문제에 관한 것입니다. 앞의 것에 대해 Apple은 전체 디스크 접근 권한을 가진 앱에는 추가 프롬프트가 표시되지 않는다고 했습니다.2012

macOS 27도 같은 방향으로 다시 움직였습니다. 그 릴리스 노트는 “other developer teams’ app data containers and app group containers no longer prompts the user for authorization; such accesses are denied by default and can be managed by the user in Privacy & Security settings,”(다른 개발 팀의 앱 데이터 컨테이너와 앱 그룹 컨테이너에 대한 접근은 더 이상 사용자에게 승인을 묻지 않으며, 그러한 접근은 기본적으로 거부되고 개인정보 보호 및 보안 설정에서 사용자가 관리할 수 있다), “XProtect may now restrict access to app data that is commonly targeted by malicious software,”(XProtect는 이제 악성 소프트웨어가 흔히 노리는 앱 데이터에 대한 접근을 제한할 수 있다)라고 하고, TCC 항목에서 “Apps can no longer access the local TCC database directly.”(앱은 더 이상 로컬 TCC 데이터베이스에 직접 접근할 수 없다)라고 말합니다.23 알려진 문제 하나에서는 Apple의 노트가 스스로 전체 디스크 접근 권한을 임시방편으로 권합니다. 번들 ID가 없는 프로세스가 다른 팀의 컨테이너에 대한 접근 권한을 받을 수 없을 때, “Workaround: Consider if the access is necessary. If required, grant Full Disk Access to the process for the duration of the requirement.”(해결 방법: 그 접근이 필요한지 검토한다. 필요하다면 필요한 기간 동안 그 프로세스에 전체 디스크 접근 권한을 준다)라는 것입니다.23 이 변경들의 전체는 macOS 27 릴리스 노트 글과 팀 간 컨테이너 글에서 다룹니다.

3. 에이전트는 어떻게 이 권한을 얻는가

Mac의 AI 에이전트가 전체 디스크 접근 권한이 보호하는 것을 읽을 수 있게 되는 경로는 두 가지입니다. 허용을 가진 앱 안에서 실행되거나, 에이전트 자신이 허용을 가진 앱이거나. 대부분의 명령줄 에이전트는 앞의 경로로 권한을 얻으며, 이 경우 에이전트 자체를 위해 누군가 무엇을 클릭할 필요가 전혀 없습니다.

터미널 경로

터미널에 claude나 codex를 입력할 때, macOS는 Claude Code나 Codex가 여러분의 Messages를 읽어도 되는지 묻지 않습니다. 터미널이 읽어도 되는지를 묻습니다. Apple은 검사 대상이 되는 프로그램을 “responsible”(책임이 있는) 프로그램이라고 부르지만, 그것을 고르는 규칙을 일반 규칙으로 밝힌 Apple 문서는 찾지 못했습니다. Apple이 공개한 것은 모두 같은 방향을 가리키는 개별 진술들입니다.

  • eslogger(1)(macOS 27에 포함): “eslogger requires the responsible process to have been authorized for Full Disk Access,”(eslogger는 책임 프로세스가 전체 디스크 접근 권한을 승인받았어야 한다) 그리고 “Running eslogger from an app, including Terminal.app or a third-party terminal emulator, requires the respective app to be authorized for Full Disk Access in System Preferences > Security & Privacy > Privacy > Full Disk Access.”(Terminal.app이나 서드파티 터미널 에뮬레이터를 포함한 앱에서 eslogger를 실행하려면 해당 앱이 시스템 환경설정의 전체 디스크 접근 권한에서 승인되어 있어야 한다)2
  • tmutil(8): “Full Disk Access privileges can be granted to the Terminal application used to run tmutil from the Privacy tab in the Security & Privacy preference pane.”(전체 디스크 접근 권한은 보안 및 개인정보 보호 환경설정 패널의 개인정보 보호 탭에서 tmutil을 실행하는 데 쓰는 터미널 응용 프로그램에 부여할 수 있다)43
  • fdesetup(8): macOS 10.15부터 명령줄에서 FileVault를 켜려면, 다른 선택지들과 함께 “The responsible application is authorized for”(책임 응용 프로그램이 승인되어 있을 것), 즉 전체 디스크 접근 권한이 조건입니다.44
  • Apple 기기 관리 참고 문서: “Helper tools embedded within an application bundle automatically inherit the permissions of their enclosing app bundle.”(응용 프로그램 번들 안에 포함된 헬퍼 도구는 그것을 감싸는 앱 번들의 권한을 자동으로 상속한다)37

가장 직접적인 진술은 Apple Developer Technical Support의 엔지니어 Quinn이 2024년 6월 명령줄 도구와 전체 디스크 접근 권한에 관한 포럼 스레드에 단 답변입니다. 이는 문서가 아니라 Apple 사이트에 올라온 직원의 게시물이며, 저는 이를 쓸 때마다 그렇게 밝힙니다. 그는 네 가지 경우를 나열합니다. 사용자가 Terminal에서 실행하는 도구는 “The tool’s responsible code is Terminal.”(그 도구의 책임 코드는 Terminal이다). SSH로 실행하는 도구는 “The tool’s responsible code is the SSH server.”(그 도구의 책임 코드는 SSH 서버다). 앱이 실행하는 헬퍼는 “The system treats the app as the responsible code.”(시스템은 그 앱을 책임 코드로 취급한다). launchd 작업은 SMAppService로 설치하면 앱이 책임 코드가 되고, 그렇지 않으면 작업의 속성 목록이 AssociatedBundleIdentifiers로 앱을 지정해야 한다고 씁니다.3 같은 스레드에서 그는 이것을 전제로 계획을 세우려는 사람에게 중요한 단서를 붙입니다. “The exact algorithm it uses for this is not documented, has changed in the past, and may well change in the future.”(이를 위해 쓰는 정확한 알고리즘은 문서화되어 있지 않고, 과거에 바뀐 적이 있으며, 앞으로도 바뀔 가능성이 충분하다)3 다른 스레드에서 TCC가 “is looking for parent process rights”(부모 프로세스의 권한을 보는지)라는 질문을 받았을 때, 그는 그것이 “both complex and subject to change”(복잡하고 바뀔 수 있다)라며 자세한 설명을 사양했습니다.45

2024년 6월 스레드를 시작한 개발자는 그 효과를 이미 측정해 두었습니다. “When this program is built and executed in Terminal.app with Terminal having FDA, the file opens successfully. Conversely, when FDA is revoked from Terminal and granted to the program, an error occurs due to insufficient privileges.”(Terminal에 FDA가 있는 상태에서 이 프로그램을 빌드해 Terminal.app에서 실행하면 파일이 정상적으로 열린다. 반대로 Terminal에서 FDA를 회수하고 프로그램에 주면 권한 부족으로 오류가 난다)3 이것은 Apple이 아니라 개발자의 보고입니다. 앞부분은 제가 제 Mac에서 측정한 결과(섹션 5)와 일치합니다. 터미널의 실행 체인에 허용이 있을 때 읽기가 성공했습니다. 뒷부분은 검증하지 않았습니다. 제 대조 실험이 바꾼 것은 읽기를 실행한 위치이지, 허용을 가진 앱이 아니었습니다.

여기서 두 가지 결과가 따라 나오며, 어느 것도 에이전트에만 해당하지는 않습니다.

그 터미널에서 시작하는 모든 것이 권한을 얻습니다. 에이전트, 에이전트가 생성하는 셸, git, npm install, 테스트 러너, stdio로 실행되는 MCP 서버, 1분 전에 모델이 쓴 스크립트. 이것들이 터미널 아래에서 실행된다면 TCC가 검사하는 것은 터미널입니다. Apple 지원 엔지니어는 인터프리터에 대해 이 점을 직접 지적합니다. “if you have a script that needs to manipulate files on your desktop, you wouldn’t want to give the interpreter that privilege because then any script could do that.”(데스크탑의 파일을 다뤄야 하는 스크립트가 있더라도 인터프리터에 그 권한을 주고 싶지는 않을 것이다. 그러면 어떤 스크립트든 그렇게 할 수 있기 때문이다)20 전체 디스크 접근 권한을 가진 터미널은 같은 문제가 한 단계 위에서 일어나는 것입니다.

다른 앱이 이를 빌릴 수 있습니다. 2022년 Jeff Johnson은 소스 코드와 함께 “Every unsandboxed app has Full Disk Access if Terminal does”(Terminal이 전체 디스크 접근 권한을 가지면 샌드박스가 없는 모든 앱이 그것을 가진다)를 발표했습니다. 그의 요점은 이렇습니다. “unsandboxed apps can open executable shell scripts in Terminal, and those scripts will execute with the permissions not of the opening app but rather with the permissions of Terminal, i.e. Full Disk Access.”(샌드박스가 없는 앱은 실행 가능한 셸 스크립트를 Terminal에서 열 수 있고, 그 스크립트는 연 앱이 아니라 Terminal의 권한, 즉 전체 디스크 접근 권한으로 실행된다) 이 기법은 “doesn’t work for sandboxed apps”(샌드박스가 적용된 앱에서는 통하지 않는다)라고도 적었습니다.46 제 Mac에서 살펴본 에이전트 데스크톱 앱은 모두 샌드박스가 없습니다. Claude 앱과 Cursor에는 App Sandbox 인타이틀먼트가 없고, ChatGPT 앱은 이를 false로 설정하고 있습니다.47 Johnson의 주장이 아니라 제 해석입니다만, 터미널이 전체 디스크 접근 권한을 가진 Mac에서는 이 앱들 중 어느 것이든 같은 방식으로 그 권한에 닿을 수 있습니다.

터미널 자신은 무엇이라고 말할까요? 터미널이 전체 디스크 접근 권한을 가질 때 자식 프로세스가 무엇을 얻는지 밝힌 Ghostty나 iTerm2 문서는 찾지 못했습니다. Ghostty 문서와 iTerm2 저장소를 이 문구로 GitHub 코드 검색한 결과는 0건이었습니다. Apple의 Terminal이나 Warp 문서는 같은 방식으로 검색하지 않았습니다.48 앱들이 보여 주는 것은 누구를 대신해 말하는가입니다. 제 Mac에 설치된 앱에서 읽은 사용 목적 문자열은 그 안에서 실행되는 것을 대신하는 형태로 쓰여 있습니다. Ghostty의 AppleScript 프롬프트는 “A program running within Ghostty would like to use AppleScript”(Ghostty 안에서 실행 중인 프로그램이 AppleScript를 사용하려 한다), iTerm2의 것은 “An application in iTerm2 wants to use AppleScript”(iTerm2 안의 응용 프로그램이 AppleScript를 사용하려 한다)입니다.47 앱이 전체 디스크 접근 권한을 요청하는 프롬프트를 띄울 수 없으므로 macOS에는 이를 위한 사용 목적 문자열이 없지만, 이 문자열들은 설계를 보여 줍니다. 사용자가 질문을 받는 대상은 터미널이라는 앱입니다.

에이전트를 내장한 편집기도 한 단계 옆에서 같은 방식으로 동작합니다. Cursor 문서는 “Cursor runs shell commands directly in your terminal”(Cursor는 셸 명령을 여러분의 터미널에서 직접 실행한다)이라고 하는데, 편집기 안에서라면 저는 이를 Cursor 자체의 통합 터미널로 읽습니다.49 앞서 본 지원 엔지니어의 헬퍼 사례(앱이 생성한 도구는 그 앱에 귀속된다)에 따르면, 그 명령들에 대해 TCC가 보는 앱은 Cursor가 됩니다. 이는 제 추론이며, TCC가 어느 앱에 귀속시키는지 Cursor 문서는 말하지 않습니다.318

SSH 경로

SSH로 에이전트를 다룬다면 책임 코드는 반대편의 터미널이 아니라 SSH 서버입니다. Apple 지원 엔지니어의 말입니다. “The tool’s responsible code is the SSH server. You can set Full Disk Access on that using System Settings > General > Sharing > Remote Login > Allow full disk access for remote users.”(그 도구의 책임 코드는 SSH 서버다. 시스템 설정 > 일반 > 공유 > 원격 로그인의 ‘원격 사용자에 대해 전체 디스크 접근 권한 허용’으로 여기에 전체 디스크 접근 권한을 설정할 수 있다)3 eslogger man 페이지도 같은 설정을 언급합니다.2 OpenClaw의 설정 가이드는 SSH 쪽 클라이언트가 TCC에서 /usr/libexec/sshd-keygen-wrapper로 보인다고 알려 주며, 바로 그 클라이언트가 제 Mac의 전체 디스크 접근 권한 목록에 올라 있습니다.1419

에이전트 공급업체가 안내하는 것

두 에이전트 프로젝트가 자체 문서에서, 에이전트가 Messages를 읽을 수 있도록 전체 디스크 접근 권한을 주라고 사용자에게 안내합니다.

  • Hermes Agent(Nous Research). Apple iMessage 스킬은 “Bundled (installed by default)”(번들 포함, 기본 설치)로 표시되며, 그 사전 요구 사항에는 “Grant Full Disk Access for terminal (System Settings → Privacy → Full Disk Access)”(터미널에 전체 디스크 접근 권한을 준다)와 “Grant Automation permission for Messages.app when prompted”(요청이 오면 Messages.app에 대한 자동화(Automation) 권한을 준다)가 있습니다.13 이는 터미널에, 따라서 그 안에서 실행되는 모든 것에 전체 디스크 접근 권한을 주라는 공급업체의 지시입니다. 이 에이전트의 나머지는 Hermes 가이드에서 다룹니다.
  • OpenClaw. iMessage 설정 문서에는 “Full Disk Access is required for the process context running OpenClaw/imsg“(OpenClaw/imsg를 실행하는 프로세스 컨텍스트에는 전체 디스크 접근 권한이 필요하다)(Messages 데이터베이스용), “Automation permission is required to send messages through Messages.app”(Messages.app으로 메시지를 보내려면 자동화 권한이 필요하다), “Permissions are granted per process context”(권한은 프로세스 컨텍스트별로 부여된다)라고 되어 있습니다.14 같은 페이지는 반응, 편집, 전송 취소 같은 고급 동작에는 “System Integrity Protection must be disabled”(System Integrity Protection을 꺼야 한다)라고 하면서, 기본 송수신은 그 없이도 동작한다고 말합니다.14 OpenClaw의 macOS 권한 페이지는 데스크탑, 문서, 다운로드 폴더에도 같은 규칙을 제시합니다. “grant access to the same process context that performs file operations (for example Terminal/iTerm, LaunchAgent-launched app, or SSH process).”(파일 작업을 수행하는 것과 같은 프로세스 컨텍스트(예: Terminal/iTerm, LaunchAgent로 실행된 앱, SSH 프로세스)에 접근 권한을 준다)50

Anthropic이 문서화한 것은 더 좁은 경우입니다. 에이전트 뷰 문서에 따르면 Claude Code의 백그라운드 세션은 호스트 프로세스를 실행하는데, 이 프로세스는 “requests access to protected folders separately from your terminal”(터미널과 별도로 보호된 폴더에 대한 접근을 요청한다)고 하며, 백그라운드 세션이 보호된 위치에서 “Operation not permitted”를 보고하면 해결책은 “grant access in System Settings under Privacy & Security > Files and Folders, or enable Full Disk Access for the entry.”(시스템 설정의 개인정보 보호 및 보안 > 파일 및 폴더에서 접근을 허용하거나, 해당 항목에 전체 디스크 접근 권한을 켠다)라고 합니다. 네이티브 설치 프로그램을 쓰면 “the entry appears as Claude Code and the grant persists across updates.”(항목은 Claude Code로 표시되고 허용은 업데이트 후에도 유지된다)라고 합니다.51 컴퓨터 사용(computer use)에 대해서는 Anthropic이 화면 기록 항목에서 “your terminal app is listed and enabled”(터미널 앱이 목록에 있고 켜져 있는지) 확인하라고 안내하는데, 이 역시 다른 권한에 대한 터미널 경로입니다.52 Anthropic의 샌드박스, 권한, 보안 페이지 어디에도 전체 디스크 접근 권한은 나오지 않습니다.1553

데스크톱 앱 경로

데스크톱 에이전트 앱은 개인정보 보호 및 보안에 각자 행을 가지며, 요청하는 것은 앱마다 다릅니다.

  • ChatGPT for Mac(제 Mac에서 번들 ID는 com.openai.codex). 2026년 8월 20일, OpenAI는 Apple Messages 플러그인을 추가했습니다. “On Apple silicon Macs, the Apple Messages plugin in the ChatGPT desktop app can read and search iMessage, SMS, and RCS conversations and prepare or send messages through Messages.”(Apple 실리콘 Mac에서 ChatGPT 데스크톱 앱의 Apple Messages 플러그인은 iMessage, SMS, RCS 대화를 읽고 검색하며 Messages를 통해 메시지를 준비하거나 보낼 수 있다)54 OpenAI의 플러그인 가이드는 “Grant the requested macOS permissions before ChatGPT reads Messages.”(ChatGPT가 Messages를 읽기 전에 요청된 macOS 권한을 허용한다)라고만 말합니다.22 그 권한을 명시한 OpenAI 페이지는 찾지 못했습니다. MacRumors는 출시를 보도하며 “For the Messages integration to work, ChatGPT needs Full Disk Access in System Settings, as well as access to contact names and automation tools”(Messages 연동이 작동하려면 ChatGPT에 시스템 설정의 전체 디스크 접근 권한과 함께 연락처 이름 및 자동화 도구에 대한 접근이 필요하다)라고 썼습니다. 이는 언론 보도로, 여기서는 OpenAI의 진술이 아니라 단서로 씁니다.55 제 Mac에서 ChatGPT 앱은 전체 디스크 접근 권한 표에 올라 있습니다.19 OpenAI 가이드에는 제가 맨 앞에 두고 싶은 경고도 있습니다. “Persistent approval removes your final chance to review a message before ChatGPT sends it as you.”(지속 승인을 쓰면 ChatGPT가 여러분으로서 메시지를 보내기 전에 그것을 검토할 마지막 기회가 사라진다)22 Computer Use에 대해 OpenAI는 화면 기록과 손쉬운 사용을 요청하며 “File reads, file edits, and shell commands still follow the sandbox and approval settings for the task.”(파일 읽기, 파일 편집, 셸 명령은 여전히 해당 작업의 샌드박스와 승인 설정을 따른다)라고 말합니다.56
  • Claude for Mac. 전체 디스크 접근 권한을 요청하는 Anthropic 페이지는 찾지 못했습니다. 제 Mac에 있는 이 앱의 Info.plist는 데스크탑, 문서, 다운로드 폴더와 Apple Events 등에 대한 사용 목적 문자열을 선언합니다(“Claude needs this so commands you run in Claude can control other apps”(Claude에서 실행하는 명령이 다른 앱을 제어할 수 있도록 Claude에 이 권한이 필요하다)).47 빠른 입력 기능은 화면 기록과 손쉬운 사용을 요청합니다.57
  • Cursor. 제가 저장한 Cursor 페이지 두 개, Run Modes와 Terminal 어느 쪽도 전체 디스크 접근 권한을 요청하지 않습니다. Cursor는 제 Mac의 표에 올라 있습니다.191849
  • Hermes Agent 컴퓨터 사용. 손쉬운 사용과 화면 기록은 hermes computer-use doctor가 지목하는 ID, 곧 터미널이 아닌 별도의 드라이버 앱에 줍니다.58
  • 에이전트가 있는 VS Code. 제 Mac에는 설치되어 있지 않으며, 그 에이전트의 전체 디스크 접근 권한을 다룬 Microsoft 페이지는 찾지 못했습니다.4759

경로별 에이전트

에이전트 보호된 데이터에 닿는 경로 공급업체 문서의 전체 디스크 접근 권한 macOS의 공급업체 샌드박스, 기본값
Claude Code(CLI) 터미널 경로. 백그라운드 호스트는 자기 항목을 가질 수 있음 백그라운드 세션 안내만 있음 Seatbelt. 기본적으로 꺼짐
Codex CLI 터미널 경로 찾지 못함 Seatbelt. 켜짐, workspace-write, 네트워크 꺼짐
ChatGPT for Mac(Codex, Work, Messages, Computer Use) 자기 항목 “Requested macOS permissions”(요청된 macOS 권한). 전체 디스크 접근 권한은 언론 보도만 언급 플러그인과 셸 단계에는 Codex 샌드박스와 승인 정책. Messages와 Computer Use는 macOS 권한도 필요
Claude for Mac 자기 항목 찾지 못함 제가 읽은 페이지에서는 로컬 동작에 대해 문서화되지 않음
Hermes Agent 터미널 경로 있음: iMessage를 위해 터미널에 부여 Seatbelt 백엔드 없음. 기본값은 local, “no isolation”(격리 없음)
OpenClaw 게이트웨이의 프로세스 컨텍스트 있음: iMessage 채널에 필수 도구용 샌드박스 백엔드(기본값 Docker). 기본적으로 꺼짐
Gemini CLI 터미널 경로 찾지 못함 Seatbelt 프로파일. 켜지 않으면 꺼짐
Aider 터미널 경로 찾지 못함 문서화된 것 없음
Cursor(에이전트와 CLI) 편집기: Cursor의 터미널, 즉 Cursor. CLI: 터미널 경로 찾지 못함 Seatbelt. 작업 공간 밖 읽기는 기본적으로 허용
VS Code 에이전트 편집기의 터미널, 즉 VS Code 찾지 못함 Agent Host 샌드박스(Copilot Agent Host 세션만). 기본적으로 꺼짐

각 칸의 출처는 섹션 3과 4에 있습니다.51166022561361146217481859 둘째 열에서 두 편집기에 대한 내용은 지원 엔지니어의 헬퍼 사례에서 끌어낸 제 추론이며, 공급업체의 진술이 아닙니다. 셋째 열에 패턴이 있습니다. 전체 디스크 접근 권한을 명시하는 두 공급업체는 Messages에 닿기 위해 그렇게 합니다. Messages는 그 노출이 “the people users are communicating with”(사용자가 소통하는 상대방)에게까지 미친다고 Apple이 말하는 데이터입니다. Apple은 어떤 에이전트도 지목하지 않았고, 저도 Apple이 이 둘을 염두에 두었다고 주장하지 않습니다. 다른 모든 명령줄 에이전트는 같은 데이터에 닿을 때, 터미널의 허용이 자신에게 넘어온다는 말을 문서에 적지 않은 채 그렇게 합니다. 허용은 터미널의 것이기 때문입니다.

4. 공급업체 샌드박스가 하는 일과 할 수 없는 일

서로를 모르는 두 계층

macOS 샌드박스 문서를 제가 읽은 명령줄 에이전트는 모두 시스템의 프로세스 샌드박스인 Seatbelt 위에 샌드박스를 만들고 sandbox-exec로 구동합니다. Claude Code(“sandboxing uses the built-in Seatbelt framework”, 샌드박스는 내장 Seatbelt 프레임워크를 쓴다), Codex(“On macOS, sandboxing works out of the box using the built-in Seatbelt framework”, macOS에서는 내장 Seatbelt 프레임워크로 샌드박스가 별도 설정 없이 동작한다), Gemini CLI(“Lightweight, built-in sandboxing using” sandbox-exec, sandbox-exec를 쓰는 가벼운 내장 샌드박스), Cursor(“Cursor uses Seatbelt through” sandbox-exec, Cursor는 sandbox-exec를 통해 Seatbelt를 쓴다)가 그렇습니다.15161718 전체 디스크 접근 권한은 TCC의 영역입니다. Apple 지원 엔지니어는 둘의 관계를 이렇게 설명합니다. “App Sandbox and the mandatory access control system are both implemented using macOS’s sandboxing infrastructure,”(App Sandbox와 필수 접근 통제 시스템은 모두 macOS의 샌드박스 인프라로 구현된다) 하지만 필수 접근 통제는 “is mandatory; it’s not an opt-in like the App Sandbox.”(필수다. App Sandbox처럼 선택해서 켜는 것이 아니다)20

이것이 실제로 뜻하는 바에는 두 면이 있습니다. Seatbelt 프로파일은 책임 앱이 갖지 못한 TCC 허용을 프로세스에 줄 수 없습니다. 이는 “including those running as root”(root로 실행되는 것을 포함해) 모든 프로세스가 MAC의 적용을 받는다는 Apple 지원 엔지니어의 설명에서 따라 나오는 것으로, 저는 검증하지 않았습니다. 다른 면은 섹션 5에서 제 Mac으로 측정했습니다. 어떤 샌드박스도 터미널의 허용을 바꾸지 않았고, 프로파일이 보호된 읽기를 막은 것은 그 프로파일 자체가 그 경로를 거부했을 때뿐이었으며, 그것도 TCC라면 읽기를 허용했을 상황에서 프로파일 단독으로 막은 것입니다.205 전체 디스크 접근 권한을 가진 터미널 안에서 샌드박스로 감싼 에이전트도, 프로파일이 그곳의 읽기를 허용한다면 Messages를 읽을 수 있습니다. 그리고 대부분의 기본 프로파일은 거의 모든 곳에서 읽기를 허용합니다.

이름의 함정이 하나 있습니다. Codex 자체 소스 코드에는 has_full_disk_read_access라는 함수가 있는데, 이것이 true를 반환하고 읽을 수 없는 루트가 설정되어 있지 않으면, 생성되는 Seatbelt 프로파일은 모든 곳에서 file-read*를 허용합니다. 그런 루트가 있으면 그것들을 제외한 읽기 정책을 만듭니다.63 이는 넓은 Seatbelt 읽기 정책을 가리키는 Codex의 용어입니다. Apple의 전체 디스크 접근 권한이 아니며, 그것을 부여하지도 않습니다.

Claude Code(Anthropic)

  • 샌드박스: 기본적으로 꺼짐. “The sandbox is off by default. To turn it on, run /sandbox in a session, as Get started shows, or set sandbox.enabled to true in a settings file.”(샌드박스는 기본적으로 꺼져 있다. 켜려면 Get started에 나온 대로 세션에서 /sandbox를 실행하거나, 설정 파일에서 sandbox.enabled를 true로 설정한다)15
  • 켰을 때의 기본값. 쓰기는 “The working directory, a per-user temp directory, and directories you’ve added.”(작업 디렉터리, 사용자별 임시 디렉터리, 그리고 추가한 디렉터리)로 갑니다. 읽기는 “Most of the machine, including credential files.”(자격 증명 파일을 포함한 기계의 대부분)에 미칩니다. 네트워크는 “No direct route out”(밖으로 나가는 직접 경로가 없음)이며, 연결은 로컬 프록시를 거치는데 그 허용 도메인은 “start empty”(처음에는 비어 있다)입니다.15 샌드박스는 “the open source @anthropic-ai/sandbox-runtime package”(오픈 소스 @anthropic-ai/sandbox-runtime 패키지) 위에 만들어졌습니다.15
  • 두 가지 샌드박스 모드. 자동 허용과 일반 권한입니다. “In both, the sandbox enforces the same filesystem and network restrictions; the difference is only in whether sandboxed commands are auto-approved or require explicit permission.”(두 모드 모두 샌드박스는 같은 파일 시스템과 네트워크 제한을 적용한다. 차이는 샌드박스 안의 명령이 자동 승인되는지, 명시적 허락이 필요한지뿐이다)15
  • 샌드박스 밖에 있는 것. 내장 파일 도구와 웹 도구는 “follow permission rules instead. A denyRead entry doesn’t stop the Read tool,”(대신 권한 규칙을 따른다. denyRead 항목은 Read 도구를 막지 않는다)이고, “command hooks, local MCP servers, plugin monitors, LSP servers, and helper commands such as your status line command and apiKeyHelper run with your full access.”(명령 훅, 로컬 MCP 서버, 플러그인 모니터, LSP 서버, 그리고 상태 표시줄 명령이나 apiKeyHelper 같은 헬퍼 명령은 여러분의 전체 권한으로 실행된다)15 실패한 명령은 allowUnsandboxedCommands가 false가 아니면 샌드박스 밖에서 다시 시도될 수 있습니다.15
  • 읽기 좁히기. sandbox.filesystem.denyRead와 allowRead, 또는 “deny sandboxed commands read access to home directories and mounted volumes while keeping the working directories readable, set permissions.blockReadsOutsideWorkingDirectories.”(작업 디렉터리는 읽을 수 있게 두면서 샌드박스 안의 명령이 홈 디렉터리와 마운트된 볼륨을 읽지 못하게 하려면 permissions.blockReadsOutsideWorkingDirectories를 설정한다)입니다.15
  • Apple Events. “The sandbox blocks Apple Events by default,”(샌드박스는 기본적으로 Apple Events를 막는다) 그리고 allowAppleEvents를 켜면 “removes code-execution isolation.”(코드 실행 격리가 사라진다)15
  • 권한 모드(별개의 통제): default(Manual로 표시), acceptEdits, plan, auto, dontAsk, bypassPermissions. 마지막 모드에 대해 Anthropic은 “Only use this mode in isolated environments like containers or VMs where Claude Code can’t cause damage.”(Claude Code가 피해를 줄 수 없는 컨테이너나 VM 같은 격리된 환경에서만 이 모드를 쓴다)라고 말합니다.53

이 키들이 들어가는 설정 파일은 Claude Code 가이드에서 다룹니다.

Codex CLI(OpenAI)

  • 샌드박스: 기본적으로 켜짐. “The default permissions mode applies sandboxing automatically,”(기본 권한 모드는 샌드박스를 자동으로 적용한다) 그리고 “The sandbox applies to spawned commands, not just to built-in file operations.”(샌드박스는 내장 파일 작업뿐 아니라 생성된 명령에도 적용된다)16
  • 세 가지 모드. read-only: “The agent can inspect files, but it can’t edit files or run commands without approval.”(에이전트는 파일을 살펴볼 수 있지만, 승인 없이 파일을 편집하거나 명령을 실행할 수는 없다). workspace-write: 에이전트는 “read files, edit within the workspace, and run routine local commands inside that boundary. This is the default low-friction mode for local work.”(파일을 읽고, 작업 공간 안에서 편집하고, 그 경계 안에서 일상적인 로컬 명령을 실행할 수 있다. 이것이 로컬 작업을 위한 마찰이 적은 기본 모드다). danger-full-access: “The agent runs without sandbox restrictions.”(에이전트가 샌드박스 제한 없이 실행된다)16
  • 네트워크는 기본적으로 꺼짐. “By default, the agent runs with network access turned off,”(기본적으로 에이전트는 네트워크 접근이 꺼진 채 실행된다) 그리고 workspace-write는 “keeps network access turned off unless you enable it in your configuration.”(구성에서 켜지 않는 한 네트워크 접근을 꺼 둔다)60
  • 전체 접근. OpenAI는 이를 sandbox_mode = "danger-full-access"와 approval_policy = "never"의 조합으로 정의하며, 데스크톱 앱의 메뉴는 이를 “the internet and any file on your computer”(인터넷과 컴퓨터의 모든 파일)에 대한 무제한 접근으로 설명합니다.16
  • 읽기 범위는 문서에 명시되지 않음. 범위에 대한 OpenAI의 유일한 진술은 샌드박스가 “limits what it can touch (typically to the current workspace)”(건드릴 수 있는 것을 (보통 현재 작업 공간으로) 제한한다)라는 것입니다.60 read-only나 workspace-write의 읽기 범위는 나와 있지 않으며, 제 Mac에서 run 2(read-only)와 run 2c(제 구성, 모드 지정 없음)는 작업 공간에서 멀리 떨어진, 전체 디스크 접근 권한이 필요한 파일을 읽었습니다.5 이유는 소스에 있습니다. Seatbelt 기본 정책은 (deny default)로 시작하고 “child processes inherit the policy of their parent”(자식 프로세스는 부모의 정책을 상속한다)라고 적어 두었지만, 전체 읽기 접근에 읽을 수 없는 루트가 없으면 프로파일이 (allow file-read*)를 추가합니다.63 좁힐 방법은 있습니다. 권한 프로파일은 경로별로 "read", "write", "deny"를 받으며, 관리자에게는 requirements.toml의 permissions.filesystem.deny_read, 즉 “Admin-enforced filesystem read denials”(관리자가 강제하는 파일 시스템 읽기 거부)가 있습니다. OpenAI에 따르면 “users cannot weaken them with local config.”(사용자는 로컬 설정으로 이를 약화할 수 없다)21

프로파일과 승인 정책은 Codex 가이드에서 자세히 다룹니다.

Hermes Agent(Nous Research)

  • macOS 샌드박스는 없고 백엔드가 일곱 개. “Hermes supports seven terminal backends”(Hermes는 일곱 가지 터미널 백엔드를 지원한다): local, docker, ssh, modal, daytona, vercel_sandbox, singularity입니다.61
  • 기본값: local, 격리 없음. “The default. Commands run directly on your machine with no isolation,”(기본값. 명령이 격리 없이 여러분의 기계에서 직접 실행된다) 그리고 “By default, local tool subprocesses keep your real OS-user HOME.”(기본적으로 로컬 도구의 하위 프로세스는 실제 OS 사용자의 HOME을 그대로 쓴다)61
  • 명령 규칙은 샌드박스가 아님. “Deny rules are a shell-command policy, not a complete shell interpreter or an OS capability sandbox.”(거부 규칙은 셸 명령 정책일 뿐, 완전한 셸 인터프리터도 OS 기능 샌드박스도 아니다)64
  • 경계는 컨테이너. “For production gateway deployments, use docker, modal, daytona, or vercel_sandbox backend to isolate agent commands from your host system.”(프로덕션 게이트웨이 배포에서는 에이전트 명령을 호스트 시스템과 격리하기 위해 docker, modal, daytona, vercel_sandbox 백엔드를 쓴다)64

기본 백엔드에서 Hermes 에이전트는 자신의 터미널이 읽을 수 있는 것은 무엇이든 읽으며, 번들로 들어 있는 iMessage 스킬은 그 터미널에 전체 디스크 접근 권한을 주라고 요구합니다.13

OpenClaw

  • 샌드박스: 기본적으로 꺼져 있고, 도구에만 적용. “Sandboxing is off by default,”(샌드박스는 기본적으로 꺼져 있다) 그리고 “The Gateway process always stays on the host; only tool execution moves into the sandbox when enabled.”(게이트웨이 프로세스는 항상 호스트에 남고, 켰을 때 샌드박스로 옮겨 가는 것은 도구 실행뿐이다). OpenClaw는 이에 대해 솔직합니다. “This is not a perfect security boundary, but it materially limits filesystem and process access when the model does something dumb.”(이것은 완벽한 보안 경계가 아니지만, 모델이 어리석은 짓을 할 때 파일 시스템과 프로세스 접근을 실질적으로 제한한다)62
  • 모드. agents.defaults.sandbox.mode는 off(기본값), non-main, all을 받습니다. 백엔드의 기본값은 docker이고, 대안으로 podman, ssh, openshell, crabbox가 있습니다. Docker의 네트워크 기본값은 none입니다.65
  • 작업 공간 접근. none(기본값), ro, rw입니다.66
  • 탈출구. tools.elevated는 OpenClaw의 말로 “an explicit escape hatch”(명시적 탈출구)이며, exec를 샌드박스 밖에서 실행합니다.62

iMessage 채널의 전체 디스크 접근 권한은 게이트웨이의 프로세스 컨텍스트에 속하며, 그 컨텍스트는 결코 샌드박스로 옮겨 가지 않습니다.1462

나머지, 간단히

  • Gemini CLI. -s, 환경 변수, 설정 중 하나로 켜지 않으면 꺼져 있습니다. macOS의 기본 Seatbelt 프로파일 permissive-open은 “denies operations by default; confines writes to the project directory while allowing broad file reads and network access”(기본적으로 작업을 거부하고, 쓰기는 프로젝트 디렉터리로 한정하면서 넓은 파일 읽기와 네트워크 접근은 허용한다)이며, 프로파일 파일 자체에는 (allow file-read*)가 적혀 있습니다. strict-open과 strict-proxied는 읽기 제한을 추가합니다.17
  • Cursor. “the full subprocess tree”(하위 프로세스 트리 전체)에 Seatbelt를 쓰고, 네트워크는 “Blocked by default”(기본적으로 차단)입니다. 하지만 Read Access의 기본값은 System이며, “The agent can read files outside the workspace without approval. This is the default.”(에이전트는 승인 없이 작업 공간 밖의 파일을 읽을 수 있다. 이것이 기본값이다)입니다. Read Access 설정 자체에는 Cursor 3.23 이상이 필요합니다.18
  • VS Code. chat.agent.sandbox.enabled는 Copilot Agent Host 세션에만 적용되고, off나 on을 받으며 기본값은 off입니다. Microsoft는 한계를 분명히 밝힙니다. “Sandboxing is not a virtual machine or user-account boundary, and it does not replace endpoint security.”(샌드박스는 가상 머신이나 사용자 계정 경계가 아니며, 엔드포인트 보안을 대신하지 않는다)59
  • Aider. 문서화된 샌드박스가 없습니다.48

Seatbelt 계층에도 구멍은 있었습니다

Accomplish의 연구자들은 에이전트 도구를 대상으로 한 샌드박스 탈출 다섯 건을, 2026년 7월 23일부터 9월 15일 사이에 작성된 글 네 편으로 공개했습니다. 네 건은 공개 전에 수정되었고, 다섯째는 Anthropic에 보고되어 “Informative”(참고 정보)로 종결되었습니다. Claude Code에 대해서는, 샌드박스를 켜고 가장 엄격한 권한 모드를 쓴 상태에서도 저장소에서 온 명령이 “ran on our Mac anyway, outside the sandbox, with no permission prompt”(그래도 우리 Mac에서, 샌드박스 밖에서, 권한 프롬프트 없이 실행되었다)라고 합니다. Anthropic은 2.1.247에서 이를 수정했습니다.67 Cursor CLI에 대해서도 근본 원인은 같았습니다. “the Seatbelt profile wraps only the shell tool, while the harness’s own internal git runs unsandboxed and honors repository-supplied core.fsmonitor hooks.”(Seatbelt 프로파일은 셸 도구만 감싸고, 하네스 자체의 내부 git은 샌드박스 없이 실행되며 저장소가 제공하는 core.fsmonitor 훅을 따른다)68 Codex에 대해서는 2026년 8월 12일에 보고된 두 건의 탈출이 있었고 “Both were fixed inside of eight days”(둘 다 8일 안에 수정되었다)라고 합니다. 그중 하나에서는 “launchd starts the application unsandboxed, outside Codex’s process tree.”(launchd가 응용 프로그램을 샌드박스 없이, Codex의 프로세스 트리 밖에서 실행한다)69 Claude Cowork의 VM에 대해서는 호스트의 읽기·쓰기 마운트로의 탈출이 있었고, 거기서 “reads and writes the host Mac’s filesystem directly, as the logged-in desktop user.”(로그인한 데스크톱 사용자로서 호스트 Mac의 파일 시스템을 직접 읽고 쓴다)라고 합니다.70 네 편의 글 어느 것도 전체 디스크 접근 권한 데이터를 읽지는 않습니다. 연구자들의 주장이 아니라 제 해석입니다만, Seatbelt를 벗어나더라도 터미널의 실행 체인 안에 머무는 프로세스에는 터미널의 TCC 허용이 남습니다. 따라서 터미널이 전체 디스크 접근 권한을 가진 Mac에서는 그런 종류의 탈출이 전체 디스크 접근 권한 데이터에도 닿습니다. 에이전트가 전체 디스크 접근 권한 허용을 통해 사용자의 의도에 반해 Mail, Messages, 브라우저 데이터를 읽었다는 사후 분석, 권고문, 연구자 글은 찾지 못했습니다.

5. 제 Mac에서: 무엇이 전체 디스크 접근 권한을 가졌고, 어떻게 아는가

이 섹션의 내용은 모두 2026년 10월 11일, Claude Code 세션에서 제 Mac으로 직접 한 제 측정입니다. macOS 27.0, 빌드 26A428, System Integrity Protection 활성 상태입니다. 두 개를 제외한 모든 명령은 읽기 전용이었습니다. 한 테스트는 launchd 작업을 등록해 그 출력을 파일 두 개에 쓰게 한 뒤 작업을 제거했고, 다른 하나는 실행을 위해 Anthropic의 sandbox-runtime 0.0.79를 npx -y로 설치하고 그 실행용으로 임시 설정 파일 두 개를 썼습니다. 샌드박스 안의 쓰기 탐침은 시도였고 샌드박스가 거부했습니다. 네트워크 탐침은 실패한 시도였으며, 그 원인은 기록으로 확정할 수 없습니다. 저는 어떤 설정도 바꾸지 않았고, 아무것도 허용하거나 회수하지 않았습니다.195 찾은 것은 앱 이름과 서비스 이름으로 설명합니다. 증거가 어떤 프로그램이 전체 디스크 접근 권한 목록에 있음을 보여 주는 곳에서는 “목록에 올라 있다”고 쓰고, “접근 권한이 있다”고 쓰는 것은 읽기로 접근이 실제로 작동함을 보인 곳뿐입니다.

에이전트의 실행 체인

Claude Code가 명령을 실행하는 셸은 zsh이고, 이를 시작한 것은 claude, 그것을 시작한 것은 제 로그인 셸, 그것을 시작한 것은 login, 그것을 시작한 것은 터미널 앱인 Ghostty입니다. 환경은 TERM_PROGRAM을 ghostty로 보고합니다.19 Apple 지원 엔지니어의 규칙에 따르면 이 체인 안 모든 것의 책임 코드는 Ghostty입니다.3

목록 읽기

제가 확인한 범위에서 macOS는 전체 디스크 접근 권한 보유자를 나열하는 명령을 문서화하지 않습니다. tccutil의 명령은 reset 하나뿐입니다.34 목록은 TCC의 데이터베이스에 있습니다. 에이전트의 셸에서는 사용자별 데이터베이스를 열 수 없었고, 그 폴더는 사용자의 Application Support 폴더 디렉터리 목록에도 나타나지 않았습니다. 이유는 모릅니다. macOS 27 릴리스 노트에 “Apps can no longer access the local TCC database directly”(앱은 더 이상 로컬 TCC 데이터베이스에 직접 접근할 수 없다)라는 말이 있어 그것이 이유일 수도 있지만, 노트가 어느 데이터베이스를 뜻하는지 밝히지 않으므로 설명되지 않은 채로 둡니다.1923

시스템 전체 데이터베이스는 열렸습니다. 서비스와 클라이언트 두 열만 선택하고, 전체 디스크 접근 권한 서비스로 거른 뒤, 각 스위치가 켜져 있는지를 기록하는 열은 한 번도 읽지 않았습니다. 결과는 75개 행이었습니다.19 애초에 열 수 있었다는 사실 자체가 증거입니다. 2022년 Jeff Johnson은 전체 디스크 접근 권한을 가진 Terminal이 “can read or write any restricted files, including the TCC database itself”(TCC 데이터베이스 자체를 포함해 제한된 어떤 파일이든 읽고 쓸 수 있다)라는 것을 보여 주었습니다. 그는 사용자별 데이터베이스로 이를 보였고, 아래의 대조 테스트는 이 Mac에서 시스템 데이터베이스에 대해서도 같다는 것을 보여 줍니다.465 이는 또한 앞서 인용한 릴리스 노트에도 불구하고, macOS 27.0에서는 실행 체인에 허용을 가진 프로세스가 시스템 TCC 데이터베이스를 여전히 직접 읽을 수 있었다는 뜻입니다.1923

저자의 Mac에 있는 전체 디스크 접근 권한 75개 행을 한 행에 한 칸씩 종류별로 묶은 그림: Claude Code 바이너리 30개(각각 다른 버전이며, 가장 오래된 것은 2.1.177, 가장 새로운 것은 2.1.296), 그 밖의 서드파티 앱·헬퍼·업데이터 25개, 인터프리터 5개(node와 python3 버전 네 개), 저자 자신의 개발 빌드 5개, 그 밖의 Apple 앱과 서비스 3개, 터미널 3개(Terminal, iTerm2, Ghostty), 에이전트 호스트 3개(ChatGPT, Cursor, Xcode), 원격 로그인용 SSH 서버 항목 1개. 파란색은 에이전트가 그 아래에서 또는 그것을 통해 실행될 수 있는 42개 행, 회색은 나머지 33개 행

75개 행은 종류별로 규칙 하나씩을 순서대로 적용해 분류했습니다. 세 터미널의 번들 ID, 버전 번호가 붙은 Claude Code 바이너리로 가는 클라이언트 경로, ChatGPT·Cursor·Xcode의 번들 ID, node나 python3.x 인터프리터 경로, SSH 서버의 클라이언트, com.apple.이나 /System/으로 시작하는 클라이언트, 제 개발 빌드, 그리고 나머지 전부의 순서입니다.1947 각 그룹의 내용은 다음과 같습니다.

  • 터미널(3). Terminal, iTerm2, Ghostty 모두 목록에 올라 있습니다.
  • Claude Code(30). 서른 개의 별도 행이며, 각각 Claude Code 바이너리의 한 버전으로 가는 경로입니다. 2.1.177부터 이 세션이 실행한 버전인 2.1.296까지입니다.1947 Anthropic은 네이티브 설치 프로그램을 쓰면 백그라운드 세션 호스트의 항목이 “appears as Claude Code and the grant persists across updates.”(Claude Code로 표시되고 허용은 업데이트 후에도 유지된다)라고 말합니다.51 이 Mac의 데이터베이스는 버전마다 행 하나를 저장합니다. 시스템 설정이 이를 어떻게 표시하는지, 각 스위치가 켜져 있는지는 확인하지 않았습니다. 검증하지 않은 제 해석으로는, 이것들은 업데이트마다 하나씩 생긴 백그라운드 세션 호스트의 요청입니다.
  • 에이전트 호스트(3). ChatGPT 앱(번들 ID com.openai.codex), Cursor, Xcode입니다.1947 Xcode가 여기 들어가는 것은 Xcode 27이 에이전트를 호스팅하기 때문입니다. 그 릴리스 노트에는 “Agents in Xcode can now be extended with plugins that contain skills, MCP servers, and ACP agent configurations”(Xcode의 에이전트는 이제 스킬, MCP 서버, ACP 에이전트 구성을 담은 플러그인으로 확장할 수 있다)라고 되어 있고, Agent Client Protocol 지원도 추가되었습니다.24 그 에이전트들이 생성하는 프로세스를 TCC가 Xcode에 귀속시키는지는 문서화되어 있지 않고, Xcode는 터미널처럼 동작하지 않을 수도 있습니다. 2024년, 어떤 도구 자체의 허용이 Xcode에서 실행할 때만 인정되는 이유를 질문받은 Apple 지원 엔지니어는 “Xcode runs the tool in a way that makes it clear to the system that Xcode is not the responsible code for this process”(Xcode는 이 프로세스의 책임 코드가 Xcode가 아님을 시스템에 분명히 하는 방식으로 도구를 실행한다)라고 답했습니다. Xcode 디버거 아래의 체인을 살펴본 뒤 그는 “I expect that one of these is breaking TCC’s responsible code search”(이 중 하나가 TCC의 책임 코드 탐색을 끊고 있다고 본다)라고 쓰고, “I suspect that’s deliberate.”(의도된 것이라고 짐작한다)라고 덧붙였습니다.3 즉 Xcode는 목록에 올라 있고 에이전트를 호스팅하지만, Xcode가 실행하는 도구에 대해 Apple 엔지니어는 터미널 규칙과 정반대를 설명합니다.
  • 인터프리터(5). Homebrew node 하나와 Homebrew Python 인터프리터 넷입니다. Apple 지원 엔지니어는 바로 이것을 경고합니다. 인터프리터에 권한을 주면 “then any script could do that.”(어떤 스크립트든 그렇게 할 수 있게 된다)20 OpenClaw도 손쉬운 사용과 관련해 node에 같은 경고를 합니다. 그런 항목은 “as broad permission for that Node runtime, not as permission for one npm package.”(npm 패키지 하나에 대한 권한이 아니라 그 Node 런타임에 대한 넓은 권한으로) 다루라는 것입니다.50
  • SSH(1). SSH 서버 쪽 클라이언트인 sshd-keygen-wrapper입니다. 저는 이것을 “Allow full disk access for remote users”(‘원격 사용자에 대해 전체 디스크 접근 권한 허용’)가 제어하는 항목으로 봅니다.193
  • 그 밖의 Apple(3), 제 빌드(5), 나머지 전부(25). 마지막 그룹에는 디스크 및 정리 유틸리티, 보안 제품군, VPN과 클라우드 저장소 클라이언트, 업데이터, 프린터 소프트웨어, 게임, 화상 회의 앱, 메시징 앱이 있습니다. 몇몇은 디스크 유틸리티, 즉 Apple이 거론하는 또 다른 종류의 소프트웨어이지만, 75개 중 백업 앱은 하나도 없습니다.

75개 행 가운데 42개는 에이전트가 그 아래에서 또는 그것을 통해 실행될 수 있는 것입니다. 그중 백업 앱은 하나도 없습니다.

일곱 번의 실행: 샌드박스와 허용은 별개의 계층

어느 계층이 판정하는지 보려고, 하나의 탐침, 즉 그 시스템 데이터베이스에서 행 하나를 읽는 작업을 조건을 바꿔 가며 실행했습니다. 여기에 두 샌드박스 안에서의 쓰기 탐침과 sandbox-runtime 안에서의 네트워크 탐침을 더했습니다.5

저자의 Mac(macOS 27.0, 2026년 10월 11일)에서 실행한 일곱 번의 결과 표. Run 1, Ghostty 안의 에이전트 셸, 샌드박스 없음: TCC 데이터베이스 읽기가 행을 반환. Run 2, Codex의 read-only Seatbelt 샌드박스 안: 행을 반환. Run 2b, 같은 샌드박스에서 작업 공간 밖 쓰기: Seatbelt가 거부. Run 2c, 저자의 구성으로 실행한 Codex: 행을 반환. Run 3a, 읽기 거부가 없는 Anthropic의 sandbox-runtime: 행을 반환. Run 3b, TCC 폴더 읽기를 거부하는 sandbox-runtime: Seatbelt가 거부. Run 4, 실행 체인에 Ghostty가 없는 launchd 작업에서 같은 읽기: TCC가 거부

  1. 에이전트의 셸, 샌드박스 없음. 읽기가 행을 반환했습니다.
  2. Codex CLI 0.154.0의 Seatbelt 샌드박스 안, read-only 모드. 읽기가 행을 반환했습니다. 같은 샌드박스는 작업 공간 밖의 touch를 “Operation not permitted”로 거부했으므로(run 2b) 샌드박스는 작동하고 있었습니다. 다만 그곳의 읽기는 막지 않을 뿐입니다. 샌드박스 모드를 지정하지 않고 네트워크 접근을 켜 둔 제 Codex 구성으로도 읽기는 행을 반환했습니다(run 2c).
  3. Anthropic의 sandbox-runtime 0.0.79 안(Claude Code 샌드박스의 기반 패키지), 읽기 거부 없음(run 3a): 읽기는 행을 반환했고, 허용된 폴더 밖으로의 쓰기는 거부되었으며 네트워크 요청은 실패했습니다(curl 종료 코드 56. 기록으로는 이유를 알 수 없습니다). denyRead를 TCC 폴더로 설정하자(run 3b) 읽기는 “authorization denied”로 실패했습니다.
  4. 대조 실험. 같은 sqlite3 읽기를 launchd 작업으로 등록해, Ghostty도 Claude Code도 실행 체인 어디에도 없게 한 경우: “authorization denied”.5

나머지 결과에 의미를 주는 것은 이 대조 실험입니다. 데이터베이스 파일은 root 소유이고 모드(-rw-r--r--)상 누구나 읽을 수 있으므로, run 4를 거부한 것은 파일 권한이 아니라 TCC입니다.195 같은 바이너리, 같은 파일, 같은 사용자인데, 에이전트의 셸에서는 성공하고 그 밖에서는 실패했습니다. 에이전트의 셸이 가진 것은 실행 체인에서 온 것입니다. 지원 엔지니어의 규칙은 그 체인의 책임 코드로 터미널을 지목합니다.3 이 데이터로 없앨 수 없는 단서가 하나 있습니다. 체인에는 claude 프로세스도 있고 Claude Code 바이너리도 목록에 올라 있습니다. run 3a와 3b에서는 node 프로세스가 sandbox runtime을 실행했고 Homebrew node도 목록에 있지만, npx가 어느 node를 썼는지는 기록되지 않았습니다. 제 측정이 보여 주는 것은 접근 권한이 체인에서 온다는 점이고, 지원 엔지니어의 규칙은 그것이 터미널이라고 말합니다. TCC가 쓴 것이 Claude Code나 node의 행이 아니라 Ghostty의 행이라는 것을 측정이 따로 증명하지는 않습니다. Apple 지원 엔지니어는 그 알고리즘이 문서화되어 있지 않다고 말합니다.3

run 3b와 4는 서로 다른 계층이 거부했는데도 똑같은 오류를 출력합니다. 에이전트 출력에서 “authorization denied”를 본 운영자는 그 메시지만으로는 거부한 것이 샌드박스인지 TCC인지 알 수 없습니다.5

여러분의 Mac에서 해 보기

에이전트가 쓰는 셸에서 실행하면, 그 셸의 실행 체인이 전체 디스크 접근 권한을 가진 경우 전체 디스크 접근 권한 목록이 출력됩니다. 체인이 권한을 갖지 않았거나, run 3b처럼 샌드박스 규칙이 폴더를 거부하면 “authorization denied”로 실패합니다. 두 열만 읽고 아무것도 바꾸지 않습니다. 결과는 행이지 스위치 상태가 아닙니다.

# Run from the same terminal (or editor terminal) you run agents in.
sqlite3 -readonly "/Library/Application Support/com.apple.TCC/TCC.db" \
  "SELECT service, client FROM access WHERE service='kTCCServiceSystemPolicyAllFiles';"
echo "exit=$?"

이것은 제가 macOS 27.0에서 실행한 쿼리 그대로입니다.19 TCC가 어떤 접근을 어느 앱에 귀속시켰는지 보려면, Apple 배포 가이드가 제시하는 로그 스트림 log stream --debug --predicate 'subsystem == "com.apple.TCC" AND eventMessage BEGINSWITH "AttributionChain"'을 쓸 수 있습니다. 가이드는 이를 책임 앱이나 바이너리를 실시간으로 “to try to identify”(식별해 보기 위한) 방법으로 제시합니다.31 이번 측정에서 저는 이를 실행하지 않았고, 그래서 섹션 5는 판정한 것이 Ghostty의 행인지 체인의 다른 행인지 말할 수 없습니다. 위 데이터베이스 쿼리는 이후 릴리스에서 동작하지 않을 수 있습니다. Apple은 이 파일도 그 스키마도 문서화하지 않으며, macOS 27 노트는 이미 앱이 “can no longer access the local TCC database directly.”(더 이상 로컬 TCC 데이터베이스에 직접 접근할 수 없다)라고 말합니다.23

6. 지금 할 일

10월 11일에 읽은 시점까지 새 통제에 대한 공개된 메커니즘이나 릴리스 노트를 찾지 못했으므로, 여기 있는 것은 마이그레이션이 아닙니다. 에이전트를 실행하는 Mac이라면 어디서든 오늘 제가 할 일을, 각 단계의 출처와 비용과 함께 적은 것입니다. 제 Mac에서도 아직 다 하지는 않았습니다. 섹션 5가 그 “이전” 모습입니다.

1. 누가 전체 디스크 접근 권한을 가졌는지 확인하십시오. 시스템 설정 > 개인정보 보호 및 보안 > 전체 디스크 접근 권한을 열고 목록을 읽으십시오.4 터미널, 편집기, 에이전트 앱, 에이전트 바이너리, 인터프리터, 그리고 알아보지 못하는 것을 찾으십시오. 셸에서는, 그 셸이 이미 접근 권한을 가졌다면 섹션 5의 쿼리가 목록을 출력하며, 이는 에이전트의 셸이 권한을 가졌는지에 대한 테스트도 겸합니다. 다만 실패는 run 3b처럼 폴더를 거부하는 샌드박스 규칙에서 올 수도 있습니다.5 비용: 없습니다. 목록에 올라 있는 앱이 반드시 켜져 있는 것은 아니라는 점을 기억하십시오.

2. 에이전트를 실행하는 터미널에서 권한을 빼십시오. 이것이 가장 많은 것을 바꾸는 단계입니다. 명령줄 도구의 책임 코드는 터미널이므로, 터미널의 허용이 곧 에이전트의 허용입니다.32 백업이나 관리 작업 때문에 명령줄에서 전체 디스크 접근 권한이 필요하다면(tmutil과 fdesetup 문서가 상정하는 용도가 바로 이것입니다), 허용을 가진 두 번째 터미널 앱을 두고 거기서는 절대 에이전트를 시작하지 마십시오.4344 (이 마지막 부분은 Apple이 아니라 제 제안입니다. Jeff Johnson은 샌드박스가 없는 앱이 Apple의 Terminal에서 스크립트를 열어 그 허용을 빌릴 수 있음을 시연했습니다. 제 해석으로는 스크립트를 여는 두 번째 터미널 앱에도 같은 일이 적용될 수 있습니다.46) 비용: 보호된 위치에서 “Operation not permitted” 실패가 시작되고, 파일 및 폴더 프롬프트가 돌아옵니다. Apple의 폴더별 통제는 “Desktop, Documents, Downloads, network volumes, and removable volumes.”(데스크탑, 문서, 다운로드, 네트워크 볼륨, 이동식 볼륨)를 다룹니다.10 Anthropic은 Claude Code의 백그라운드 세션에 대해 같은 실패와 그 해결책, 곧 해당 항목에 대한 파일 및 폴더 허용을 문서화했습니다.51 OpenClaw는 폴더별 허용을 피하려면 파일을 작업 공간 안에 두라고 권합니다.50

3. 에이전트 자신의 항목을 확인하십시오. Claude Code의 백그라운드 호스트는 “separately from your terminal”(터미널과 별도로) 접근을 요청하며, 자기 몫의 전체 디스크 접근 권한 항목을 가질 수 있습니다.51 제 Mac에는 버전 번호가 붙은 Claude Code 바이너리 30개가 목록에 올라 있는데, 검증하지는 않았지만 저는 이를 그 호스트의 항목으로 해석합니다.19 허용할 생각이 없었던 것은 제거하고, 백그라운드 세션에 폴더가 필요한 곳에는 대신 파일 및 폴더 권한을 주십시오. 에이전트 앱도 각자 행을 가집니다. 제 Mac에서는 ChatGPT, Cursor, Xcode 앱이 모두 목록에 올라 있습니다.19 비용: 보호된 폴더를 읽는 백그라운드 세션은 더 좁은 접근을 줄 때까지 실패합니다.

4. 인터프리터에는 절대 주지 마십시오. Apple 지원 엔지니어의 말입니다. “if you have a script that needs to manipulate files on your desktop, you wouldn’t want to give the interpreter that privilege because then any script could do that.”(데스크탑의 파일을 다뤄야 하는 스크립트가 있더라도 인터프리터에 그 권한을 주고 싶지는 않을 것이다. 그러면 어떤 스크립트든 그렇게 할 수 있기 때문이다) 그의 해결책은 “package your script as a standalone program that MAC can use for its tracking.”(스크립트를 MAC이 추적에 쓸 수 있는 독립 실행형 프로그램으로 패키징한다)입니다.20 인터프리터 자체의 행은 인터프리터가 책임 코드가 되는 곳, 예를 들어 연결된 앱 없이 launchd 작업으로 스크립트를 실행하는 경우에 효력을 냅니다. 그러면 그 인터프리터를 통해 그렇게 실행된 모든 Python이나 Node 스크립트가, MCP 서버까지 포함해 허용 전체를 얻습니다.32 비용: 정말로 접근이 필요한 스크립트에 대해 그의 “easiest solution”(가장 쉬운 해결책)은 MAC이 추적할 수 있는 독립 실행형 프로그램으로 패키징하는 것인데, 그는 AppleScript로는 쉽지만 셸 스크립트로는 쉽지 않다고 말합니다.20

5. 공급업체 샌드박스를 켜고, 필요 없는 읽기를 거부하십시오. 기본값은 넓게 읽으므로, 샌드박스를 켜는 것은 필요조건이지만 충분조건은 아닙니다.

  • Claude Code: sandbox.enabled를 켜고, 이어서 permissions.blockReadsOutsideWorkingDirectories(또는 sandbox.filesystem.denyRead 규칙)를 설정하고, 샌드박스 밖 재시도를 없애기 위해 "allowUnsandboxedCommands": false를 설정하십시오.15 Read 도구, 훅, MCP 서버는 그 밖에 있다는 점을 기억하십시오.15 비용: 다른 경로나 호스트가 필요한 도구는 허용할 때까지 실패하고, excludedCommands 항목 하나하나가 틈을 다시 엽니다.15
  • Codex: workspace-write나 read-only에 머물고 danger-full-access는 피하십시오. 권한 프로파일에 "deny" 읽기 규칙을 추가하거나, 팀이라면 관리자가 강제하는 파일인 requirements.toml에 permissions.filesystem.deny_read를 설정해 사용자가 약화하지 못하게 하십시오.1621 비용: 네트워크가 필요한 명령에는 승인이나 network_access가 필요합니다.60
  • Gemini CLI: -s와 함께 SEATBELT_PROFILE=strict-open 또는 strict-proxied로 실행하십시오. 문서가 읽기를 제한한다고 설명하는 두 프로파일입니다.17 비용: 이 프로파일들은 쓰기뿐 아니라 읽기도 제한하므로, 프로젝트 밖을 읽는 도구는 더 느슨한 프로파일을 고를 때까지 그 아래에서 실패합니다.
  • Cursor: Read Access를 System에서 Workspace로 바꾸십시오. 이 설정에는 Cursor 3.23 이상이 필요하며, 제 Mac의 Cursor는 3.19.7입니다.1847 비용: 작업 공간 밖의 파일 읽기는 먼저 확인을 요청하게 되고, 샌드박스 안의 명령은 작업 공간, 여러분의 Read Allowlist, 그리고 일반 도구에 필요한 시스템 경로만 보게 됩니다.18
  • VS Code: chat.agent.sandbox.enabled를 켜십시오. 적용 대상은 Copilot Agent Host 세션뿐이며, “not the Local chat harness or the custom terminal tool override.”(로컬 채팅 하네스나 사용자 지정 터미널 도구 재정의는 대상이 아니다)입니다.59 비용: 기본값 밖의 경로나 도구가 필요한 명령은 허용해 주어야 하고, 그래도 Microsoft는 이것이 “not a virtual machine or user-account boundary”(가상 머신이나 사용자 계정 경계가 아니다)라고 하며 외부로 나가는 네트워크는 기본적으로 열려 있습니다. 틈을 닫는 것이 아니라 좁히는 것입니다.59
  • Hermes Agent와 OpenClaw: 컨테이너 백엔드를 쓰십시오. Hermes는 프로덕션 게이트웨이에 이를 권장합니다. OpenClaw의 샌드박스는 기본적으로 꺼져 있고, 그들의 말로 “not a perfect security boundary”(완벽한 보안 경계가 아니다)이지만, 샌드박스가 “materially limits filesystem and process access”(파일 시스템과 프로세스 접근을 실질적으로 제한한다)라고 합니다.6462 비용: 컨테이너 안에서 실행되는 명령은 호스트에 대한 무제한 접근을 잃지만(Hermes는 백엔드가 “agent commands from your host system”(에이전트 명령을 호스트 시스템으로부터) 격리한다고 설명합니다), 마운트되거나 동기화된 파일에는 여전히 닿습니다. Hermes의 Docker와 Singularity 백엔드는 바인드 마운트, 즉 “live host filesystem view”(호스트 파일 시스템의 실시간 보기)를 쓰고, docker_volumes 설정은 호스트 디렉터리를 공유하며, OpenClaw의 작업 공간 접근은 기본값 none 외에 ro나 rw도 될 수 있습니다.646166 비용은 작업에 필요한 파일을 명시적으로 공급하고 그 마운트를 감사하는 일입니다. 다루지 못하는 것: OpenClaw의 게이트웨이는 호스트에 남으므로, 구성된 iMessage 채널은 게이트웨이 프로세스 컨텍스트의 전체 디스크 접근 권한을 계속 가집니다. 도구를 컨테이너에 넣어도 그 노출은 사라지지 않습니다.6214 Hermes의 iMessage 스킬은 호스트 쪽 사전 요구 사항(Messages 로그인, imsg 설치, 터미널의 전체 디스크 접근 권한)을 나열합니다. 컨테이너 백엔드에서 이 스킬이 어떻게 동작하는지 다룬 Hermes 페이지는 찾지 못했습니다.13

한계: 제 Mac에서 어떤 샌드박스도 전체 디스크 접근 권한 허용을 바꾸지 않았습니다. 샌드박스가 보호된 읽기를 막은 것은 프로파일이 그 경로를 이름으로 지정해 거부했을 때뿐이었고, Claude Code, Cursor CLI, Codex의 Seatbelt 계층에는 각각 공개된 탈출이 있었으며 모두 수정되었습니다.5676869

6. Messages를 읽는 에이전트는 별도의 macOS 사용자에 두거나, 쓰지 마십시오. iMessage 봇에 대한 OpenClaw 자체의 배포 권고는 “Use a dedicated Apple ID and macOS user so bot traffic is isolated from your personal Messages profile.”(봇 트래픽이 개인 Messages 프로필과 격리되도록 전용 Apple ID와 macOS 사용자를 쓴다)입니다.71 그 사용자는 일반 계정으로 만드십시오. Apple에 따르면 일반 사용자는 “can install apps and change their own settings, but can’t add other users or change other users’ settings.”(앱을 설치하고 자기 설정을 바꿀 수 있지만, 다른 사용자를 추가하거나 다른 사용자의 설정을 바꿀 수는 없다)72 제 Mac에서 제 사용자의 Library, Mail, Messages 폴더는 파일 모드상 저만 읽을 수 있으므로, 다른 일반 사용자로 실행되는 프로세스는 TCC에 묻기도 전에 일반 파일 권한에 의해 거부됩니다. 이는 모드에서 끌어낸 제 추론이지, 실행한 테스트가 아닙니다.19 단서가 두 가지 있습니다. Apple 지원 엔지니어에 따르면 전체 디스크 접근 권한은 사용자별이 아니라 “system wide”(시스템 전체)이므로, 한 계정에서 이를 허용받은 앱은 모든 계정에서 이를 가집니다. 그리고 Apple 가이드에 따르면 이 설정은 “certain administrative settings for all users on this Mac.”(이 Mac의 모든 사용자에 대한 특정 관리 설정)까지 닿습니다.204 비용: 두 번째 로그인, 두 번째 키체인과 설정 일체, 그리고 공유하지 않는 한 주 계정의 파일을 볼 수 없는 에이전트.

7. 필요 없다면 “Allow full disk access for remote users”(‘원격 사용자에 대해 전체 디스크 접근 권한 허용’)를 끄십시오. SSH로 에이전트를 다룬다면 책임 코드는 SSH 서버이고, 이 설정이 그 허용입니다.3 제 Mac에서는 그 클라이언트가 목록에 올라 있습니다.19 비용: 원격 셸이 보호된 위치에 대한 접근을 잃습니다.

8. 여러분으로서 말하는 모든 것에는 동작마다 승인을 유지하십시오. OpenAI: “Persistent approval removes your final chance to review a message before ChatGPT sends it as you. Use it only when you accept that risk.”(지속 승인을 쓰면 ChatGPT가 여러분으로서 메시지를 보내기 전에 검토할 마지막 기회가 사라진다. 그 위험을 받아들일 때만 쓴다)22 Anthropic: bypassPermissions는 “isolated environments like containers or VMs.”(컨테이너나 VM 같은 격리된 환경)를 위해 남겨 두십시오.53 비용: 클릭이 늘어납니다. 그것이 핵심입니다.

9. Mac을 관리한다면, 프로파일이 무엇을 허용하는지 감사하십시오. 개인정보 보호 환경설정 정책 제어 프로파일은 터미널을 포함해 어떤 번들 ID나 경로에도 SystemPolicyAllFiles를 허용할 수 있으며, “The user isn’t prompted and can’t change this value.”(사용자에게 묻지 않으며, 사용자는 이 값을 바꿀 수 없다)237 macOS 27에서는 그 페이로드의 앱별 부분이 사용 중단으로 표시되었고, 선언적 후속 구성에는 전체 디스크 접근 권한 키가 없습니다.3738 사용자가 직접 허용한 전체 디스크 접근 권한을 MDM이 보고하는 방법을 Apple이 문서화한 것은 찾지 못했습니다. 비용: 찾아낸 프로파일이 백업이나 보안 에이전트를 떠받치고 있을 수 있습니다. Apple 자신의 예제도 조직의 앱에 “without prompting the user”(사용자에게 묻지 않고) 접근을 줍니다.31

에이전트를 무인으로 실행하는 일은 루프 엔지니어링 가이드에서 다룹니다. 프롬프트를 읽을 사람이 키보드 앞에 없을 때, 위의 모든 단계는 더 강하게 적용됩니다.

7. 무엇이 바뀔 수 있는가: 조건을 붙인 하나의 해석

이 섹션의 내용은 모두 Apple의 문구와, Apple이 그 곁에서 이미 내놓은 변경에 대한 제 해석입니다. Apple은 어떤 메커니즘도 발표하지 않았고, 저도 아무것도 예측하지 않습니다. 아래의 각 형태는 10월 2일 문구가 허용하는 것, 그것을 더 그럴듯하게 또는 덜 그럴듯하게 만드는 증거, 그리고 그것이 에이전트에 영향을 주는 조건입니다.

더 엄격한 허용 절차. 문구 자체의 동사는 허용에 관한 것입니다. 사용자는 “who genuinely wish to grant an app this extraordinary level of access can only do so with very explicit user action,”(앱에 이 정도로 예외적인 수준의 접근을 정말로 허용하려는 경우 매우 명시적인 사용자 동작으로만 그렇게 할 수 있다) 그리고 “clearly understand these risks before granting such access.”(그러한 접근을 허용하기 전에 이 위험을 분명히 이해해야 한다)1 Apple은 설명을 곁들인 동의를 이미 내놓은 적이 있습니다. macOS 27의 선언적 앱 설정은 개인정보 기본값을 적용하기 전에, 조직이 반드시 적어야 하는 사유를 담은 동의 프롬프트를 사용자에게 보여 줍니다.3938 조건: 새 통제가 새로운 허용에만 적용된다면, 이미 전체 디스크 접근 권한을 가진 터미널은 그것을 유지하고, 그 안에서 실행되는 에이전트는 사용자가 이를 재설정할 때까지 영향을 받지 않습니다. 기존 허용에도 적용된다면, 전체 디스크 접근 권한을 가진 모든 터미널도 영향을 받습니다. 공지는 어느 쪽도 말하지 않습니다.

더 좁은 범위. Apple은 스위치를 그대로 두고 그 아래에서 데이터를 옮길 수도 있습니다. Apple은 이런 경계를 이전에도 다시 그었습니다. Catalina는 전체 디스크 접근 권한이 필요한 대상에 휴지통을 추가했고, macOS 14와 15는 앱 컨테이너와 그룹 컨테이너를 각각 별도의 보호 아래 두었으며, macOS 27은 다른 팀의 컨테이너를 기본적으로 거부하고 XProtect가 “app data that is commonly targeted by malicious software.”(악성 소프트웨어가 흔히 노리는 앱 데이터)를 제한하도록 했습니다.112023 조건: Apple이 Mail, Messages, Safari 데이터를 전체 디스크 접근 권한이 미치지 않는 별도의 통제 아래로 옮긴다면, 터미널이 전체 디스크 접근 권한을 유지하더라도 터미널 경로는 그것들에 닿지 못하게 됩니다. 공지는 범위 축소를 언급하지 않으며, 그 “this extraordinary level of access”(이 정도로 예외적인 수준의 접근)라는 표현은 지금 그대로의 허용을 묘사합니다.

상속되는 허용의 다른 처리. “grant an app”(앱에 허용한다)과 앱의 자식인 에이전트 사이의 틈이 이 글의 주제이며, Apple에는 이를 다룰 수 있는 조각이 이미 두 개 있습니다. Xcode 27에는 이미 “a new security layer that monitors and controls filesystem access by coding agents and any processes they spawn,”(코딩 에이전트와 그것이 생성하는 모든 프로세스의 파일 시스템 접근을 감시하고 통제하는 새 보안 계층)이 있고, macOS 27의 Endpoint Security는 es_new_descendants_client를 추가했습니다. 이것은 “the entire subtree rooted at the calling process”(호출한 프로세스를 뿌리로 하는 하위 트리 전체)만 감시하며, 헤더에 따르면 “Does NOT require TCC approval,”(TCC 승인이 필요하지 않다)이지만 es_new_client와 마찬가지로 com.apple.developer.endpoint-security.client 인타이틀먼트가 필요합니다.2425 Apple 지원 엔지니어는 2026년 9월 18일 파일 권한 게시물에 후자를 추가했습니다.20 두 문서 모두 전체 디스크 접근 권한과 연결되지 않습니다. 조건(제 해석으로서): “an app”(앱)에 대한 통제는 터미널에 떨어지며, Apple이 그 엔지니어가 문서화되지 않았고 “subject to change”(바뀔 수 있다)라고 부르는 책임 코드 귀속 방식을 바꾸거나, 새 통제를 descendants 클라이언트 같은 것에 묶지 않는 한, 그 안의 모든 에이전트는 계속 결과를 상속합니다. 두 문서 모두 그렇게 하겠다고 말하지 않습니다.

관리 대상 Mac. MDM은 오늘 사용자에게 묻지 않고 전체 디스크 접근 권한을 허용할 수 있습니다.37 macOS 27에서 그 페이로드의 앱별 부분은 사용 중단되었고, 선언적 후속 구성에는 전체 디스크 접근 권한 키가 없습니다.3738 조건: “very explicit user action”(매우 명시적인 사용자 동작)이 MDM 허용에도 적용된다면 프로파일을 통한 조용한 허용은 더 이상 불가능해지고, 적용되지 않는다면 관리 대상 Mac에는 조용한 경로가 남습니다. Apple은 어느 쪽에 대해서도 말하지 않았고, macOS 27의 사용 중단을 10월 2일 공지와 연결하지도 않았습니다.

시기. 공지는 “Going forward”(앞으로)라고 말합니다. 공지 사흘 뒤 날짜의 베타인 macOS 27.2 beta 3의 노트에는 이에 관한 것이 없고, 10월 11일 기준 릴리스 피드와 릴리스 노트 색인 어디에서도 macOS 27.1 항목을 찾지 못했습니다. 피드에는 27.0.1(9월 28일), 그다음 27.2 beta 3이 있고, 27.2 베타는 9월 16일에 시작되었으며, 릴리스 노트 색인에는 27과 27.2 beta 3만 있습니다.6879 Apple은 올해의 TCC 사용 중단, “Apps can no longer access the local TCC database directly”(앱은 더 이상 로컬 TCC 데이터베이스에 직접 접근할 수 없다)를 macOS 27 릴리스 노트의 TCC 제목 아래에 실었습니다.23 조건: 새 통제가 개발자 노트가 있는 릴리스로 나온다면, 그 노트가 바로 Apple이 올해 TCC 사용 중단을 실은 곳이므로, 저는 macOS 27.x 베타의 노트를 매번 읽으며 해당 줄을 찾겠습니다. 하지만 macOS 27.0.1은 이미 개발자 릴리스 노트 없이 출시되었으므로, 변경이 어떤 노트 페이지에도 한 줄 없는 포인트 릴리스로 들어올 수도 있습니다.78 macOS 28로 나온다면, Apple이 이런 변경을 설명해 온 곳은 WWDC 세션이나 베타의 릴리스 노트입니다. Catalina의 보호는 WWDC19였고, 올해의 TCC 사용 중단은 macOS 27 노트였습니다.1123 어느 쪽이든 섹션 6의 단계는 답에 좌우되지 않습니다.

핵심 정리

Mac에서 에이전트를 실행한다면

  • Apple은 10월 2일, 전체 디스크 접근 권한을 허용하려면 “very explicit user action”(매우 명시적인 사용자 동작)이 필요해질 것이라고 말하고 그 이유로 AI 에이전트를 들었습니다. 버전, 날짜, 메커니즘은 밝히지 않았습니다.1
  • 명령줄 에이전트는 터미널이 가진 것을 무엇이든 가집니다. Apple의 man 페이지와 지원 엔지니어는 터미널이 책임 코드라고 말합니다. Apple은 일반 규칙을 문서화하지 않습니다.23
  • 공급업체 샌드박스는 전체 디스크 접근 권한 통제가 아닙니다. 제 Mac에서 보호된 읽기는 Codex의 read-only 샌드박스와 Anthropic의 샌드박스 런타임을 통과했습니다. 그것을 멈춘 것은 바로 그 폴더에 대한 읽기 거부, 또는 터미널 밖에서의 실행뿐이었습니다.5
  • 에이전트를 실행하는 터미널에서 전체 디스크 접근 권한을 빼고, node나 python에는 절대 주지 말고, 샌드박스만이 아니라 읽기 제한도 켜십시오.201521
  • 에이전트가 Messages를 읽는다면 전용 macOS 사용자를 주고, 전송마다 승인을 유지하십시오.7122

에이전트나 에이전트 앱을 만든다면

  • 사용자에게 터미널이나 에이전트 프로세스에 전체 디스크 접근 권한을 주라고 안내하지 마십시오. 지금 두 공급업체가 Messages 때문에 그렇게 하고 있습니다.1314
  • Apple이 문서화한 경로는 프롬프트가 아니라 패널로 가는 링크입니다. 스위치는 사용자의 것이며, Apple은 이를 켜려면 매우 명시적인 사용자 동작이 필요해질 것이라고 말합니다.251
  • 샌드박스가 기본적으로 무엇을 읽는지 문서에 밝히십시오. Codex 문서는 그 샌드박스가 “limits what it can touch (typically to the current workspace)”(건드릴 수 있는 것을 (보통 현재 작업 공간으로) 제한한다)라고 말하지만, 그 소스와 제 실행은 읽기가 작업 공간을 훨씬 넘어선다는 것을 보여 줍니다.60635

자주 묻는 질문

Mac의 전체 디스크 접근 권한이란 무엇입니까?

시스템 설정 > 개인정보 보호 및 보안에 있는 설정으로, 앱이 “access all files on your computer, including data from other apps (for example, Mail, Messages, Safari, and Home), data from Time Machine backups, and certain administrative settings for all users on this Mac.”(다른 앱의 데이터(예: Mail, Messages, Safari, 홈), Time Machine 백업의 데이터, 이 Mac의 모든 사용자에 대한 특정 관리 설정을 포함해 컴퓨터의 모든 파일에 접근)하도록 허용합니다. 앱은 이를 요청하는 프롬프트를 띄울 수 없습니다. 사용자가 추가 버튼으로 앱을 넣거나, MDM 프로파일이 허용합니다.4102

Apple은 2026년 10월에 전체 디스크 접근 권한에 대해 무엇을 발표했습니까?

2026년 10월 2일 자 개발자 뉴스 “Updates to Full Disk Access in macOS”에서 Apple은 “will introduce additional controls”(추가 통제를 도입하겠다)라고 말하며, 앱에 이 접근을 허용하려는 사용자가 “can only do so with very explicit user action”(매우 명시적인 사용자 동작으로만 그렇게 할 수 있도록) 하겠다고 했습니다. 이유는 “As AI agents become increasingly capable and autonomous, the risks associated with this level of access will grow substantially.”(AI 에이전트가 점점 더 유능하고 자율적이 되면서, 이 수준의 접근에 따르는 위험은 크게 늘어날 것이다)입니다. macOS 버전, 날짜, 메커니즘은 밝히지 않았습니다.1

Claude Code나 Codex는 제 터미널에서 전체 디스크 접근 권한을 얻습니까?

터미널이 그 권한을 가졌다면, 그렇습니다. 터미널에서 실행된 도구는 터미널을 기준으로 검사됩니다. Apple의 eslogger man 페이지는 “Terminal.app or a third-party terminal emulator”(Terminal.app이나 서드파티 터미널 에뮬레이터)에서 실행하려면 그 앱이 승인되어 있어야 한다고 말하고, Apple 지원 엔지니어는 포럼 게시물에서 “The tool’s responsible code is Terminal.”(그 도구의 책임 코드는 Terminal이다)이라고 씁니다. 제 Mac에서 전체 디스크 접근 권한이 필요한 읽기는 Ghostty 안의 Claude Code 셸에서는 성공했고, 그 밖에서 실행했을 때는 실패했습니다.235

Claude Code나 Codex의 샌드박스는 에이전트가 제 Messages를 읽는 것을 막습니까?

기본 설정으로는 막지 않습니다. 두 샌드박스 모두 Seatbelt를 쓰며, 이는 전체 디스크 접근 권한과 별개입니다. Claude Code의 샌드박스는 기본적으로 꺼져 있고, 켜더라도 “Most of the machine”(기계의 대부분)을 읽습니다. Codex의 샌드박스는 켜져 있지만, 그 read-only 모드는 제 Mac에서 전체 디스크 접근 권한으로 보호된 파일을 읽었습니다. 읽기를 명시적으로 거부하십시오. Claude Code에서는 permissions.blockReadsOutsideWorkingDirectories, Codex에서는 권한 프로파일의 "deny" 규칙입니다.15215

어떤 앱이 전체 디스크 접근 권한을 가졌는지 어떻게 확인합니까?

시스템 설정 > 개인정보 보호 및 보안 > 전체 디스크 접근 권한을 여십시오.4 tccutil로는 목록을 볼 수 없습니다. 그 명령은 reset 하나뿐입니다.34 이미 전체 디스크 접근 권한을 가진 터미널에서라면, 섹션 5처럼 시스템 TCC 데이터베이스를 읽어 클라이언트를 나열할 수 있습니다. “authorization denied”로 실패한다면 셸에 접근 권한이 없거나, 샌드박스 규칙이 읽기를 거부한 것입니다.195

Terminal에서 전체 디스크 접근 권한을 빼야 합니까?

그 안에서 에이전트를 실행한다면, 그렇습니다. tmutil 같은 백업이나 관리 명령을 위해 허용을 가진 별도의 터미널을 두고, 거기서는 절대 에이전트를 시작하지 마십시오. 권한을 뺀 터미널에서는 파일 및 폴더 프롬프트와 “Operation not permitted” 오류가 나타날 것을 예상하십시오.431051

Apple의 새 전체 디스크 접근 권한 통제는 언제 나옵니까?

Apple은 밝히지 않았습니다. 10월 2일 공지는 “Going forward”(앞으로)라고 하고, macOS 27.2 beta 3 릴리스 노트는 이를 언급하지 않으며, 10월 11일 기준 릴리스 피드와 릴리스 노트 색인 어디에서도 macOS 27.1 항목을 찾지 못했습니다. 피드에 실린 것은 개발자 릴리스 노트 없이 출시된 macOS 27.0.1(9월 28일)이고, 그다음이 macOS 27.2 beta 3입니다. 27.2 베타 자체는 9월 16일에 시작되었습니다.16789

출처


  1. Apple Developer, News, “Updates to Full Disk Access in macOS”, 2026년 10월 2일 자. 2026년 10월 11일 17:28 UTC에 가져오고 17:47 UTC에 다시 가져옴. 두 사본의 본문은 아포스트로피 형태를 빼면 동일함. 두 단락 전체: 전체 디스크 접근 권한은 “in order to allow backup apps to function properly on the Mac” 데이터 통제를 “largely sidesteps”함. “Some developers are using Full Disk Access in ways that could put users at risk”. 파일, 메일, 메시지, 방문 기록. 커뮤니케이션 앱과 “the people users are communicating with”. “Going forward, we will introduce additional controls”. “very explicit user action”. 위험이 “will grow substantially”인 이유로서의 AI 에이전트. 버전, 날짜, 메커니즘, 앱 이름은 없음. ↩↩↩↩↩↩↩↩↩↩↩↩↩

  2. Apple, eslogger(1) man 페이지, Xcode의 macOS 27.0 SDK에 포함. 2026년 10월 11일 로컬에서 읽음. TCC AUTHORIZATION 절: “eslogger requires the responsible process to have been authorized for Full Disk Access”. “from an app, including Terminal.app or a third-party terminal emulator, requires the respective app to be authorized for Full Disk Access”. SSH 세션용 원격 로그인 설정. 그리고 Privacy Preferences Policy Control 페이로드의 SystemPolicyAllFiles 키를 통한 “MDM servers can grant Full Disk Access authorization”. ↩↩↩↩↩↩↩↩↩↩↩↩

  3. Apple Developer Forums, “How to grant command line tools full disk access”, 스레드 작성 2024년 6월. Apple Developer Technical Support의 Quinn “The Eskimo!”가 2024년 6월에 단 답변. 문서가 아니라 직원의 게시물. 2026년 10월 11일 17:55 UTC에 가져옴. 책임 코드의 네 가지 경우(“The tool’s responsible code is Terminal”, “Allow full disk access for remote users” 설정과 함께 “The tool’s responsible code is the SSH server”, “The system treats the app as the responsible code”, 그리고 launchd의 경우 “If the daemon or agent was installed by SMAppService, that makes the app the responsible code. Otherwise, the daemon or agent should include AssociatedBundleIdentifiers in its launchd property list”). 알고리즘이 “is not documented, has changed in the past, and may well change in the future”라는 단서. Terminal이 전체 디스크 접근 권한을 가진 상태에서 Terminal에서 실행한 프로그램은 파일을 열었고, 허용을 Terminal에서 프로그램으로 옮기자 실패했다는 원 게시자의 보고. 그리고 Xcode가 실행하는 도구에 대한 Quinn의 메모 “Xcode runs the tool in a way that makes it clear to the system that Xcode is not the responsible code for this process”와, Xcode 디버거 아래의 도구(macOS 14.4.1의 Xcode 15.4)에 대한 “I expect that one of these is breaking TCC’s responsible code search”, 덧붙인 “I suspect that’s deliberate”. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩

  4. Apple, Mac 사용 설명서(macOS 27), “Change Privacy & Security settings on Mac”. 2026년 10월 11일 17:37 UTC에 가져옴. 전체 디스크 접근 권한 행(Mail, Messages, Safari, 홈, Time Machine 백업, “certain administrative settings for all users on this Mac”을 포함한 “Allow apps to access all files on your computer”)과 추가 버튼으로 앱을 넣으라는 안내. 다른 행의 “The listed apps have requested access”. ↩↩↩↩↩↩↩↩↩↩

  5. 저자의 Mac(macOS 27.0, 빌드 26A428, System Integrity Protection 활성)에서 한 저자의 측정, 2026년 10월 11일 17:40 UTC, Ghostty 안의 Claude Code 세션에서 실행. 두 개를 빼면 모든 명령은 읽기 전용: launchd 작업 등록과 제거(출력은 파일 두 개에 기록), 그리고 테스트를 위해 npx -y로 설치한 Anthropic sandbox-runtime 0.0.79와 그 실행용으로 쓴 임시 설정 파일 두 개(srt-a.json, srt-b.json). 쓰기 탐침은 시도였고 샌드박스가 거부함. 네트워크 탐침은 실패했으며(000 curl_exit=56), 원인을 확정할 진단 정보도 샌드박스 없는 대조도 없음. 섹션 5의 일곱 번의 실행: 에이전트 셸에서 시스템 TCC 데이터베이스의 단일 행 읽기(행 반환). Codex CLI 0.154.0의 Seatbelt 샌드박스 안 read-only 모드(행 반환. 작업 공간 밖 쓰기는 “Operation not permitted”로 거부). 저자의 Codex 구성(행 반환). 읽기 거부 없는 Anthropic sandbox-runtime 0.0.79 안(행 반환. 쓰기 거부. 네트워크 요청 실패)과 TCC 폴더에 denyRead를 건 경우(“authorization denied”). 그리고 체인에 Ghostty가 없는 launchd 작업으로서의 같은 읽기(“authorization denied”). ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩

  6. Apple Developer Documentation, “macOS 27.2 Golden Gate Beta 3 Release Notes”. 2026년 10월 11일 17:35 UTC에 가져옴. 여섯 섹션: General, AppKit, Display Settings, Notifications, Shortcuts, StoreKit Testing in Xcode. 전체 디스크 접근 권한, TCC, 개인정보 보호 및 보안에 관한 줄은 없음. 제거된 EnablePasteboardPrivacyDeveloperPreview 기본값에 관한 AppKit 줄. ↩↩↩↩

  7. Apple Developer, Releases RSS 피드. 2026년 10월 11일 17:28 UTC에 가져옴. “macOS 27.2 beta 3 (26B5101f)”는 Mon, 05 Oct 2026 자, “macOS 27.0.1 (26A434)”는 Mon, 28 Sep 2026 자. macOS 27.1 항목은 없음. ↩↩↩↩↩↩

  8. Apple Developer Documentation, “macOS Release Notes”, 2026년 10월 11일 17:35 UTC에 가져옴: macOS 27 아래에는 “macOS 27.2 Golden Gate Beta 3 Release Notes”와 “macOS 27 Golden Gate Release Notes”만 있음. 주소 macos-release-notes/macos-27_0_1-release-notes, macos-27_1-release-notes, macos-27_1-beta-release-notes는 17:31 UTC에 HTTP 404를 반환함. ↩↩↩↩↩

  9. Apple Developer, News, 색인 페이지. 2026년 10월 11일 17:41 UTC에 가져옴. 2026년 9월 16일 자 “Get ready with the latest beta releases”: “The beta versions of iOS 27.2, iPadOS 27.2, macOS 27.2, tvOS 27.2, visionOS 27.2, and watchOS 27.2 are now available.” ↩↩↩

  10. Apple 플랫폼 보안, “Controlling app access to files in macOS”. 2026년 10월 11일 17:36 UTC에 가져옴. “Full internal storage access”: 앱이 묻지 않고, 사용자가 시스템 개인정보 설정을 편집함. 앱이 묻는 파일 및 폴더는 “Includes Desktop, Documents, Downloads, network volumes, and removable volumes”. 전체 저장 공간 접근을 “macOS 10.13 or later”로 적은 문장. ↩↩↩↩↩↩

  11. Apple, WWDC19 세션 701, “Advances in macOS Security”, 페이지의 트랜스크립트. 2026년 10월 11일 17:40 UTC에 가져옴. 보호 데이터의 두 계층으로, 메일, 메시지, Safari 방문 기록은 “disk management or backup utilities”를 위한 “a high barrier to access” 뒤에 있음. Catalina에서 동의가 필요해진 위치. “prepopulated unchecked”되는 헬퍼. 사전 승인이 필요한 대상에 휴지통 추가. 앱은 “can guide the user to the security and privacy preference pane”. ↩↩↩↩↩↩↩

  12. Apple, WWDC23 세션 10053, “What’s new in privacy”, 페이지의 트랜스크립트. 2026년 10월 11일 17:40 UTC에 가져옴. 앱 컨테이너 보호와 “For backup utilities or disk-management tools that have already been granted Full Disk Access, no additional prompt will be shown at time of access”. ↩↩↩

  13. Nous Research, Hermes Agent 문서, Apple iMessage 스킬. 2026년 10월 11일 17:41 UTC에 가져옴. “Bundled (installed by default)”. 사전 요구 사항에 “macOS with Messages.app signed in”, imsg 설치, “Grant Full Disk Access for terminal (System Settings → Privacy → Full Disk Access)”, “Grant Automation permission for Messages.app when prompted”가 포함됨. ↩↩↩↩↩↩

  14. OpenClaw 문서, “iMessage setup”. 2026년 10월 11일 17:42 UTC에 가져옴. Messages 데이터베이스 접근을 위한 “Full Disk Access is required for the process context running OpenClaw/imsg”. 전송을 위한 자동화. “Permissions are granted per process context”. 고급 동작에는 System Integrity Protection을 꺼야 함. 그리고 SSH 컨텍스트의 클라이언트로 /usr/libexec/sshd-keygen-wrapper를 보여 주는 TCC 행 예시. ↩↩↩↩↩↩↩↩

  15. Anthropic, Claude Code Docs, “Configure the sandboxed Bash tool”. 2026년 10월 11일 17:35 UTC에 가져옴. “The sandbox is off by default”. 기본값 표(쓰기는 작업 디렉터리, 임시 디렉터리, 추가한 디렉터리로. 읽기는 “Most of the machine, including credential files”. 네트워크는 허용 도메인이 “start empty”인 프록시를 거침). @anthropic-ai/sandbox-runtime 위에 구축. macOS에서는 Seatbelt. 두 가지 샌드박스 모드. 그 밖에서 실행되는 것(내장 파일·웹 도구, 훅, 로컬 MCP 서버, 플러그인 모니터, LSP 서버, 헬퍼 명령). 샌드박스 밖 재시도와 allowUnsandboxedCommands. denyRead, allowRead, blockReadsOutsideWorkingDirectories, excludedCommands. Apple Events는 기본적으로 차단. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩

  16. OpenAI, Codex 문서, “Sandbox”(learn.chatgpt.com에서 제공). 2026년 10월 11일 17:36 UTC에 가져옴. 샌드박스는 기본적으로 켜짐. macOS에서는 Seatbelt. 생성된 명령에 적용. OpenAI 자신의 말로 설명한 read-only, workspace-write, danger-full-access 모드. danger-full-access와 approval_policy = "never"의 조합으로서의 전체 접근 정의. 데스크톱 메뉴의 “Full access” 라벨. ↩↩↩↩↩↩↩

  17. Google, Gemini CLI, docs/cli/sandbox.md와 permissive-open Seatbelt 프로파일, 커밋 9b6e026 기준. 2026년 10월 11일 17:43 UTC에 가져옴. -s, GEMINI_SANDBOX, 설정으로 켜기. sandbox-exec를 통한 Seatbelt. 여섯 프로파일 중 기본값은 permissive-open(“allowing broad file reads and network access”), 읽기 제한이 있는 strict-open과 strict-proxied. 프로파일의 (allow file-read*). ↩↩↩↩↩

  18. Cursor 문서, “Run Modes”. 2026년 10월 11일 17:50 UTC에 가져옴. “the full subprocess tree”에 대한 sandbox-exec 경유 Seatbelt. 네트워크는 “Blocked by default”. Read Access 모드: 기본값 System(“The agent can read files outside the workspace without approval”)과, 작업 공간 밖 읽기 전에 묻는 Workspace. “Read access requires Cursor 3.23 or later”. 일부 명령은 “bypass the sandbox”. ↩↩↩↩↩↩↩↩

  19. 저자의 Mac(macOS 27.0, 빌드 26A428, System Integrity Protection 활성)에서 한 저자의 측정, 2026년 10월 11일 17:32 UTC, 18:09 UTC에 파일 모드 확인을 덧붙임. 읽기 전용. 에이전트 셸의 실행 체인(zsh, claude, 로그인 셸, login, Ghostty. TERM_PROGRAM은 ghostty). 사용자별 TCC 데이터베이스는 열 수 없음. 시스템 TCC 데이터베이스의 모드(-rw-r--r--, root)와 kTCCServiceSystemPolicyAllFiles에 대한 75개 행(서비스와 클라이언트 열만): Terminal, iTerm2, Ghostty, ChatGPT 앱(com.openai.codex), Cursor, Xcode, 2.1.177부터 2.1.296까지의 Claude Code 버전별 바이너리 30개, Homebrew node와 Python 인터프리터 넷, sshd-keygen-wrapper, 그 밖의 Apple 항목 3개, 저자 자신의 빌드 5개, 그 밖의 서드파티 클라이언트 25개. 사용자의 Library, Mail, Messages 폴더 모드(소유자 전용). 홈 폴더 아래의 클라이언트 경로는 여기에 옮기지 않음. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩

  20. Apple Developer Forums, “On File System Permissions”, Apple Developer Technical Support의 Quinn “The Eskimo!” 작성. 2021년 4월 26일 처음 게시, 2026년 9월 18일 es_new_descendants_client를 추가하며 개정. 문서가 아니라 직원의 게시물. 2026년 10월 11일 17:56 UTC에 가져옴. “The exact list of file system locations protected by MAC is not documented”. “Full Disk Access (macOS 10.14 and later)”, 앱 컨테이너 보호(macOS 14), 앱 그룹 컨테이너 보호(macOS 15)를 포함한 목록. “Some MAC privileges are per user (Files and Folders) and some are system wide (Full Disk Access)”. TCC는 “has no API surface”. MAC은 “is mandatory; it’s not an opt-in like the App Sandbox”. 책임 코드. 인터프리터에 대한 경고와 “package your script as a standalone program”이라는 조언. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩

  21. OpenAI, Codex 문서, “Configuration Reference”. 2026년 10월 11일 17:37 UTC에 가져옴. 경로별로 "read" | "write" | "deny"를 받는 권한 프로파일. permissions.filesystem.deny_read, “Admin-enforced filesystem read denials”로 “users cannot weaken them with local config”. “an admin-enforced configuration file that constrains security-sensitive settings users can’t override”로 설명되는 requirements.toml. ↩↩↩↩↩

  22. OpenAI, ChatGPT 문서, “Plugins”, Apple Messages 절. 2026년 10월 11일 17:45 UTC에 가져옴. “Grant the requested macOS permissions before ChatGPT reads Messages”. 기본은 전송마다 승인. “Persistent approval removes your final chance to review a message before ChatGPT sends it as you”. Apple Messages는 Mac에서만 동작. 관리자는 Computer Use 통제로 이를 끌 수 있음. “When a plugin capability runs through a Codex host, the host’s sandbox and approval policy applies”. ↩↩↩↩↩↩

  23. Apple Developer Documentation, “macOS 27 Golden Gate Release Notes”. 2026년 10월 11일 17:35 UTC에 가져옴. System Integrity Protection: 다른 팀의 앱 데이터 컨테이너와 앱 그룹 컨테이너는 프롬프트 없이 기본 거부(161835690). XProtect가 앱 데이터를 제한할 수 있음(178668601). TCC 사용 중단: “Apps can no longer access the local TCC database directly”(90775556). Privacy & Security Settings 알려진 문제(184660124)와 “grant Full Disk Access to the process for the duration of the requirement”라는 해결 방법. ↩↩↩↩↩↩↩↩↩

  24. Apple Developer Documentation, “Xcode 27 Release Notes”. 2026년 10월 11일 17:45 UTC에 가져옴. “Agents in Xcode can now be extended with plugins that contain skills, MCP servers, and ACP agent configurations”(178289210). Agent Client Protocol 지원(178294840). “can be enabled in Coding Intelligence settings”인 Coding Intelligence의 “new security layer that monitors and controls filesystem access by coding agents and any processes they spawn”(178289431). “code-signed agents”용 Beta 5 MCP 서버 미리보기와 “not a recommended configuration for at-desk use”인 --unsafe-always-allow-all-agents 플래그(181836944). ↩↩↩↩↩

  25. Apple, macOS 27.0 SDK(Xcode SDK 빌드 26A425), 헤더 EndpointSecurity/ESClient.h, 2026년 10월 11일 로컬에서 읽음. es_new_client: “Callers are required to be entitled with com.apple.developer.endpoint-security.client”. “The only supported way to check if an application is properly TCC authorized for Full Disk Access”와, “To direct the user to the Full Disk Access section in System Settings” 위한 Privacy_AllFiles 설정 URL. macOS 27.0부터 쓸 수 있는 es_new_descendants_client: “the entire subtree rooted at the calling process”의 이벤트, “Does NOT require TCC approval”, “@note Requires the com.apple.developer.endpoint-security.client entitlement”. ↩↩↩↩↩

  26. Apple Developer, News RSS 피드. 2026년 10월 11일 17:41 UTC에 가져옴. “Updates to Full Disk Access in macOS”는 Fri, 02 Oct 2026 09:00:19 PDT 자. 앞뒤 항목: Developer ID Sub-CA 만료 공지(10월 1일), App Store 에셋과 iPhone Duo 항목(10월 5일), “Hello Developer: October 2026”(10월 6일). ↩

  27. Apple Developer, “Hello Developer: October 2026”, 2026년 10월 6일 발행. 2026년 10월 11일 17:46 UTC에 가져옴. iPhone Duo 제출과 Group Labs, 이벤트, 현지화된 문서 등의 항목. 전체 디스크 접근 권한이나 에이전트에 대한 언급은 없음. ↩

  28. Apple Developer, Privacy & Security 동영상. 2026년 10월 11일 17:41 UTC에 가져옴. 실린 WWDC26 세션: “Meet Trust Insights”, “Secure your app: mitigate risks to agentic features”, “Secure your apps with App Attest”, “Privacy and Security Group Lab”. 어느 트랜스크립트에도 “Full Disk”는 없음. ↩

  29. Apple, WWDC26 세션 347, “Secure your app: mitigate risks to agentic features”, 페이지의 트랜스크립트. 2026년 10월 11일 17:41 UTC에 가져옴. 간접 프롬프트 주입, Foundation Models와 App Intents의 완화책, 그리고 “Simon Willison’s Lethal Trifecta”: “access to private data, exposure to untrusted content, and the ability to externally communicate”. 전체 디스크 접근 권한, TCC, 에이전트의 파일 시스템 권한에 대한 언급은 없음. ↩↩

  30. Apple Developer Documentation, DeviceManagement, “PrivacyPreferencesPolicyControl.Services”. 2026년 10월 11일 17:35 UTC에 가져옴. SystemPolicyAllFiles: “Allows the application access to all protected files, including system administration files”, 사용 중단 표시 없음. Camera, Microphone, ListenEvent, ScreenCapture: 프로파일은 접근을 “can’t grant”이며 “can only deny it”. 여러 서비스가 macOS 27에서 사용 중단으로 표시됨. ↩↩↩↩

  31. Apple Platform Deployment, “Privacy Preferences Policy Control device management payload settings for Apple devices”. 2026년 10월 11일 17:38 UTC에 가져옴. “Supervision is required if you apply this payload using a device management service”. 데이터 목록을 곁들인 “System Policy All Files”. 조직의 앱에 “without prompting the user” 모든 파일 접근을 주는 예제 주석. 그리고 책임 앱이나 바이너리를 식별하도록 제시된, TCC 하위 시스템의 “AttributionChain” 메시지에 대한 log stream 조건식. ↩↩↩↩↩

  32. Apple, macOS 27.0 SDK, 헤더 EndpointSecurity/ESTypes.h, 2026년 10월 11일 로컬에서 읽음. ES_NEW_CLIENT_RESULT_ERR_NOT_PERMITTED: “The caller lacks Transparency, Consent, and Control (TCC) approval from the user.” ↩

  33. Apple, WWDC26 세션 8009, “Privacy and Security Group Lab”, 페이지의 트랜스크립트. 2026년 10월 11일 17:41 UTC에 가져옴. Apple 패널리스트: “So TCC stands for transparency, consent and control.” 전체 디스크 접근 권한에 대한 언급은 없음. ↩

  34. Apple, tccutil(1) man 페이지, macOS 27.0(2012년 4월 3일 자), 2026년 10월 11일 로컬에서 읽음. 명령은 reset 하나. 예시가 지목하는 것은 AddressBook과 All뿐. 서비스 목록 없음. ↩↩↩

  35. Apple Developer Forums, “The Rules for Full Disk Access”, 1쪽, 2018년 8월과 9월. 2026년 10월 11일 17:44 UTC에 가져옴. 2018년 8월 한 개발자의 게시물이 “Full Disk Access (previously Application Data in earlier betas)”를 언급함. 한 개발자가 “an API call that causes a prompt to the logged-in user to grant the app Full Disk access”를 요청하자 Apple Developer Technical Support가 “Please do file an enhancement request”라고 답했고, 9월에는 번들된 헬퍼는 부모 앱의 허용으로 다뤄지고 외부 헬퍼는 자기 허용이 필요하다고 설명함. ↩↩

  36. Apple Developer Documentation, DeviceManagement, “PrivacyPreferencesPolicyControl”. 2026년 10월 11일 17:35 UTC에 가져옴. 페이로드 유형 com.apple.TCC.configuration-profile-policy. macOS, 10.14에서 도입. “Requires supervision”은 N/A. 사용자 승인 MDM이 필요함. ↩↩↩

  37. Apple Developer Documentation, DeviceManagement, “PrivacyPreferencesPolicyControl.Services.Identity”. 2026년 10월 11일 17:35 UTC에 가져옴. macOS 27.0에서 사용 중단, 각 키에 “Deprecated: macOS 27+”. Allowed: “The user isn’t prompted and can’t change this value”. 번들 ID나 경로로 지정하는 식별자. “Helper tools embedded within an application bundle automatically inherit the permissions of their enclosing app bundle”. ↩↩↩↩↩↩↩

  38. Apple Developer Documentation, DeviceManagement, “AppSettingsAppDictionaryObject”, macOS 27에서 도입. 2026년 10월 11일 17:36 UTC에 가져옴. Accessibility, Bluetooth, Camera, Dictation, LocalNetwork, Location, LocationAccuracy, Microphone의 개인정보 기본값과, 동의 프롬프트에 표시되는 필수 OrganizationJustification. 전체 디스크 접근 권한 키는 없음. ↩↩↩↩

  39. Apple Developer Documentation, DeviceManagement, “AppSettings”. 2026년 10월 11일 17:35 UTC에 가져옴. 개인정보 권한 기본값: “When set, the app displays a consent prompt listing all the configured defaults”. Allow 또는 Not Now. “Only AppKit-based apps on macOS support this feature”. ↩↩

  40. Apple Newsroom, “Apple introduces macOS Mojave”, 보도자료, 2018년 6월 4일. 2026년 10월 11일 17:48 UTC에 가져옴. “New data protections require apps to get user permission before using the Mac camera and microphone or accessing personal data like user Mail history and Messages database.” ↩

  41. Apple Developer Documentation, “macOS Mojave 10.14 Release Notes”. 2026년 10월 11일 17:41 UTC에 가져옴. Privacy, New Features: 보호된 저장 공간에 접근하려면 앱이 “Application Data” 범주에 추가되어야 함(39798760). ↩

  42. Apple Newsroom, “macOS Catalina is available today”, 2019년 10월 7일. 2026년 10월 11일 17:47 UTC에 가져옴. “new data protections require all apps to get permission before accessing user documents.” ↩

  43. Apple, tmutil(8) man 페이지, macOS 27.0 SDK, 2026년 10월 11일 로컬에서 읽음. “Full Disk Access privileges can be granted to the Terminal application used to run tmutil.” ↩↩↩

  44. Apple, fdesetup(8) man 페이지, macOS 27.0 SDK, 2026년 10월 11일 로컬에서 읽음. AUTHORIZATION POLICY: macOS 10.15부터 FileVault를 켜려면, 다른 선택지와 함께, 책임 응용 프로그램이 전체 디스크 접근 권한을 승인받아야 함. ↩↩

  45. Apple Developer Forums, “Which application is taken in consideration with TCC”, 2023년 11월. 2026년 10월 11일 17:43 UTC에 가져옴. 한 개발자가 TCC가 “is looking for parent process rights”인지 묻자, Apple Developer Technical Support는 “On File System Permissions”를 안내하고 세부 사항은 “both complex and subject to change”라며 설명을 사양함. ↩

  46. Jeff Johnson, “Every unsandboxed app has Full Disk Access if Terminal does”, 2022년 9월 22일, 소스 코드 포함. 2026년 10월 11일 17:59 UTC에 가져옴. 전체 디스크 접근 권한을 가진 Terminal은 “can read or write any restricted files, including the TCC database itself”(그의 예시는 사용자별 데이터베이스). 샌드박스가 없는 앱은 Terminal의 권한으로 실행되는 스크립트를 Terminal에서 열 수 있음. 이 기법은 “doesn’t work for sandboxed apps”. ↩↩↩

  47. 저자의 Mac에 설치된 앱에 대한 저자의 점검, 2026년 10월 11일 17:33 UTC. 읽기 전용. 버전: Claude Code 2.1.296, Codex CLI 0.154.0, Gemini CLI 0.19.4, Hermes Agent 0.14.0. Aider와 OpenClaw는 설치되지 않음. VS Code도 설치되지 않음. Claude 앱(2.31226.0, 샌드박스 인타이틀먼트 없음. 폴더와 Apple Events 문자열), ChatGPT(com.openai.codex 26.715.72359, app-sandbox는 false), Cursor(3.19.7, 인타이틀먼트 없음), Ghostty 1.3.1(“A program running within Ghostty would like to use AppleScript.”), iTerm2 3.6.6(“An application in iTerm2 wants to use AppleScript.”)의 Info.plist 사용 목적 문자열과 App Sandbox 인타이틀먼트. Ghostty와 iTerm2 모두 샌드박스 없음. ↩↩↩↩↩↩↩↩

  48. 저자의 GitHub 코드 검색, 2026년 10월 11일 18:12 UTC: Aider 문서에서 “sandbox”, 그 저장소에서 “Full Disk Access”, Ghostty 문서와 iTerm2 저장소에서 “Full Disk Access”. 모두 결과 0건. 코드 검색이 모든 것을 색인하지는 않음. ↩↩↩

  49. Cursor 문서, “Terminal”, 에이전트 도구. 2026년 10월 11일 17:50 UTC에 가져옴. “Cursor runs shell commands directly in your terminal”. Run Mode는 명령을 언제 실행하고, 언제 Cursor가 묻고, 언제 샌드박스에 넣을지를 제어함. ↩↩

  50. OpenClaw 문서, “macOS permissions”. 2026년 10월 11일 17:42 UTC에 가져옴. 접근 권한은 “to the same process context that performs file operations”에 줌. node 항목은 “as broad permission for that Node runtime, not as permission for one npm package”로 다룸. 폴더별 허용을 피하려면 파일을 OpenClaw 작업 공간으로 옮김. ↩↩↩

  51. Anthropic, Claude Code Docs, “Manage multiple agents with agent view”. 2026년 10월 11일 17:36 UTC에 가져옴. macOS에서 백그라운드 세션 호스트는 “requests access to protected folders separately from your terminal”. “Operation not permitted”가 나오면 파일 및 폴더를 허용하거나 “or enable Full Disk Access for the entry”. 네이티브 설치 프로그램에서는 항목이 “appears as Claude Code and the grant persists across updates”이고, Homebrew나 npm 설치에서는 바이너리 경로가 표시됨. ↩↩↩↩↩↩

  52. Anthropic, Claude Code Docs, “Let Claude use your computer from the CLI”. 2026년 10월 11일 17:49 UTC에 가져옴. 손쉬운 사용과 화면 기록. 프롬프트가 계속되면 화면 기록에서 “your terminal app is listed and enabled”를 확인함. ↩

  53. Anthropic, Claude Code Docs, “Configure permissions”. 2026년 10월 11일 17:35 UTC에 가져옴. 권한 모드 default(Manual로 표시), acceptEdits, plan, auto, dontAsk, bypassPermissions. bypassPermissions는 “in isolated environments like containers or VMs where Claude Code can’t cause damage”에서만 씀. 전체 디스크 접근 권한에 대한 언급은 없음. ↩↩↩

  54. OpenAI Help Center, “ChatGPT release notes”, 2026년 8월 20일 항목. 2026년 10월 11일 17:47 UTC에 가져옴. Apple Messages 플러그인은 “can read and search iMessage, SMS, and RCS conversations and prepare or send messages through Messages”. 기본적으로 전송 전에 승인. ↩

  55. MacRumors, Juli Clover, “ChatGPT Can Now Read and Send iMessages on Mac”, 2026년 8월 20일. 2026년 10월 11일 17:48 UTC에 가져옴. 언론 보도로, 단서로 사용함: “ChatGPT needs Full Disk Access in System Settings, as well as access to contact names and automation tools.” ↩

  56. OpenAI, ChatGPT 문서, “Computer Use”. 2026년 10월 11일 17:48 UTC에 가져옴. macOS의 화면 기록과 손쉬운 사용. 시스템 권한은 앱 승인과 별개. “File reads, file edits, and shell commands still follow the sandbox and approval settings for the task.” ↩↩

  57. Anthropic, Claude Help Center, “Use quick entry with Claude Desktop on Mac”. 2026년 10월 11일 17:49 UTC에 가져옴. 화면 기록은 “Required to capture screenshots and share application windows”, 손쉬운 사용은 “Required for quick entry functionality”. ↩

  58. Nous Research, Hermes Agent 문서, “Computer Use”. 2026년 10월 11일 17:42 UTC에 가져옴. 손쉬운 사용과 화면 기록은 “the identity named by hermes computer-use doctor”, 곧 CuaDriver 앱에 줌. ↩

  59. Microsoft, VS Code 문서, “Sandbox Copilot Agent Host sessions”. 2026년 10월 11일 17:50 UTC에 가져옴. chat.agent.sandbox.enabled는 기본적으로 꺼져 있고 Agent Host의 기본 도구 구현에 적용되며 “not the Local chat harness or the custom terminal tool override”. “Sandboxing is not a virtual machine or user-account boundary, and it does not replace endpoint security”. 외부로 나가는 네트워크는 기본적으로 차단되지 않음. allowDevToolAccess의 기본값은 true. 전체 디스크 접근 권한에 대한 언급은 없음. ↩↩↩↩↩

  60. OpenAI, Codex 문서, “Agent approvals & security”. 2026년 10월 11일 17:37 UTC에 가져옴. “By default, the agent runs with network access turned off”, OS가 강제하는 샌드박스는 “limits what it can touch (typically to the current workspace)”. workspace-write는 구성하지 않으면 네트워크를 꺼 둠. macOS에서는 Seatbelt와 sandbox-exec. --dangerously-bypass-approvals-and-sandbox. ↩↩↩↩↩

  61. Nous Research, Hermes Agent 문서, “Hermes Agent Configuration”. 2026년 10월 11일 17:41 UTC에 가져옴. 일곱 가지 터미널 백엔드. local은 “The default. Commands run directly on your machine with no isolation”. 로컬 하위 프로세스는 실제 HOME을 유지함. Docker와 Singularity는 “use bind mounts (live host filesystem view)”. docker_volumes는 “lets you share host directories with the container”. ↩↩↩↩

  62. OpenClaw 문서, “Sandboxing”. 2026년 10월 11일 17:42 UTC에 가져옴. “Sandboxing is off by default”. 게이트웨이는 호스트에 남고 도구 실행만 옮겨 감. “not a perfect security boundary”. “an explicit escape hatch”로서의 tools.elevated. ↩↩↩↩↩↩

  63. OpenAI, 커밋 72f999e 기준 Codex 소스: seatbelt_base_policy.sbpl과 seatbelt.rs. 2026년 10월 11일 17:37 UTC에 가져옴. 기본 정책의 (deny default)와 “child processes inherit the policy of their parent”. 읽을 수 없는 루트가 설정되지 않았을 때 (allow file-read*)를 만들고, 그렇지 않으면 그것들을 제외한 읽기 정책을 만드는 has_full_disk_read_access. /usr/bin에 고정된 sandbox-exec. ↩↩↩

  64. Nous Research, Hermes Agent 문서, “Security”. 2026년 10월 11일 17:41 UTC에 가져옴. “Deny rules are a shell-command policy, not a complete shell interpreter or an OS capability sandbox”. 보안 경계로서의 컨테이너 백엔드. 프로덕션 게이트웨이에는 컨테이너 백엔드를 권장함. ↩↩↩↩

  65. OpenClaw 문서, “Modes, scope, and backend”. 2026년 10월 11일 17:43 UTC에 가져옴. agents.defaults.sandbox.mode: off(기본값), non-main, all. 백엔드는 docker(기본값), podman, ssh, openshell, crabbox. Docker 네트워크 기본값은 none. ↩

  66. OpenClaw 문서, “Workspace access”. 2026년 10월 11일 17:43 UTC에 가져옴. none(기본값): 도구는 격리된 샌드박스 작업 공간을 읽고 쓰며 “the agent workspace is not exposed”. ro. rw. ↩↩

  67. Accomplish, “Beltdown: Escaping the Claude Code sandbox”, 2026년 9월 11일. 2026년 10월 11일 18:07 UTC에 가져옴. 샌드박스를 켜고 가장 엄격한 권한 모드를 쓴 상태에서 저장소의 명령이 프롬프트 없이 샌드박스 밖에서 실행됨. Claude Code 2.1.247에서 수정. ↩↩

  68. Accomplish, “Beltdown2: Escaping the Cursor CLI sandbox”, 2026년 9월 12일. 2026년 10월 11일 18:06 UTC에 가져옴. Seatbelt 프로파일은 셸 도구만 감싸고 하네스 자체의 git은 샌드박스 없이 실행됨. Cursor CLI 2026.08.04-aaa8809에서 수정. ↩↩

  69. Accomplish, “Escaping the OpenAI Codex sandbox, twice”, 2026년 9월 15일. 2026년 10월 11일 18:06 UTC에 가져옴. 2026년 8월 12일 보고된 두 건의 탈출, “Both were fixed inside of eight days”. 그중 하나에서 launchd는 응용 프로그램을 “outside Codex’s process tree”에서 실행함. ↩↩

  70. Accomplish, “SharedRoot: Escaping the Claude Cowork sandbox”, 2026년 7월 23일. 2026년 10월 11일 18:03 UTC에 가져옴. 호스트 파일 시스템의 읽기·쓰기 마운트로의 VM 탈출로, 이를 “as the logged-in desktop user”로서 읽고 씀. Anthropic에 보고되어 “Informative”로 종결. 이 글은 TCC로 보호된 위치를 테스트하지 않음. ↩

  71. OpenClaw 문서, “iMessage deployment patterns”. 2026년 10월 11일 17:42 UTC에 가져옴. “Use a dedicated Apple ID and macOS user so bot traffic is isolated from your personal Messages profile.” ↩↩

  72. Apple, Mac 사용 설명서, “Change Users & Groups settings on Mac”. 2026년 10월 11일 18:08 UTC에 가져옴. 일반 사용자는 “can install apps and change their own settings, but can’t add other users or change other users’ settings”. ↩

관련 게시물

애플의 폰트 인터프리터가 이제 Swift로 작성되어 13% 더 빨라졌습니다

애플 보안팀이 TrueType 힌팅 인터프리터를 C에서 메모리 안전한 Swift로 다시 작성했고, 13% 더 빠르게 만들었으며, 오픈소스로 공개하고 그 기법까지 보여주었습니다.

8 분 소요

Container Machine: Mac에서 동작하는 영속적인 Linux 환경

Apple의 container 도구가 container machine과 함께 1.0에 도달했습니다. 사용자 계정, 홈 디렉터리, dotfiles가 마운트된 채로 macOS에서 빠르고 영속적으로 동작하는 Linux 환…

10 분 소요

픽셀 아트의 길: iPhone에서 만드는 맵 연결과 구역

포켓몬, 스타듀 밸리, 동물의 숲은 마을과 마을 사이의 땅을 어떻게 만들까요? 도로, 이음매, 게이트, 지도 화면을 소스에서 측정하고 Kiradex를 위한 브리프로 정리했습니다.

86 분 소요