보안 설계
모든 호출에서 지켜지는 경계
StudioCat은 모델이 내 컴퓨터에서 작업하게 합니다. 모델은 틀릴 수도, 혼동할 수도, 읽은 내용에 이끌릴 수도 있다고 가정합니다. 그래서 경계는 모델에 대한 권고가 아니라 StudioCat이 호출마다 강제합니다. 이 페이지는 현재 버전의 설계를 설명합니다.
위협 모델
- 범위 안: 모델이 잘못된 도구를 호출하거나, 잘못된 경로나 프로젝트를 지정하거나, 쓰기를 반복하거나, 파일·웹 페이지·도구 출력에 숨겨진 지시를 따르는 경우.
- 범위 안: Mac이 네트워크에 노출되는 것, 그리고 자격 증명이 로그·인수·진단 정보를 통해 새어 나가는 것.
- 범위 밖: 이미 내 macOS 계정이나 ChatGPT 계정을 장악한 사람. 내 ChatGPT 계정을 쓸 수 있는 사람은 내가 승인한 프로젝트도 쓸 수 있습니다. 다단계 인증으로 보호하세요.
전송: 나가는 연결만
StudioCat에는 OpenAI의 터널 클라이언트가 들어 있습니다. HTTPS로 OpenAI를 롱 폴링해 도구 호출을 받고 결과를 돌려보냅니다. 로컬 서버도, 수신 대기 포트도, 포트 포워딩도 없으며, 진단 기능도 수신 대기를 열지 않습니다. 호출은 내 터널을 위해 ChatGPT에 추가한 MCP 서버에서만 옵니다.
모든 호출마다 권한 확인
- 하나의 정책 저장소가 도구 → 명령 → 경로 순으로 모든 호출을 판단합니다. 도구 주석은 힌트일 뿐 권한이 아닙니다.
- 경로는 정규화(심볼릭 링크,
..)한 뒤 확인합니다. 별칭으로 규칙을 우회할 수 없고, 거부 규칙이 우선합니다. - 앱에서 승인한 프로젝트만 인정됩니다. 권한은 앱에서의 내 동작에서만 나오며, 모델이나 모델이 보낸 경로에서 나오지 않습니다.
- 터미널과 커밋은 모든 프로젝트에서 기본적으로 꺼져 있으며, 자동으로 켜지는 일은 없습니다.
- 입력은 엄격하게 검증합니다. 알 수 없는 필드와 잘못된 타입은 거부하며, 다른 호출로 억지로 바꾸지 않습니다.
- 대화는 각자의 프로젝트에 연결되므로, 한 대화가 다른 프로젝트에서 몰래 작업할 수 없습니다.
확인 절차
위험한 패턴과 일치하는 명령은 정책이 허용한 뒤, 실행하기 전에 Mac에서 확인을 요청합니다. 거부나 시간 초과는 아무 일도 일어나지 않았다는 뜻이며, 모델에도 그렇게 전달됩니다. 확인 절차가 경계를 넓히는 일은 없습니다. 정책이 거부한 호출은 묻지 않고 거부됩니다. 명령 목록은 실수를 막는 보조 장치일 뿐 경계가 아닙니다. 경계는 그 프로젝트에 터미널 권한이 있느냐입니다.
변경과 복구
- 패치는 프로젝트별로 한 단위로 적용됩니다. 일부가 실패하면 완료된 부분은 보상되고, 실패는 정직하게 보고됩니다.
- 모든 편집은 ‘변경 검토’에서 확인하고 되돌릴 수 있습니다. 오래된 카드는 새 작업을 덮어쓰지 않고 되돌리기를 거부합니다.
- 체크포인트는 숨겨진 ref와 임시 인덱스를 사용합니다. 브랜치, HEAD, 인덱스, stash는 건드리지 않습니다.
- 명령은 프로세스 그룹 단위로 중지되므로, 취소한 명령의 하위 프로세스가 남지 않습니다.
정직한 결과
도구 오류는 안정적인 코드(not_authorized, user_denied, 충돌 등)와 함께 돌아옵니다. 이미 실행되었을 수도 있는 호출이 시간 초과되면, 모델은 outcome_unknown과 함께 다시 시도하기 전에 상태를 확인하라는 안내를 받습니다. 거짓된 “아무 일도 없었음”이 아닙니다. 너무 큰 결과는 명시적으로 잘리며, 조용히 버려지지 않습니다.
자격 증명과 데이터
- 터널 자격 증명은 macOS 키체인(또는 직접 설정한 환경 변수)에만 저장됩니다. 인수, 로그, 상태 파일, 진단 출력에는 절대 나타나지 않습니다.
- StudioCat은 저장소를 업로드하지 않습니다. 모델이 도구 호출로 읽은 내용은 ChatGPT 대화의 일부가 되며 OpenAI의 약관에 따라 처리됩니다.
- 로컬 감사 로그는 모든 허용 및 거부 결정을 기록합니다. 우리에게 보내는 것은 없으며, 향후 버전에서 동의를 요청하지 않는 한 원격 측정도 없습니다.
한계
- 정책은 OS 샌드박스가 아닙니다. 터미널을 켠 프로젝트는 내 사용자 계정으로 실행할 수 있는 것이면 무엇이든 실행할 수 있습니다. 직접 명령을 실행할 만한 프로젝트에서만 켜세요.
- 체크포인트와 되돌리기는 백업이 아니며, git이 무시하는 파일은 다루지 않습니다.
- Mac이 충돌하는 경우 패치 되돌리기는 원자적이지 않습니다.
- StudioCat은 현재 비공개 소스입니다. 그것이 바뀌기 전까지는 서명·공증된 빌드와 이 문서가 신뢰를 얻는 방법입니다.
문제 신고
보안 문제를 발견하셨나요? 제목에 “Security report”를 넣어 [email protected]로 메일을 보내 주세요. API 키나 비공개 코드는 넣지 마세요.