홍드로이드의 야매코딩

Claude Code 백그라운드 세션 — 커밋과 푸시를 안 묻고 하고, main만은 건드리지 않습니다 본문

AI & Vibe Coding

Claude Code 백그라운드 세션 — 커밋과 푸시를 안 묻고 하고, main만은 건드리지 않습니다

홍드로이드 2026. 8. 17. 01:49
반응형

세션 여러 개를 뒤로 돌려놓고 병렬로 굴리는 화면이 있습니다. 편한데, 저는 한 가지가 궁금했습니다 — 일이 끝나면 결과가 어디에 남는가. 공식 문서를 열어보니 답이 분명했습니다. 뒤에서 도는 세션은 작업을 잃지 않으려고 스스로 커밋하고, 원격이 있으면 푸시까지 합니다. 묻지 않고요. 대신 절대 안 하는 것 세 가지가 못 박혀 있었습니다.

📌 30초 요약

  • 끝내기 전에 안 묻고 커밋하고, 원격이 있으면 푸시합니다. 필요하면 초안 PR까지 엽니다.
  • 절대 안 하는 셋main 계열 푸시, 강제 푸시, 병합입니다.
  • 내 지시가 더 셉니다. 메모리 파일에 "커밋은 내가 한다"고 적어두면 git을 안 건드립니다.
  • 파일을 고치기 전에 자기 작업방으로 옮겨 갑니다. 저장소 안에서는 옮겨 가기 전까지 쓰기가 막힙니다.
  • 뒤로 보낼 때 진행 중 작업이 따라갑니다. 다만 따라가지 못하고 중단되는 것도 있습니다.
  • 목록의 점 하나가 프로세스가 죽었다는 뜻인데, 답장하면 멈춘 지점부터 다시 시작합니다.

끝내기 전에 작업을 보존합니다

이유가 명확합니다. 뒤에서 도는 세션은 자기만의 작업 폴더에서 일하는데, 그 세션을 지우면 폴더째 사라질 수 있습니다. 그래서 문서는 Claude에게 끝내기 전에 결과를 안전한 곳에 옮겨두라고 지시해 뒀습니다.

🔏 하는 것과 절대 안 하는 것

  • 커밋은 묻지 않고 합니다. 저장소에 원격이 있으면 브랜치를 푸시까지 합니다.
  • 작업 성격에 맞으면 초안 PR을 엽니다. 그러면 목록의 그 줄에 PR 번호 표시가 붙습니다.
  • 절대 안 하는 것 셋main이나 master로 푸시, 강제 푸시, 병합입니다.
  • 내 git 지시가 우선입니다. 작업 지시나 메모리 파일에 "커밋·푸시는 내가 한다"고 적혀 있으면 git을 나에게 맡깁니다.

예외가 하나 더 있습니다 — 세션이 스스로 격리하지 않은 체크아웃에서 일하고 있으면 커밋이나 브랜치 전환 전에 물어봅니다. 격리를 꺼뒀거나, 옮겨 가기가 실패했거나, 이미 있던 작업방에서 시작한 경우죠. 즉 자기가 만든 방에서만 안 묻고 커밋합니다. 그리고 무슨 일을 했든 끝에는 무엇을 했고 결과가 어디 있는지를 보고합니다 — 경로든 브랜치든 PR이든, 아니면 답 자체든요.

편집 전에 자기 작업방으로 옮겨 갑니다

뒤로 보낸 세션은 어디서 시작하든 내 작업 폴더에서 출발합니다. 그런데 파일을 고치기 직전에 자기만의 작업방으로 옮겨 갑니다. 그래서 병렬 세션들이 같은 체크아웃을 읽으면서 각자 다른 곳에 씁니다. 작업방 격리를 정리했을 때 본 네 가지 검사가 이 세션과 그 하위 에이전트에도 그대로 걸립니다.

건너뛰는 경우가 셋 있습니다 — 이미 작업방 안에 있을 때, 작업 폴더가 git 저장소가 아니고 대체 훅도 없을 때, 쓰는 위치가 작업 폴더 밖일 때입니다. 여기서 중요한 게 두 번째입니다.

⚠️ git 저장소 밖에서는 세션끼리 안 나뉩니다

