Claude Code를 자신의 컴퓨터에서 실행하면 저장소 자체가 밖으로 나가지는 않습니다. 하지만 모든 세션을 읽을 수 있는 기록은 디스크에 저장됩니다. 그 기록이 어디에 남는지, 얼마나 오래 유지되는지, 실제로 네트워크를 건너가는 것은 무엇인지 정리했습니다.
Claude Code 세션 기록은 어디에 저장되나?
Claude Code는 세션 기록을 ~/.claude/projects/ 아래에 평문 파일로 저장하며, Anthropic의 데이터 사용 문서에 따르면 별도로 설정하지 않는 한 기본적으로 30일 동안 유지됩니다 . 이는 암호화된 저장소가 아니라 로컬 파일입니다. 세션 중 에이전트가 읽고, 쓰고, 추론한 내용은 같은 디스크에 남아 있으며, 사용자 권한으로 실행되는 어떤 프로세스든 읽을 수 있습니다.
네트워크 관점은 디스크 관점과 별개입니다. Claude Code는 사용자가 실행한 디렉터리에서 에이전트 루프와 모든 도구 호출을 로컬로 실행하며, 프로젝트 파일, 터미널, git 상태, CLAUDE.md, 설정된 MCP 서버에 접근합니다 . 저장소가 벤더 VM으로 복제되는 것은 아닙니다. 다만 프롬프트, 모델 출력, 선택된 파일 컨텍스트는 여전히 API로 이동합니다. Anthropic의 설명은 작업과 관련된 부분만 전송된다는 것입니다 . 따라서 노출 지점은 양쪽에 있습니다. 네트워크를 지나는 부분적인 컨텍스트 창, 그리고 노트북에 남는 완전한 세션 기록입니다.
자격 증명은 세션 기록과 다르게 처리됩니다. API 토큰은 세션 로그 자체가 아니라 macOS Keychain 또는 파일 권한으로 보호되는 로컬 저장소에 보관됩니다 . 무엇을 지울지 결정할 때 이 차이가 중요합니다. ~/.claude/projects/를 비우면 로그인 정보가 아니라 작업의 읽을 수 있는 기록이 삭제됩니다.
사전 확인: 샌드박스 설정을 바꾸기 전에 필요한 것

권한 또는 샌드박스 설정을 수정하기 전에 세 가지를 확인하세요. 지원되는 OS, 최신 CLI, 그리고 권한 규칙이 평가되는 방식에 대한 정확한 이해입니다. Claude Code의 문서상 실행 요구 사항은 macOS 10.15 이상, Ubuntu 20.04 이상/Debian 10 이상, 또는 WSL이나 Git for Windows를 통한 Windows 10 이상이며, Node.js 18 이상, 4GB 이상 RAM, 인증 및 모델 처리를 위한 인터넷 연결도 필요합니다 . 이는 일반적인 로컬 런타임 요구 사항입니다. 샌드박스 전용 요구 사항이 아니며, 그래서 샌드박스 계층은 이를 대체하는 것이 아니라 그 위에 얹히는 구조입니다(Anthropic docs).
다음으로 버전을 확인하세요. npm 패키지 @anthropic-ai/claude-code는 공개되어 있으며, 크롤링 시점에 버전 2.1.220, 의존성 0개, 게시된 버전 472개, 주간 다운로드 약 790만 건으로 표시되었습니다 . 샌드박스 플래그와 권한 키는 릴리스마다 바뀔 수 있으므로, 어디에서 가져온 설정 조각이든 복사하기 전에 자신이 실행 중인 버전을 먼저 확정해야 합니다(npm registry).
마지막으로 권한 모델 자체를 이해해야 합니다. 규칙은 settings.json에서 도구별로 allow, ask, deny 목록에 선언되며, 평가는 deny 우선입니다. deny 규칙과 일치하면 allow 규칙이 있어도 deny가 이깁니다. 허용은 전부 아니면 전무가 아니라 범위 기반입니다. 예를 들어 Bash(npm run:*)은 일반 셸 전체를 넘기지 않고 해당 명령 계열만 허용합니다 . ls, cat, git status 같은 읽기 전용 명령으로 구성된 고정 allowlist는 확인 없이 실행되지만, 상태를 바꾸는 작업은 명시적 승인이 필요합니다. 또한 작업 디렉터리 경계가 쓰기 권한을 실행 폴더와 그 하위 트리로 제한합니다(Claude Code security docs).
세션 로그를 찾고, 읽고, 제한하는 절차

