Claude Code의 세션 지속성

개요

Claude Code는 단순한 대화 기록을 넘어서는 정교한 세션 지속성을 제공합니다. 이 기능은 백그라운드 프로세스, 파일 컨텍스트, 권한, 작업 디렉터리를 포함한 개발 환경의 전체 상태를 유지합니다.

세션 명령어

핵심 명령어

명령어 설명 예시
claude --continue 가장 최근 대화를 계속합니다 claude --continue
claude --resume 특정 세션을 다시 시작합니다 (대화형 선택) claude --resume
claude --resume <id> ID로 특정 세션을 다시 시작합니다 claude --resume abc123-def456
claude --session-id <uuid> 지정한 세션 ID로 시작합니다 claude --session-id my-custom-id

지속되는 항목

1. 대화 기록

  • 사용자와 Claude 사이의 전체 메시지 기록
  • 매개변수와 응답을 포함한 툴 호출 기록
  • 이전 상호작용에서의 컨텍스트
  • 파일 참조와 수정 내역

2. 백그라운드 프로세스

run_in_background: true로 시작한 백그라운드 작업은 세션이 달라져도 유지됩니다:

# 예시: 한 세션에서 서버를 시작합니다
python3 -m http.server 8080  # bash_3

# --continue 또는 --resume 이후:
# - 프로세스가 계속 실행 중입니다
# - 셸 ID가 유지됩니다 (bash_3)
# - BashOutput 도구로 출력을 확인할 수 있습니다
# - KillBash 도구로 종료할 수 있습니다

검증된 테스트 결과:

  • 세션이 종료된 후에도 백그라운드 프로세스가 계속 실행됩니다
  • 셸 ID(bash_1, bash_2 등)가 유지됩니다
  • 출력 버퍼가 유지되어 증분 읽기가 가능합니다
  • 프로세스 상태(실행 중/완료/종료됨)가 추적됩니다

3. 파일 컨텍스트

Claude는 어떤 파일에 접근했는지 기억합니다:

# Read 도구로 읽은 파일
# Edit 도구로 수정한 파일
# Write 도구로 생성한 파일
# 모든 내용이 세션 간에 유지됩니다

테스트 예시:

# 세션 1: 표시용 파일을 생성합니다
claude> Write test-session-marker.txt

# 세션 2: Claude는 다시 읽지 않아도 파일을 알고 있습니다
claude --continue
claude> "What's in test-session-marker.txt?"
# Claude는 메모리에서 해당 파일을 참조할 수 있습니다

4. 작업 디렉터리 컨텍스트

# 현재 작업 디렉터리가 유지됩니다
# 환경 상태가 유지됩니다
# 경로 컨텍스트가 기억됩니다

5. 도구 권한

한 세션에서 승인한 권한은 그대로 이어집니다:

# 첫 번째 세션: git 명령을 위해 Bash 도구를 승인합니다
# 이후 세션: 동일한 패턴에 대해 다시 승인할 필요가 없습니다

증분 출력 추적

BashOutput 도구가 읽기 위치를 유지합니다:

# 첫 번째 확인: bash_6
BashOutput(bash_6) → 1-10줄을 표시합니다

# 두 번째 확인 (세션을 다시 시작한 이후에도)
BashOutput(bash_6) → 새로 추가된 11-20줄만 표시합니다

# 중복 출력 표시를 방지합니다

세션 저장소

저장 위치

세션은 로컬 머신에 저장되며(운영체제에 따라 경로가 다릅니다):

  • 대부분 ~/.config/claude/ 또는 유사한 경로에 있습니다
  • 각 세션에는 고유 식별자가 있습니다
  • 오래된 세션은 자동으로 정리됩니다

세션 구조

{
  "sessionId": "abc123-def456",
  "startTime": "2025-08-11T22:00:00Z",
  "lastActive": "2025-08-11T22:27:00Z",
  "messages": [...],
  "backgroundTasks": {
    "bash_3": {
      "command": "python3 -m http.server 8080",
      "status": "running",
      "pid": 295416,
      "outputPosition": 1234
    }
  },
  "fileContext": {
    "read": ["file1.txt", "file2.js"],
    "modified": ["config.json"],
    "created": ["test-marker.txt"]
  },
  "permissions": {
    "approvedTools": ["Bash(git:*)", "Edit"],
    "directories": ["/workspaces/project"]
  }
}

실전 예시

예시 1: 개발 서버 관리

# 월요일: 개발을 시작합니다
claude
> npm run dev를 백그라운드에서 시작하세요
> docker-compose up을 백그라운드에서 시작하세요
> 기능 개발을 진행합니다...
> 종료합니다 (서버는 계속 실행됩니다)

# 화요일: 작업을 이어갑니다
claude --continue
> npm run dev 상태를 확인합니다  # 여전히 실행 중입니다!
> docker 로그를 보여주세요  # 모든 출력을 확인할 수 있습니다
> 개발을 계속합니다...

예시 2: 장시간 빌드

# 긴 빌드를 시작합니다
claude
> 빌드 스크립트를 백그라운드에서 실행하세요
> 점심 식사를 위해 종료합니다

# 돌아와서 진행 상황을 확인합니다
claude --continue
> 빌드 출력을 확인합니다  # 자리를 비운 동안 무슨 일이 있었는지 확인합니다
> 빌드가 끝났나요? 종료 코드를 확인합니다

예시 3: 디버그 세션

# 복잡한 디버깅 세션
claude
> 모니터링을 백그라운드에서 설정합니다
> 테스트 파일을 만듭니다
> 진단을 실행합니다
> [시스템 충돌/자리 이탈 필요]