저장소가 아닌 폴더에서는 세션들이 작업 폴더에 직접 쓰고 서로 격리되지 않습니다. 문서가 대놓고 경고합니다 — 같은 파일을 고칠 병렬 세션을 그런 곳에 띄우지 말라고요. 반대로 저장소 안이라면 격리될 때까지 쓰기 자체가 막힙니다. 같은 상황인데 저장소 안팎에서 실패 방식이 정반대입니다 — 안에서는 막아서 지키고, 밖에서는 그냥 통과시킵니다. 격리가 곤란한 저장소라면 설정으로 끌 수 있는데, 그러면 내 작업 사본을 직접 고칩니다. git이 아닌 버전관리를 쓴다면 훅을 걸어 같은 격리를 만들 수 있고요.

뒤로 보낼 때 따라가는 것과 아닌 것

뒤로 보내는 건 새 프로세스를 띄워 저장된 대화를 이어받는 방식입니다. 그래서 진행 중이던 일이 대부분 따라갑니다. 다만 전부는 아닙니다.

진행 중이던 일 뒤로 보낼 때
백그라운드 셸 명령, 하위 에이전트 따라가서 계속 돎
동적 워크플로, 반복 실행 예약 작업 따라가서 계속 돎
감시 작업 중단됨
감시 작업을 가진 하위 에이전트 같이 중단됨

규칙이 하나 더 있습니다 — 하위 에이전트는 자기가 시작한 것들과 함께 움직여서, 그 전부가 옮겨갈 수 있을 때만 따라갑니다. 하나라도 못 옮기면 통째로 안 갑니다. 그리고 중단될 것이 있으면 확인 창을 띄워 물어봅니다. 반대로 이월 자체를 원치 않으면 환경변수로 끌 수 있고, 그러면 뒤로 보내기 전에 매번 확인을 받습니다. 실행할 때 준 설정 플래그들도 따라가는데, 여기에 승인 전부 건너뛰기 플래그도 포함됩니다 — 다만 문서가 못을 박습니다. 따라간다고 새 권한이 생기는 건 아니고, 그 모드는 여전히 일회성 대화형 승인을 요구합니다. 반복 실행 예약을 걸어둔 채 뒤로 보내도 계속 돈다는 것도 알아둘 만합니다.

목록의 점과 별표를 읽는 법

세션 목록은 상태프로세스를 따로 보여줍니다. 둘을 섞어 읽으면 헷갈립니다.

표시
움직이는 별표 프로세스가 살아 있고 바로 답함
작은 점 하나 프로세스가 끝났음. 그래도 엿보고 답할 수 있고 멈춘 지점부터 재시작
속 빈 별표 반복 실행 세션이 다음 차례까지 자는 중. 실행 횟수와 남은 시간이 함께 뜸
노란색 상태 나만 줄 수 있는 것을 기다리는 중. 질문·권한 결정·다음 지시

두 번째 줄이 좋았습니다. 프로세스가 죽어도 대화가 끝난 게 아닙니다 — 답장을 넣으면 다시 살려서 이어갑니다. 상태는 이 밖에 완료(초록)·실패(빨강)·중지(회색)가 더 있고, PR이 걸린 줄은 검사·병합 상태에 따라 색이 넷으로 갈립니다.

🚧 무인 세션이 조용히 갇히는 자리

노란 상태에 관해 문서가 덧붙인 대목이 실전에서 걸릴 만합니다 — 터미널이 붙어 있어야 하는 명령을 무인 세션이 만나면 거기서 멈춥니다. 예로 든 게 깃허브 앱 설치 명령과 MCP 설정 목록입니다. 샌드박스가 네트워크 주소를 허용할지 묻는 순간이나, MCP 서버가 추가 입력을 요청하는 순간도 같은 자리고요. 자리를 비운 사이 아무 진전이 없다면 망가진 게 아니라 노란불에서 기다리는 중일 수 있습니다. 목록을 열어 노란 줄부터 보시는 게 빠릅니다.

🧾 정직하게 — 이 글의 한계

  • 세션을 여러 개 띄워 실제로 굴려보고 쓴 글이 아닙니다. 공식 문서를 정리한 것이라, 몇 개까지 쾌적한지·메모리가 얼마나 드는지는 제가 잰 범위에 없습니다.
  • "안 묻고 커밋"의 판단 기준은 문서에 없습니다. 어떤 작업일 때 초안 PR까지 여는지는 "작업 성격에 맞으면"이라고만 적혀 있어, 제가 예측할 수 없습니다.
  • 아이콘 이름은 제가 우리말로 풀었습니다. 실제 화면은 기호로 나오니 원문과 대조하시는 게 정확합니다.
  • 설정과 버전에 따라 다릅니다. 특히 격리 동작은 저장소 상태를 타므로, 중요한 작업 전에 작은 것으로 한 번 확인해 보시길 권합니다.