기록 점검은 네 단계로 반복하면 됩니다. 파일 위치를 찾고, 하나를 읽어 실제로 무엇이 기록됐는지 확인한 뒤, 앞으로의 세션이 덜 수집되도록 샌드박스 범위를 좁히고, 마지막으로 디스크에 얼마나 오래 남길지 결정합니다. Anthropic은 로컬 세션 기록을 별도 설정이 없으면 기본 30일 동안 ~/.claude/projects/ 아래에 평문으로 저장합니다 . 따라서 아래 단계는 모두 이미 사용자가 소유한 파일을 대상으로 합니다.
1단계 — 기록 디렉터리 목록 보기. Claude Code는 실행 경로를 기준으로 프로젝트마다 하나의 하위 디렉터리를 만듭니다. 목록을 보고 인코딩된 폴더 이름을 Claude Code를 시작한 작업 디렉터리와 맞춰 보세요.
ls -la ~/.claude/projects/2단계 — 기록 하나를 처음부터 끝까지 읽기. 현재 프로젝트의 하위 디렉터리에서 가장 최근 파일을 열고 무엇이 들어 있는지 확인하세요. 프롬프트, 모델 출력, 도구 호출, 세션 중 접근한 파일 경로가 대상입니다. 특히 평문으로 남아서는 안 되는 값을 찾습니다. .env 파일에서 나온 값, 내부 전용 호스트명, 데이터베이스 연결 문자열 같은 것들입니다. Claude Code는 이를 로컬에서 읽고 작업 관련 부분만 모델 API로 보냅니다 . 하지만 “API로 전송됨”과 “기록에 저장됨”은 별개의 문제이며, 기록은 사용자의 디스크에 남아 있습니다.
3단계 — settings.json에서 파일시스템과 네트워크 범위 설정하기. 샌드박스화된 Bash 도구는 allowRead, denyRead, allowWrite로 읽기와 쓰기 범위를 정하고, 샌드박스가 재설정할 수 없는 프록시를 통해 allowedDomains 목록으로 외부 연결을 제한합니다 . 비밀값이 있는 디렉터리를 denyRead에 넣으면 도구 호출에 들어가지 않고, 따라서 기록에도 들어가지 않습니다. 모든 자식 프로세스는 샌드박스를 상속하므로, npm install이 postinstall curl을 트리거하더라도 범위 안에 묶입니다 .
4단계 — 삭제할지, 보존 기간을 줄일지 결정하기. 30일은 기본값이지 최소값이 아닙니다. 민감한 작업 뒤에는 프로젝트 하위 디렉터리를 수동으로 삭제하거나, 설정에서 보존 기간을 줄이세요. Anthropic의 설명은 경계를 분명히 나눕니다. 권한 규칙은 에이전트가 무엇을 해야 하는지를 설명하고, 샌드박스는 무엇을 할 수 있는지를 강제합니다(Claude Code sandboxing docs). 보존 기간은 그 둘이 지나간 뒤 무엇이 남는지에 대한 세 번째 축입니다.
주의할 점: 로컬 평문 로그와 Manus·Genspark의 클라우드 보관 정책

