Claude Code 세션 기록이 로컬에 평문으로 쌓인다 — 481MB 실측과 정리 절차
ai 코딩 도구 Claude Code로 작업하다가 .claude 폴더를 확인했더니 481MB가 쌓여 있었어요. 파일을 열어보니 제가 나눴던 모든 대화가 암호화 없이 JSONL 형태로 남아 있더라고요. 파일 자체는 권한으로 보호되지만, 백업이나 클라우드 동기화를 거치면 이야기가 달라집니다.
이 글을 읽고 나면 여러분은 로컬에 얼마나 쌓여 있는지 정확히 확인하고, 실수로 새는 경로를 점검한 뒤, 보존 기간과 제외 규칙을 직접 설정할 수 있게 됩니다.
준비물
- Claude Code 설치된 환경 (macOS, Linux, Windows)
- 터미널 또는 명령 프롬프트 접근 권한
- 텍스트 에디터 (설정 파일 수정용)
- 백업 도구 설정 확인 권한 (Time Machine, rsync, 클라우드 동기화 등)
버전은 최신 안정 버전을 권장합니다. 코딩 에이전트의 설정 파일 경로는 공식 페이지에서 확인하세요(변동될 수 있음).
실제로 얼마나 쌓여 있는지 확인하기
제 박스에서 확인한 결과를 먼저 보여드릴게요.
find ~/.claude/projects -name '*.jsonl' | wc -l
이 명령을 실행하면 JSONL 파일 개수가 나옵니다. 저는 2,605개가 나왔어요. 용량은 이렇게 확인합니다.
du -sh ~/.claude/projects
출력 결과는 481MB였습니다.
프로젝트 디렉토리 목록도 확인해두세요.
ls ~/.claude/projects
저는 18개 프로젝트가 나왔고요. 파일을 열어보면 claude code 세션 로그에 여러분이 입력한 메시지, Claude가 응답한 내용, 실행한 명령어, 파일 경로까지 전부 들어 있어요. Anthropic 공식 문서에 따르면 이 데이터는 세션 재개를 위해 로컬에 평문으로 저장되며, 기본 보존 기간은 30일입니다.
파일 권한을 확인해보세요.
ls -ld ~/.claude/projects
ls -l ~/.claude/projects/<프로젝트-id>/
디렉토리는 drwx------ (0700), 파일은 -rw------- (0600)으로 나옵니다. 즉 소유자만 읽고 쓸 수 있다는 뜻이에요. 암호화는 안 돼 있지만 같은 계정이나 root가 아니면 직접 접근은 못 합니다.
위험 경로 점검하기
권한으로 보호된다 해도, 파일이 다른 곳으로 복사될 때 문제가 생깁니다. 제가 실제로 확인한 경로 네 가지를 정리했어요.
백업 도구
Time Machine이나 rsync 같은 자동화된 백업 도구는 홈 디렉토리를 통째로 복사합니다. 백업 대상에서 .claude 폴더를 제외하지 않으면 세션 기록이 외장 디스크나 NAS에 그대로 남아요. macOS Time Machine이라면 시스템 설정 → Time Machine → 옵션에서 ~/.claude/projects를 제외 항목에 추가하세요. rsync 스크립트를 쓴다면 --exclude 옵션을 넣으면 됩니다.
클라우드 동기화
Dropbox나 OneDrive에 홈 디렉토리를 동기화하는 분들이 있어요. .claude 폴더가 동기화 범위에 들어가면 클라우드 서버에 평문 기록이 올라갑니다. Dropbox는 선택적 동기화 설정에서 .claude를 제외하고, OneDrive는 해당 폴더를 동기화 해제하세요. iCloud Drive는 홈 디렉토리 전체를 동기화하지 않으므로 기본적으로는 안전합니다.
Git 저장소 실수 커밋
홈 디렉토리에서 git init을 하거나 .gitignore 설정을 빼먹으면 세션 기록이 커밋될 수 있어요. 저장소 루트에 .gitignore 파일을 만들고 .claude/ 줄을 추가하세요. 이미 커밋했다면 git rm --cached -r .claude로 스테이징에서 빼고, 히스토리까지 지우려면 git filter-branch나 BFG Repo-Cleaner를 써야 합니다.
디스크 이미지
전체 디스크를 이미지로 만들 때도 .claude 폴더가 포함됩니다. 이미지 파일을 다른 사람에게 넘기기 전에 민감한 디렉토리를 제거하거나, 이미지 생성 단계에서 아예 제외하세요.
정리 규칙 정하고 자동화하기
이제 보존 기간을 정하고 자동 정리를 설정할 차례예요. 며칠로 잡을지는 여러분의 작업 패턴에 달렸습니다. 세션을 자주 재개한다면 30일이 무난하고, 일회성 작업이 많다면 7일로 줄여도 돼요. 저는 일주일 단위로 프로젝트를 정리하는 편이라 7일로 설정했습니다.
코딩 에이전트 Claude Code의 설정 파일 경로는 운영체제마다 다릅니다. Anthropic 공식 문서의 application data 섹션에 정확한 경로가 나와 있어요. 설정 파일을 열고 cleanupPeriodDays 항목을 찾으세요. 기본값은 30일인데, 이걸 7일로 줄이면 일주일 지난 세션은 자동으로 삭제됩니다.
{
"cleanupPeriodDays": 7
}
설정을 바꾼 뒤 Claude Code를 재시작하면 다음 실행 때부터 오래된 파일이 정리됩니다.
지금 당장 수동으로 정리하고 싶다면 2단계로 나눠서 진행하세요. 먼저 삭제 대상 목록을 확인합니다.
find ~/.claude/projects -name '*.jsonl' -mtime +30 -ls
목록을 확인한 뒤 문제없으면 -ls를 -delete로 바꿔서 실행하세요.
find ~/.claude/projects -name '*.jsonl' -mtime +30 -delete
2단계로 나눠서 확인하는 습관을 들이면 실수를 막을 수 있어요.
특정 프로젝트만 남기고 싶다면 불필요한 디렉토리를 직접 지우면 됩니다.
rm -rf ~/.claude/projects/<불필요한-프로젝트-id>
정기 정리를 자동화하려면 cron에 등록하면 됩니다. 매주 일요일 새벽 3시에 30일 넘은 파일을 정리하는 예시예요.
crontab -e
편집기가 열리면 다음 줄을 추가하세요.
0 3 * * 0 find ~/.claude/projects -name '*.jsonl' -mtime +30 -delete
임계치를 넘으면 알림을 받고 싶다면 이런 스크립트를 만들 수 있어요.
#!/bin/bash
SIZE=$(du -sm ~/.claude/projects | cut -f1)
if [ $SIZE -gt 500 ]; then
echo "Claude Code 세션 로그가 ${SIZE}MB를 넘었습니다." | mail -s "용량 경고" your@email.com
fi
이 스크립트를 cron에 추가하면 500MB를 넘을 때마다 이메일이 옵니다. mail 명령 대신 Slack 웹훅이나 Telegram 봇을 써도 되고요.
지금 당장 할 일
먼저 find 명령으로 현재 상태를 파악하고, 제외 설정을 점검한 뒤, cleanupPeriodDays를 7일로 줄여보세요. 한 달에 한 번 정도 수동으로 정리하는 습관을 들이면 용량 걱정은 없습니다.
자주 묻는 질문
Q. 파일 권한이 0600인데 다른 사람이 볼 수 있나요?
A. claude code 세션 로그는 같은 계정 사용자나 root 권한이 있으면 볼 수 있습니다. 권한은 직접 접근을 막지만, 복사되면 대상 위치의 권한 설정에 따라 달라져요. 외장 디스크나 클라우드 서버에서는 원래 권한이 유지되지 않을 수 있습니다.
Q. Anthropic 서버에도 기록이 남나요?
A. ai 코딩 도구 사용자의 계정 유형과 설정에 따라 다릅니다. Anthropic 공식 문서에 따르면 상업 사용자는 기본 30일 보존이고, 소비자 사용자는 모델 개선에 데이터를 제공하는 옵션을 켜면 5년간 보존됩니다. 로컬 파일을 지워도 서버 보존 기간은 별개로 적용되니 프라이버시 설정을 확인하세요.
Q. cleanupPeriodDays를 0으로 설정하면 어떻게 되나요?
A. 코딩 에이전트 세션이 끝나는 즉시 파일이 삭제됩니다. 하지만 세션 재개 기능을 쓸 수 없게 돼요. 최소 1일은 유지하는 게 실용적입니다.