🗺️ AI 지출 전체 지도

뒤에서 도는 세션은 내가 안 보는 동안에도 토큰을 씁니다. 여러 개를 동시에 굴리면 그만큼 병렬로 나가고요. 구독과 종량제 선택부터 캐시, 모델 조합, 상한 걸기까지 지금까지 확인한 것들을 일곱 단계 지도 한 장으로 묶어뒀습니다.

자주 묻는 것

Q. 커밋을 못 하게 막으려면요?

메모리 파일이나 작업 지시에 적으면 됩니다. 문서가 명시하는데, "커밋과 푸시는 내가 직접 한다"는 취지가 적혀 있으면 Claude는 git을 나에게 맡깁니다. 별도 설정 스위치가 아니라 평범한 문장으로 통제한다는 게 특징입니다. 다만 이건 지시이지 강제가 아니라는 점은 기억해 두는 게 좋겠습니다 — 확실한 차단이 필요하면 훅이나 권한 규칙 쪽이 맞습니다.

Q. 세션을 지우면 작업방은 어떻게 되나요?

경로에 따라 다릅니다. 목록 화면에서 지우면 커밋 안 한 변경까지 함께 지웁니다. 반면 명령줄로 지우면 커밋 안 한 변경이 있을 때 작업방과 줄을 남깁니다. 그리고 어느 쪽이든 푸시 안 한 커밋이 있거나 다른 세션이 잠근 작업방은 안 지웁니다 — 이때는 지워지지 않았다는 표시와 이유를 줄에 보여줍니다. 푸시하거나 다른 세션을 닫고 다시 지우면 됩니다.

Q. 하위 에이전트도 각자 작업방을 갖나요?

기본은 아닙니다. 하위 에이전트는 부모 세션의 작업 폴더를 물려받아서, 수정이 그 세션의 작업방에 들어갑니다. 내 작업 사본이 아니라는 점은 다행이지만 형제끼리는 같은 방인 셈이죠. 각자 따로 주려면 에이전트 정의 머리말에 격리 항목을 넣거나 띄울 때 지정하면 됩니다. 여럿이 같은 파일을 고칠 작업이라면 이 설정을 켜두는 편이 안전합니다.

💻 이 방식은 "내 컴퓨터에서 도는" 쪽입니다 (8월 17일 추가)

이 글은 안 보는 동안 어디까지 하는가를 다뤘습니다. 그 위에 지도가 하나 있더군요 — 공식 문서가 자리를 비웠을 때 일을 시키는 방법 여섯 가지를 "Claude가 어디서 도는가"로 갈라놨습니다. 세어 보니 보내기·원격 제어·채널 셋은 내 기계, 슬랙은 앤트로픽 클라우드, 자체 호스팅은 조직 인프라, 예약 작업만 고를 수 있습니다. 이 글에서 다룬 방식은 앞쪽, 그러니까 내 컴퓨터에서 도는 계열입니다. 그래서 조건이 하나 더 붙습니다 — 노트북을 덮거나 절전으로 들어가면 같이 멈춥니다. 대신 얻는 것도 분명합니다 — 코드가 밖으로 안 나가고 준비가 가볍습니다(명령 한 줄이나 앱 짝짓기). 컴퓨터를 못 켜두는 상황이라면 클라우드 쪽으로 가야 하는데 거기는 설치와 권한 설정이 앞에 붙습니다. 여섯 가지의 실행 위치 표는 실행 위치를 비교한 글에 있습니다.

✨ 오늘 확인한 것 정리

뒤에서 도는 세션은 일을 끝내기 전에 스스로 커밋하고 푸시합니다 — 자기 작업방이 지워져도 결과가 살아남게요. 대신 main 계열 푸시·강제 푸시·병합은 절대 안 합니다. 이 동작이 싫으면 메모리 파일에 한 문장이면 됩니다. 그리고 git 저장소 밖에서는 세션끼리 격리되지 않으니, 같은 파일을 고칠 병렬 작업은 저장소 안에서 돌리세요.

※ 확인 경로(2026년 8월 17일 기준): code.claude.com/docs/en/agent-view. 아이콘 이름과 우리말 표현은 제가 옮긴 것입니다.

※ 격리와 삭제 동작은 저장소 상태·설정·버전에 따라 달라집니다. 중요한 작업 전에는 작은 것으로 먼저 확인하세요.

반응형
Comments