보관 기간은 로컬 에이전트와 클라우드 에이전트가 가장 크게 갈리는 지점이며, 어느 쪽 기본값이 무조건 더 안전하다고 보기도 어렵다. Claude Code는 읽을 수 있는 대화 기록을 사용자의 디스크에 30일 동안 남긴다 . Manus는 무료 티어 작업 샌드박스를 7일 동안 비활성 상태가 이어지면 재활용하고, Pro 샌드박스는 21일 후 재활용한다. 이때 아티팩트와 중요한 프로젝트 파일은 복원될 수 있지만, 중간 코드와 임시 파일은 복원되지 않는다 . 한쪽은 사용자가 직접 삭제할 수 있는 위치에 데이터를 두고, 다른 한쪽은 사용자가 제어하지 못하는 일정에 따라 데이터를 삭제한다.
Manus와 Genspark는 모두 E2B의 Firecracker microVM에서 실행된다. 작업 또는 세션마다 VM 하나가 할당되며, 샌드박스 시작 시간은 약 150ms로, E2B가 테스트한 Docker 방식의 10~20초보다 훨씬 짧다 . 이 세분성이 중요하다. 격리는 머신 단위가 아니라 작업 단위다. 샌드박스가 폐기되면 그 안의 임시 상태도 함께 사라지지만, Manus는 VM 내부에서 root 권한을 허용하므로 에이전트는 경계 안에서는 Seatbelt나 bubblewrap 아래의 Claude Code보다 덜 제약된다 .
로컬 사용자에게 특히 조심해야 할 부분은 이것이다. 평문 대화 기록은 권한 모델의 빈틈이지, OS 수준 샌드박스가 막아 주는 문제가 아니다. 샌드박싱은 에이전트가 접근할 수 있는 범위를 제한한다. 하지만 이후 클라이언트가 ~/.claude/projects/에 무엇을 쓰는지는 별개의 문제다. Genspark의 소비자 정책은 세 번째 변수를 더한다. 프롬프트와 출력은 수집되어 Microsoft Azure에 저장될 수 있고, 응답 생성을 위해 제3자 모델 제공업체와 공유될 수 있다 .
| 에이전트 | 세션 상태가 저장되는 위치 | 기본 보관 기간 | 네트워크 송신 제어 |
|---|---|---|---|
| Claude Code(로컬) | ~/.claude/projects/, 사용자 디스크의 평문 | 30일, 사용자가 삭제 가능 | 샌드박스가 재설정할 수 없는 프록시를 통한 allowedDomains 허용 목록 |
| Manus | Manus 인프라의 작업별 Firecracker microVM | 비활성 후 무료 7일 / Pro 21일 | VM 경계의 Zero Trust, 내부 root 허용 |
| Genspark | 세션별 microVM, 프롬프트와 출력은 Azure에 저장 | 계정 종료 후 30일 이내 계정 데이터 삭제 | 벤더 관리형, 엔터프라이즈 티어는 데이터 미보관을 주장 |
동일한 도구 조건에서 이런 보안 태세를 비교한 중립적인 제3자 벤치마크는 없다. 위의 모든 보관 기간 수치도 벤더가 공개한 것이다. 이를 측정값이 아니라 감사해야 할 약속으로 봐야 한다.
다음에 시도할 것: 로컬 도구 접근성을 유지하면서 샌드박스 조이기
실질적인 다음 단계는 Claude Code의 샌드박스 Bash 도구를 켜서 권한 프롬프트가 아니라 커널에서 강제하도록 옮기는 것이다. Anthropic의 설명에 따르면 권한 규칙은 에이전트가 무엇을 해야 하는지를 서술하고, 샌드박싱은 무엇을 할 수 있는지를 강제한다 . 이 샌드박스는 macOS에서는 Seatbelt를 네이티브로 사용하고, Linux와 WSL2에서는 bubblewrap과 선택적 seccomp 필터를 사용한다. 네이티브 Windows는 지원되지 않는다 .
핵심 역할은 세 가지 설정이 한다.
- 파일시스템 범위 — 세션이 홈 디렉터리 전체가 아니라 필요한 경로만 보도록
allowRead,denyRead,allowWrite를 설정한다. - 네트워크 송신 —
allowedDomains목록을 선언한다. 트래픽은 샌드박스가 재설정할 수 없는 프록시를 거쳐 라우팅되고, 모든 자식 프로세스가 샌드박스를 상속하므로 postinstallcurl을 트리거하는npm install도 경계 안에 머문다 . - 닫힌 상태로 실패 — 지원되지 않는 플랫폼에서 조용히 샌드박스 없이 실행되는 대신 중단되도록
failIfUnavailable을 설정하고,dangerouslyDisableSandbox와 광범위한allowUnsandboxedCommands허용은 폐기 가능한 환경에만 둔다.
이 조합은 로컬 실행의 장점인 실제 Xcode 설치, VPN 경로, 데이터베이스 소켓, Docker 데몬 접근성은 유지하면서 , 침해되었거나 프롬프트 인젝션을 당한 세션이 닿을 수 있는 범위는 좁힌다. Anthropic은 어떤 시스템도 프롬프트 인젝션에 완전히 면역일 수 없다고 명시하며, 신뢰할 수 없는 콘텐츠를 다루는 도구 호출은 VM 안에서 실행할 것을 권장한다 .
구체적으로는 샌드박스를 켜고, allowWrite와 allowedDomains를 프로젝트 범위로 좁히며, failIfUnavailable을 설정하고, ~/.claude/projects/ 아래의 평문 대화 기록에 대한 보관 정책을 함께 마련하라 . 격리와 로그 위생은 서로 다른 작업이다. 하나만 처리하면 다른 쪽은 그대로 열린 채 남는다.
자주 묻는 질문
Claude Code는 내 소스 코드를 Anthropic 서버로 보내나요?
일부는 그렇습니다. Claude Code는 파일을 로컬에서 읽고, Anthropic의 데이터 사용 문서에 따라 해당 컨텍스트 중 작업과 관련된 부분만 모델 API로 보냅니다 . 저장소 자체가 벤더 VM으로 클론되지는 않습니다. 이 점이 웹의 Claude Code와 구조적으로 다른 부분입니다. 웹에서는 각 세션이 Anthropic이 관리하는 격리 VM에서 실행되고, 그 VM 안으로 저장소가 클론되며, 외부 트래픽은 보안 프록시를 통해 라우팅됩니다 . 따라서 산출물은 로컬에 남지만, 선택된 컨텍스트 창은 그렇지 않습니다.
Claude Code 세션 기록은 얼마나 오래, 어디에 보관되나요?
세션 기록은 ~/.claude/projects/ 아래에 일반 텍스트로 기록되며, 더 짧은 기간을 설정하지 않는 한 기본적으로 30일 동안 보관됩니다 . 자격 증명은 별도로 처리됩니다. 기록 파일이 아니라 macOS 키체인이나 파일 권한으로 보호되는 로컬 저장소에 보관됩니다 . 기록 디렉터리는 민감한 위치로 다루세요. 붙여넣은 비밀값, 내부 호스트 이름, 해당 프로젝트에서 실행한 세션의 파일 내용이 들어 있을 수 있습니다.
Manus의 클라우드 샌드박스가 Claude Code의 로컬 실행보다 더 비공개인가요?
엄밀히 더 낫다기보다 서로 다른 절충입니다. Manus는 각 작업마다 자체 네트워킹, 파일시스템, 브라우저를 가진 완전히 격리된 클라우드 VM을 할당하고, VM 경계에는 Zero Trust를 적용하면서 내부에서는 루트 접근을 포함한 전체 제어권을 제공합니다 . 하지만 전체 작업이 내 컴퓨터 밖에서 실행되고, 업로드한 첨부 파일과 생성된 산출물도 그곳에 남습니다. 무료 티어 샌드박스는 7일 동안 활동이 없으면 재활용되고, Pro는 21일 후 재활용됩니다 . 로컬 실행은 저장소를 디스크에 유지하지만 일반 텍스트 기록을 남깁니다. 클라우드 실행은 로컬 흔적을 줄이는 대신 벤더 측 보관이 추가됩니다.
Claude Code의 로컬 세션 로깅을 완전히 끌 수 있나요?
인용한 Anthropic 문서는 기본 30일 보관 기간을 설정으로 바꿀 수 있다고 설명하지만, 기록 파일 작성을 아예 끄는 단일 스위치는 문서화하지 않습니다 . 실무적인 우회 방법은 설정에서 보관 기간을 줄이거나, ~/.claude/projects/ 아래의 프로젝트별 디렉터리를 일정에 따라 삭제하는 것입니다. CLI는 자주 배포됩니다. 크롤링 시점에 공개 @anthropic-ai/claude-code 패키지는 472개의 게시 버전 중 2.1.220 버전을 보였습니다 . 따라서 어떤 토글이 없다고 영구적으로 판단하기 전에 현재 데이터 사용 페이지를 확인하세요.
샌드박스 Bash 도구와 일반 권한 규칙은 무엇이 다른가요?
권한 규칙은 지침이고, 샌드박스는 강제 장치입니다. 일반 규칙은 settings.json 안의 allow / ask / deny 목록으로 존재하며 거부 우선으로 평가됩니다. 그래서 Bash(npm run:*) 같은 허용을 부여해도 전체 셸을 넘겨주는 것은 아닙니다 . 샌드박스 Bash 도구는 그 경계를 커널 안으로 옮깁니다. macOS에서는 Seatbelt를 네이티브로 사용하고, Linux와 WSL2에서는 bubblewrap과 선택적 seccomp 필터를 사용하며, 네이티브 Windows는 지원하지 않습니다. 파일시스템 범위는 allowRead / denyRead / allowWrite에서 오고, 네트워크 송신은 샌드박스가 재설정할 수 없는 프록시 뒤의 allowedDomains 목록으로 제한되며, 모든 자식 프로세스가 샌드박스를 상속합니다. 따라서 npm install의 postinstall 훅이 curl을 호출하더라도 그 안에 갇혀 있습니다 . Anthropic의 표현을 빌리면, 권한 규칙은 에이전트가 무엇을 해야 하는지 설명하고, 샌드박싱은 에이전트가 무엇을 할 수 있는지 강제합니다.
이 글이 도움이 되셨다면, 새 글이 올라올 때마다 이메일로 받아보세요.