# 떠난 지점 그대로에서 다시 시작합니다
claude --resume
> 모든 백그라운드 모니터가 여전히 실행 중입니다
> 테스트 파일이 여전히 컨텍스트에 포함되어 있습니다
> 정확히 그 지점에서 디버깅을 이어갑니다

모범 사례

1. 세션 관리

이렇게 하세요:

  • 당일 작업을 이어가려면 --continue를 사용하세요
  • 특정 과거 세션이 필요할 때는 --resume을 사용하세요
  • --session-id로 세션에 의미 있는 이름을 부여하세요
  • 장기간 자리를 비우기 전에 백그라운드 작업을 정리하세요

이렇게 하지 마세요:

  • 불필요한 백그라운드 작업을 며칠씩 실행된 채로 두지 마세요
  • 일주일 이상 지난 세션에 의존하지 마세요(정리될 수 있습니다)
  • 백그라운드 프로세스가 시스템 재부팅 후에도 살아 있을 것이라고 가정하지 마세요

2. 백그라운드 작업 관리

# 세션을 종료하기 전에 백그라운드 작업을 확인하세요
/bashes  # 모든 백그라운드 작업을 나열합니다

# 필요하면 정리하세요
"dev server를 제외한 모든 백그라운드 작업을 종료하세요"

# 또는 선택적으로 정리하세요
"bash_1과 bash_2는 종료하고 bash_3은 유지하세요"

3. 컨텍스트 유지

# 복잡한 작업을 위해 세션 마커를 만드세요
"현재 컨텍스트로 SESSION_NOTES.md를 생성하세요"

# 당신과 Claude 모두 컨텍스트를 기억하는 데 도움이 됩니다
"진행 상황으로 SESSION_NOTES.md를 업데이트하세요"

제한 사항

1. 시스템 경계

  • 세션은 머신 로컬로 유지됩니다
  • 시스템 재부팅 시 유지되지 않습니다
  • 머신 간에 이전할 수 없습니다

2. 프로세스 제한

  • 백그라운드 프로세스가 자원 문제로 OS에 의해 종료될 수 있습니다
  • 오랫동안 유휴 상태인 프로세스는 시간 초과될 수 있습니다
  • 출력 버퍼에는 크기 제한이 있습니다

3. 보안 경계

  • 세션 재개 시 파일 권한을 다시 확인합니다
  • 새로운 민감한 작업은 다시 승인이 필요합니다
  • 각 세션마다 디렉터리 접근을 검증합니다

고급 기능

세션 분기

동일한 세션을 여러 번 다시 시작할 수 있습니다:

# 원래 작업
claude --session-id project-main

# 분기 1: 접근 방식 A를 시도합니다
claude --resume project-main
# 접근 방식 A를 진행합니다

# 분기 2: 접근 방식 B를 시도합니다  
claude --resume project-main
# 접근 방식 B를 진행합니다
# 두 분기 모두 동일한 시작 컨텍스트를 가집니다

부분 복구

세션이 부분적으로 손상되더라도:

  • 대화 기록은 대부분 복구할 수 있습니다
  • 파일 컨텍스트가 유지되는 경우가 많습니다
  • 백그라운드 작업은 다시 시작해야 할 수 있습니다

자동 정리

Claude Code는 세션을 자동으로 관리합니다:

  • 일정 기간이 지나면 오래된 세션을 정리합니다
  • 보존 기간을 설정할 수 있습니다
  • 큰 세션은 자동으로 압축합니다

문제 해결

문제: 세션 재개 후 백그라운드 작업을 찾을 수 없음

# 프로세스가 아직 존재하는지 확인합니다
ps aux | grep <command>

# 프로세스가 종료되었다면 다시 시작하세요
"bash_3에서 실행되던 dev server를 다시 시작하세요"

문제: 세션이 다시 시작되지 않음

# 대신 continue를 시도하세요
claude --continue

# 최근 세션을 나열합니다
claude --resume  # 대화형 선택

# 필요하면 새로 시작하세요
claude  # 새 세션

문제: 권한이 기억되지 않음

# 보안을 위해 권한이 만료될 수 있습니다
# 요청이 표시되면 다시 승인하면 됩니다
# 개발 중이라면 --dangerously-skip-permissions를 사용할 수도 있습니다

검증된 테스트

다음 기능을 테스트하여 검증했습니다:

백그라운드 작업 지속성

  • python3 -m http.server 8080을 bash_3으로 실행했습니다
  • 세션을 계속한 후에도 서버가 실행 중이었습니다
  • ps aux로 프로세스를 확인했습니다

셸 ID 유지

  • 백그라운드 작업 ID(bash_1, bash_2 등)가 유지되었습니다
  • 세션 재개 후에도 동일한 ID를 참조할 수 있었습니다

증분 출력

  • BashOutput은 마지막 확인 이후의 새 출력만 반환했습니다
  • 세션 간에도 위치 마커가 유지되었습니다

파일 컨텍스트 기억

  • 세션에서 생성하거나 수정한 파일을 기억했습니다
  • 세션 재개 후 파일을 다시 읽을 필요가 없었습니다

다중 백그라운드 작업

  • 여러 백그라운드 프로세스를 실행할 수 있었습니다
  • 각각 독립적으로 추적되었습니다
  • 각 작업이 고유 상태를 유지했습니다

관련 문서


마지막 업데이트: 2025년 8월 Claude Code 최신 버전으로 검증됨